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)相关推荐

  1. bzoj2751 [HAOI2012]容易题(easy)

    Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...

  2. 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂

    [bzoj2751][HAOI2012]容易题(easy) 先考虑k=0的情况 那么第一个元素可能为[1,n] 如果序列长度为m-1时的答案是ans[m-1] 那么合并得 然后同理答案就是 k很小 而 ...

  3. bzoj 2751: [HAOI2012]容易题(easy)

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2561  Solved: 1076 [Submi ...

  4. 【bzoj2751】[HAOI2012]容易题(easy) 数论,简单题

    Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...

  5. 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) 所以就 ...

  6. 2751: [HAOI2012]容易题(easy)

    题目链接 题目大意:一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,求出所有可能的数列的积的和 题解:用小数据手玩 ...

  7. 小M的简单题(easy)

    小M的简单题(easy) 时间限制:3s 内存限制:128MB [题目描述] 小M是某知名高中的学生,有一天,他请他的n个同学吃苹果,同学们排成一行,且手中已经有一些苹果.为了表示他的大方,有时他会给 ...

  8. 洛谷2220 [HAOI2012]容易题

    标签:快速幂 题目 题目传送门 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于 ...

  9. 洛谷 2220 [HAOI2012]容易题 题解(组合数学,离散化)

    原链接: 洛谷:点我QωQ bzoj:点我QωQ 题意简述 一个长度为mmm的数列aaa,每个数都在[1,n][1,n][1,n]之间,有kkk个限制.第iii个限制包含两个正整数x,yx,yx,y, ...

最新文章

  1. 【深度学习】基于Pytorch的线性模型概念辨析和实现(一)
  2. python爬虫如何从一个页面进入另一个页面-爬虫入门(一)——如何打开一个网页...
  3. JavaScript库开发者们的规则
  4. 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授
  5. Matplotlib实例教程(十一)堆栈图
  6. 推特惊爆史诗级漏洞,App 恶意窃取用户隐私,云端安全路向何方?
  7. 【JOURNAL】康生篆书联
  8. 线性结构 —— 前缀和
  9. PHP lareal_怎么样能在mysql里结合php的函数
  10. Python 打败 JavaScript 只需要 5 年?
  11. Javascript特效:瀑布流
  12. 《深度学习Python实践》第17章——算法调参
  13. 各省简称 拼音 缩写_全国所有城市拼音及缩写
  14. 软考信息安全工程师历年真题及答案
  15. python Django项目汇总(毕设、课设、学习)
  16. [IT最前沿--有点意思] 微博营销案例:杜蕾斯鞋套雨夜传奇
  17. 8个免费在线字体转换器
  18. Just for a stripe of blue sky!
  19. spark outer join push down filter rule(spark 外连接中的下推规则)
  20. Changes to be committed: (use “git restore --staged <file>...“ to unstage)

热门文章

  1. poj 1201 差分约束
  2. IISExpress Log 文件路径
  3. poj1969---找规律
  4. 关于nginx调转404错误页面
  5. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、图像(硬件IIC)
  6. linux编译准备,Linux 下编译指南
  7. 收集程序员语录70则
  8. 【收集】前端技能知识图谱
  9. 2017已过半,这半年,你累吗?
  10. 杭州高职单招计算机试题,河北省高职单招职业技能练习题20