bzoj2751[HAOI2012]容易题(easy)
bzoj2751[HAOI2012]容易题(easy)
题意:
已知一个数列A对于所有的A[i]都是1~n的自然数,一些A[i]不能取一些值,求出所有可能的数列的积的和 mod 1000000007的值。
题解:
题目中的n≤109实际上是109……首先推个方程s[l,r]=s[l,k]*s[k+1,r](s[l,r]表示l到r的所有l≤i≤r的a[i]的可能取值的和)因此s[1,n]等于所有a[i]的可能取值的和的乘积。因此我们先求出1到n的和,对每个约束条件按i排序,将这个和减掉约束条件中的不能取的数,就是这个a[i]所有可能取值的和。将这些a[i]乘起来,剩下的没限制的a[i]用快速幂解决。
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define ll long long 5 #define inc(i,j,k) for(int i=j;i<=k;i++) 6 #define mod 1000000007 7 using namespace std; 8 9 struct nd{ 10 ll a,b; 11 bool operator < (const nd &c)const{ 12 if(a!=c.a)return a<c.a;else return b<c.b; 13 } 14 }; 15 ll power(ll a,ll b){ 16 if(b==0)return 1; if(b==1)return a; ll c=power(a,b>>1)%mod; 17 if(b&1)return c*c%mod*a%mod;else return c*c%mod; 18 } 19 nd ns[200000]; 20 int main(){ 21 ll n,m,a1=0,a2,a3,a4; ll k; scanf("%lld%lld%lld",&n,&m,&k); 22 inc(i,1,k)scanf("%lld%lld",&ns[i].a,&ns[i].b); sort(ns+1,ns+k+1); 23 inc(i,1,k)if(i==1||ns[i].a!=ns[i-1].a)a1++; a2=n*(n+1)/2%mod; a3=a4=1; 24 inc(i,1,k)if(i==1||ns[i].a!=ns[i-1].a)a4=a4*a3%mod,a3=a2,a3=(a3-ns[i].b)>=0?(a3-ns[i].b)%mod:(a3-ns[i].b)+mod; 25 else if(ns[i].b!=ns[i-1].b)a3=(a3-ns[i].b)>=0?(a3-ns[i].b)%mod:(a3-ns[i].b)+mod; 26 a4=a4*a3%mod; a4=a4*power(a2,m-a1)%mod; printf("%lld",a4); 27 }
20160419
转载于:https://www.cnblogs.com/YuanZiming/p/5703229.html
bzoj2751[HAOI2012]容易题(easy)相关推荐
- bzoj2751 [HAOI2012]容易题(easy)
Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...
- 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂
[bzoj2751][HAOI2012]容易题(easy) 先考虑k=0的情况 那么第一个元素可能为[1,n] 如果序列长度为m-1时的答案是ans[m-1] 那么合并得 然后同理答案就是 k很小 而 ...
- bzoj 2751: [HAOI2012]容易题(easy)
2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2561 Solved: 1076 [Submi ...
- 【bzoj2751】[HAOI2012]容易题(easy) 数论,简单题
Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...
- bzoj2751 [HAOI2012]容易题 数学
基本的数学原理,但似乎并没有这方面的直觉 这种计算方式是每一项乘每一项+起来 相当于 a*d+a*e+a*f+b*d+b*e+b*f+c*d+c*e+c*f =(a+b+c)*(d+e+f) 所以就 ...
- 2751: [HAOI2012]容易题(easy)
题目链接 题目大意:一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,求出所有可能的数列的积的和 题解:用小数据手玩 ...
- 小M的简单题(easy)
小M的简单题(easy) 时间限制:3s 内存限制:128MB [题目描述] 小M是某知名高中的学生,有一天,他请他的n个同学吃苹果,同学们排成一行,且手中已经有一些苹果.为了表示他的大方,有时他会给 ...
- 洛谷2220 [HAOI2012]容易题
标签:快速幂 题目 题目传送门 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于 ...
- 洛谷 2220 [HAOI2012]容易题 题解(组合数学,离散化)
原链接: 洛谷:点我QωQ bzoj:点我QωQ 题意简述 一个长度为mmm的数列aaa,每个数都在[1,n][1,n][1,n]之间,有kkk个限制.第iii个限制包含两个正整数x,yx,yx,y, ...
最新文章
- 【深度学习】基于Pytorch的线性模型概念辨析和实现(一)
- python爬虫如何从一个页面进入另一个页面-爬虫入门(一)——如何打开一个网页...
- JavaScript库开发者们的规则
- 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授
- Matplotlib实例教程(十一)堆栈图
- 推特惊爆史诗级漏洞,App 恶意窃取用户隐私,云端安全路向何方?
- 【JOURNAL】康生篆书联
- 线性结构 —— 前缀和
- PHP lareal_怎么样能在mysql里结合php的函数
- Python 打败 JavaScript 只需要 5 年?
- Javascript特效:瀑布流
- 《深度学习Python实践》第17章——算法调参
- 各省简称 拼音 缩写_全国所有城市拼音及缩写
- 软考信息安全工程师历年真题及答案
- python Django项目汇总(毕设、课设、学习)
- [IT最前沿--有点意思] 微博营销案例:杜蕾斯鞋套雨夜传奇
- 8个免费在线字体转换器
- Just for a stripe of blue sky!
- spark outer join push down filter rule(spark 外连接中的下推规则)
- Changes to be committed: (use “git restore --staged <file>...“ to unstage)