yts1999 T2 容斥原理
题意:给定 l1,r1,l2,r2,l3,r3,l4,r4l1, r1, l2, r2, l3, r3, l4, r4l1,r1,l2,r2,l3,r3,l4,r4,试求满足 li≤xi≤ril_i ≤ x_i ≤ r_ili≤xi≤ri 且 x1≠x2,x2≠x3,x3≠x4,x4≠x1x1 \ne x2, x2 \ne x3, x3 \ne x4, x4 \ne x1x1̸=x2,x2̸=x3,x3̸=x4,x4̸=x1
的四元组 (x1,x2,x3,x4)(x1, x2, x3, x4)(x1,x2,x3,x4) 的数量对 109+710^9 + 7109+7 取模的结果。
很容易看出是容斥原理,可是该怎么容斥呢?考场上没想出来,我还是太弱了。
定义sumi=ri−li+1sum_i=r_i-l_i+1sumi=ri−li+1,即为每个区间的长度。首先,对于没有限制的情况,根据乘法原理,显然有ans=∏i=14sumians=\prod_{i=1}^4sum_ians=∏i=14sumi种四元组。
容斥原理奇加偶减,即若为奇数个数相同的就让ansansans加,否则减。
比如像112311231123这样有两个相同的情况,因为是偶数个数相同,所以要让ans减,我们找第一个区间和第二个区间的交集,ansansans就应该减去这个交集的长度∗sum3和sum4*sum_3和sum_4∗sum3和sum4。同样对于第二第三个区间的交,第三第四个区间的交,第四第一个区间的交也做同样的操作,对于其他的也如此。
我们发现有特殊情况,像1122,12211122,12211122,1221这样两种情况,在之前的一步被减去了两次,对于类似112211221122的这种情况,我们要让ansansans加上第一第二个区间交的长度∗*∗第三第四个区间交的长度。特殊情况特殊考虑,所以即使相同的数为偶数,也是要让ansansans加。对于类似122112211221的这种情况也类似。
对于111111111111这样的情况,我们发现它在特殊情况中被加了2次,所以应该减去三倍的区间交的长度。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
ll l[5],r[5];
ll T,sum[5];
int main()
{cin>>T;while(T--){for(int i=1;i<=4;++i)scanf("%lld%lld",&l[i],&r[i]);for(int i=1;i<=4;++i)sum[i]=r[i]-l[i]+1;ll ans=(sum[1]%mod*sum[2]%mod*sum[3]%mod*sum[4]%mod)%mod;ll L=max(l[1],l[2]);//例如1123 ll R=min(r[1],r[2]);if(R-L>=0)ans=(ans%mod-(R-L+1)*sum[3]%mod*sum[4]%mod+mod)%mod;L=max(l[2],l[3]);R=min(r[2],r[3]);if(R-L>=0)ans=(ans%mod-(R-L+1)*sum[1]%mod*sum[4]%mod+mod)%mod;L=max(l[3],l[4]);R=min(r[3],r[4]);if(R-L>=0)ans=(ans%mod-(R-L+1)*sum[1]%mod*sum[2]%mod+mod)%mod;L=max(l[4],l[1]);R=min(r[4],r[1]);if(R-L>=0)ans=(ans%mod-(R-L+1)*sum[2]%mod*sum[3]%mod+mod)%mod;ll L1=max(l[1],l[2]);//例如1122 ll R1=min(r[1],r[2]);ll L2=max(l[3],l[4]);ll R2=min(r[3],r[4]);if((R1-L1>=0)&&(R2-L2>=0))ans=(ans%mod+(R1-L1+1)%mod*(R2-L2+1)%mod+mod)%mod;L1=max(l[2],l[3]);R1=min(r[2],r[3]);L2=max(l[1],l[4]);R2=min(r[1],r[4]);if((R1-L1>=0)&&(R2-L2>=0))ans=(ans%mod+(R1-L1+1)%mod*(R2-L2+1)%mod+mod)%mod; L=max(max(l[1],l[2]),l[3]);//例如1112 R=min(min(r[1],r[2]),r[3]);if(R-L>=0)ans=(ans%mod+(R-L+1)*sum[4]%mod+mod)%mod;L=max(max(l[2],l[3]),l[4]);R=min(min(r[2],r[3]),r[4]);if(R-L>=0)ans=(ans%mod+(R-L+1)*sum[1]%mod+mod)%mod;L=max(max(l[3],l[4]),l[1]);R=min(min(r[3],r[4]),r[1]);if(R-L>=0)ans=(ans%mod+(R-L+1)*sum[2]%mod+mod)%mod;L=max(max(l[4],l[1]),l[2]);R=min(min(r[4],r[1]),r[2]);if(R-L>=0)ans=(ans%mod+(R-L+1)*sum[3]%mod+mod)%mod;L=max(max(l[1],l[2]),max(l[3],l[4]));//例如1111 R=min(min(r[1],r[2]),min(r[3],r[4]));if(R-L>=0)ans=(ans%mod-3*(R-L+1)%mod+mod)%mod;printf("%lld\n",(ans+mod)%mod);}return 0;
}
yts1999 T2 容斥原理相关推荐
- 高等组合学笔记(十五):容斥原理,错排问题
容斥原理 可以证明带有交错项的恒等式. 设SSS为一个有限集, Pi(1≤i≤m)P_i(1\le i\le m)Pi(1≤i≤m)为mmm个性质, Ai={x∣x∈S,x具有性质Pi}A_i=\{ ...
- 拼多多2021校招2020.9.1笔试题 T2 and T4
T1简单没套路,T3 a不完..所以只有T2和T4 import java.util.HashSet; import java.util.LinkedList; import java.util.Qu ...
- HDU 4135 Co-prime(容斥原理)
Co-prime 第一发容斥,感觉挺有意思的 →_→ [题目链接]Co-prime [题目类型]容斥 &题意: 求(a,b)区间内,与n互质的数的个数. \(a,b\leq 10^{15}\) ...
- NOIP2013普及组 T2 表达式求值
OJ地址:洛谷P1981 CODEVS 3292 正常写法是用栈 1 #include<iostream> 2 #include<algorithm> 3 #include&l ...
- BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 3028 Solved: 1460 [Submit][S ...
- bzoj 4710 [Jsoi2011]分特产 组合数学+容斥原理
题面 题目传送门 解法 考虑容斥原理 显然,我们可以枚举有多少个人没有收到 然后就转化成一个组合问题了 假设现在有\(x\)个物品,\(n\)个人,可以有人没有被分到,那么分给这\(n\)个人的方案数 ...
- 【bzoj1853】[Scoi2010]幸运数字 容斥原理+搜索
题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是&quo ...
- hdu 4366 Card Collector (容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:有 n 张卡片 ,每张卡片出现的 概率 是 pi 每包至多有 一张卡片 ,也有可能没有 卡片 . 求 ...
- LightOJ 1095 Arrange the Numbers(容斥原理)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1095 题意:给出数字n,m,K(0<K<=m<=n).在n个 ...
最新文章
- 大数据分析常用去重算法分析『HyperLogLog 篇』
- 青龙羊毛——梅川衣服俩小孩(搬)
- Visual Studio查找搜索类和方法的快捷方法
- TensorFlow Serving + Docker + Tornado机器学习模型生产级快速部署
- 《智能家居》培训第五天------2019-01-09
- python、中循环功能可通过什么命令实现_python定时执行指定函数的方法 Python如何定时循环执行命令?...
- lintcode 中等题:Single number III 落单的数III
- C语言强化——学生管理系统
- 计算机科学与技术 net,计算机科学与技术
- 为什么薄膜干涉的厚度要很小_薄膜干涉的膜为什么不能太厚?
- 服务器电源维修哪里便宜,服务器电源维修
- Graham-Scan小总结——toj2317 Wall
- python 求解给定字符串中的最长DNA序列长度
- CKS学习笔记-Sysdig
- 微信朋友圈服务器缓存,怎么删微信朋友圈缓存?
- MT7628KN/MT7628AN处理器区别解析,参数对比
- xcopy 跳过已经存在的_南京的野猪已经会逛奶茶店了?!
- android监听系统来电并弹出提示窗口,Android 监听来去电 弹出悬浮窗提示
- SECS/GEM/GEM300/EAP 讲解(三)半导体协议
- PHP修改图片上的文字,ps图片中怎么更改文字
热门文章
- Android 8.0 华为手机 桌面应用图标显示圆形适配方案
- cocos2d-LUA逆向之用idaPro调试so库获取xxtea解密key
- 跟李宁老师做项目:小程序版网上商城(Node.js + Express + MySQL)-李宁-专题视频课程...
- Java for语句详解
- 05_02_拉钩教育课程管理系统项目前后端接口联调
- Go实现随机、轮训、权重、哈希负载均衡
- 高仿蓝奏云盘下载页面源码
- Oracle表空间及表分区
- 当网站不允许上传asp cer cdx htr文件时的一个解决方法!
- 程序员兼职可以从什么平台接私活?