ZR#330. 【18 提高 3】矿石(容斥)
题意

Sol
挺显然的,首先对每个矿排序
那么答案就是$2^x - 2^y$
$x$表示能覆盖到它的区间,$y$表示的是能覆盖到它且覆盖到上一个的区间
第一个可以差分维护
第二个直接vector暴力插入扫就行,
时间复杂度:$O(nlogn)$
#include<cstdio>
#include<algorithm>
#include<bitset>
#include<vector>
#define Pair pair<int, ull>
#define MP(x, y) make_pair(x, y)
#define fi first
#define se second
#define ull unsigned long long
#define LL long long
#define int long long
using namespace std;
const int MAXN = * 1e6 + , INF = 1e9 + , mod = ;
inline int read() {
char c = getchar(); int x = , f = ;
while(c < '' || c > '') {if(c == '-') f = -; c = getchar();}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int N, M;
int l[MAXN], r[MAXN], a[MAXN], date[MAXN], cnt = , sum[MAXN], num[MAXN];
vector<int> v[MAXN];
int fp(int a, int p) {
int base = ;
while(p) {
if(p & ) base = (base * a) % mod;
a = (a * a) % mod; p >>= ;
}
return base % mod;
}
main() {
N = read(); M = read();
for(int i = ; i <= N; i++) l[i] = read(), r[i] = read(), date[++cnt] = l[i], date[++cnt] = r[i];
for(int i = ; i <= M; i++) a[i] = read(), date[++cnt] = a[i];
sort(a + , a + M + );
sort(date + , date + cnt + );
cnt = unique(date + , date + cnt + ) - date - ;
for(int i = ; i <= N; i++) {
l[i] = lower_bound(date + , date + cnt + , l[i]) - date;
r[i] = lower_bound(date + , date + cnt + , r[i]) - date;
sum[l[i]]++; sum[r[i] + ]--;
v[l[i]].push_back(r[i]);
}
for(int i = ; i <= M; i++) a[i] = lower_bound(date + , date + cnt + , a[i]) - date;
for(int i = ; i <= cnt; i++)
sum[i] += sum[i - ]; // for(int i = 1; i <= cnt; i++)
// printf("%d ", num[i]); puts("");
int ans = ;
for(int i = ; i <= M; i++) {
int base = ;
for(int j = a[i - ] + ; j <= a[i]; j++) {
for(int k = ; k < v[j].size(); k++) {
if(v[j][k] >= a[i]) base++;
}
}
ans = (ans + fp(, sum[a[i]]) - fp(, sum[a[i]] - base) + mod) % mod;
}
printf("%lld\n", (ans + mod) % mod);
return ;
}
/*
3 2
7 11
1 5
3 8
4
7
*/
ZR#330. 【18 提高 3】矿石(容斥)的更多相关文章
- Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理
B. Pasha and Phone Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/595/pr ...
- Codeforces Round #330 (Div. 2)B. Pasha and Phone 容斥
B. Pasha and Phone Pasha has recently bought a new phone jPager and started adding his friends' ph ...
- XTU 1242 Yada Number 容斥
Yada Number Problem Description: Every positive integer can be expressed by multiplication of prime ...
- 2019.03.29 NOIP训练 友好国度(点分治+容斥)
传送门 思路: 直接上点分治+容斥计算每个因数对应的贡献即可. 代码: #include<bits/stdc++.h> #define ri register int using name ...
- 【XSY2753】Lcm 分治 FWT FFT 容斥
题目描述 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的\(lcm\)为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\leq ...
- 【洛谷U20626】gemo 容斥 FWT 高斯消元
题目大意 给你一个无向图,有\(m\)个询问,每次给你一个点\(x\)和一个点集\(S\),问你从\(x\)开始走,每次从一个点随机的走到与这个点相邻的点,问你访问\(S\)中每个点至少一次的期望步数 ...
- 【XSY1580】Y队列 容斥
题目大意 给你\(n,r\),求第\(n\)个不能被表示为\(a^b(2\leq b\leq r)\)的数 \(n\leq 2\times {10}^{18},r\leq 62\) 题解 我们考虑二分 ...
- 【BZOJ5287】[HNOI2018]毒瘤(动态规划,容斥)
[BZOJ5287][HNOI2018]毒瘤(动态规划,容斥) 题面 BZOJ 洛谷 题解 考场上想到的暴力做法是容斥: 因为\(m-n\le 10\),所以最多会多出来\(11\)条非树边. 如果就 ...
- 【LOJ#2542】[PKUWC2018]随机游走(min-max容斥,动态规划)
[LOJ#2542][PKUWC2018]随机游走(min-max容斥,动态规划) 题面 LOJ 题解 很明显,要求的东西可以很容易的进行\(min-max\)容斥,那么转为求集合的\(min\). ...
随机推荐
- Digging-贪心
When it comes to the Maya Civilization, we can quickly remind of a term called the end of the world. ...
- check_MK安装部署(nagios4版本)
概述: 操作系统版本:CentOS release 6.3 (Final) 64位 nagios版本:Nagios Core 4.0.6 pnp4nagios版本:pnp4nagios-0.6.22 ...
- 构造函数参数new class[0]的作用
new Class[0];就是传一个长度为1的Class数组过去.内容为null. new Class[0]表示有零个元素的Class数组,即空数组,与传入null结果是一样的,都表示取得无参构造方法 ...
- CodeForces 484B Maximum Value (数学,其实我也不知道咋分类)
B. Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 微信小程序开发之下拉菜单
实现功能:点击维保人员,调出下拉菜单.选择子菜单时,显示右边的图标表示选中,并进行赋值并进行搜索筛选 Wxml: <view class="dtclass" bindtap= ...
- UVa 10534 Wavio Sequence (LIS+暴力)
题意:给定一个序列,求一个最长子序列,使得序列长度为奇数,并且前一半严格递增,后一半严格递减. 析:先正向和逆向分别求一次LIS,然后再枚举中间的那个数,找得最长的那个序列. 代码如下: #pragm ...
- 第6章 图的学习总结(邻接矩阵&邻接表)
我觉得图这一章的学习内容更有难度,其实图可以说是树结构更为普通的表现形式,它的每个元素都可以与多个元素之间相关联,所以结构比树更复杂,然而越复杂的数据结构在现实中用途就越大了,功能与用途密切联系,所以 ...
- JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String
在使用Postman测试Spring Boot项目接口时,接口返回JSON parse error: Cannot deserialize value of type `java.time.Local ...
- IT兄弟连 Java语法教程 编写Java源代码
现在我们来一步一步的编写第一个Java程序,鼎鼎大名的“HelloWorld”. 编写Java源代码 编写Java源代码可以使用任何无格式的文本编辑器,在Windows操作系统上可以使用记事本.Edi ...
- 洛谷P2169 正则表达式
题目背景 小\(Z\)童鞋一日意外的看到小\(X\)写了一个正则表达式的高级程序,这个正则表达式程序仅仅由字符"\(0\)","\(1\)","\(. ...