2018.11.07 bzoj2751: [HAOI2012]容易题(easy)(组合数学)
传送门
组合数学一眼题。
感觉一直做这种题智商会降低。
利用组合数学的分步计数原理。
只用关心每个数不被限制的取值的总和然后乘起来就可以了。
对于大部分数都不会被限制,总和都是n(n+1)2\frac{n(n+1)}{2}2n(n+1).
这部分数的贡献直接用快速幂算。
剩下最多只有1e51e51e5个数。
直接暴力算出每个数不被限制的取值的总和。
代码:
#include<bits/stdc++.h>
#include<tr1/unordered_map>
using namespace std;
typedef long long ll;
const int mod=1e9+7,N=1e5+5;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
int n,m,k,tot=0,siz=0;
struct Node{
int pos,val;
friend inline bool operator<(const Node&a,const Node&b){return a.pos==b.pos?a.val<b.val:a.pos<b.pos;}
friend inline bool operator==(const Node&a,const Node&b){return a.pos==b.pos&&a.val==b.val;}
}p[N];
inline int ksm(int x,int p){int ret=1;for(;p;p>>=1,x=(ll)x*x%mod)if(p&1)ret=(ll)ret*x%mod;return ret;}
int main(){
n=read(),m=read(),k=read();
for(int i=1;i<=k;++i)p[i].pos=read(),p[i].val=read();
sort(p+1,p+k+1),k=unique(p+1,p+k+1)-p-1;
for(int i=1;i<=k;++i){
if(p[i].pos^p[siz].pos)p[++siz]=p[i];
else (p[siz].val+=p[i].val)%=mod;
}
int tmp=(ll)n*(n+1)/2%mod,ans=ksm(tmp,m-siz);
for(int i=1;i<=siz;++i)ans=(ll)(tmp-p[i].val+mod)%mod*ans%mod;
cout<<ans;
return 0;
}
2018.11.07 bzoj2751: [HAOI2012]容易题(easy)(组合数学)的更多相关文章
- BZOJ2751: [HAOI2012]容易题(easy)
2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 872 Solved: 377[Submit][S ...
- 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂
[bzoj2751][HAOI2012]容易题(easy) 先考虑k=0的情况 那么第一个元素可能为[1,n] 如果序列长度为m-1时的答案是ans[m-1] 那么合并得 然后同理答案就是 k很小 而 ...
- BZOJ 2751: [HAOI2012]容易题(easy) 数学
2751: [HAOI2012]容易题(easy) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2751 Description 为了使 ...
- BZOJ 2751: [HAOI2012]容易题(easy)( )
有限制的最多就K个, 所以我们处理一下这K个就行了. 其他可以任选, 贡献都是∑i (1≤i≤N), 用快速幂. ------------------------------------------- ...
- 2751: [HAOI2012]容易题(easy)
2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1087 Solved: 477[Submit][ ...
- 【bzoj2751】[HAOI2012]容易题(easy) 数论,简单题
Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪 ...
- BZOJ2751 [HAOI2012]容易题
Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...
- 2018.11.07 NOIP训练 L的鞋子(权值分块+莫队)
传送门 乱搞题. 我直接对权值分块+莫队水过了. 不过调了30min30min30min发现ststst表挂了是真的不想说什么233. 代码
- 2018.11.07 NOIP模拟 数独(模拟)
传送门 sbsbsb签到题. 读题时间比写题时间长系列. 写一个checkcheckcheck函数来检验当前时间段第(i,j)(i,j)(i,j)号格子能否放入kkk就行了. 代码
随机推荐
- 17. Letter Combinations of a Phone Number (backtracking)
Given a digit string, return all possible letter combinations that the number could represent. A map ...
- PCB规则设置
规则设置
- Javascript 强制浏览器渲染Dom文档
在Cordova+Framework7开发Hybrid App时,在iPhone 7上遇到一个诡异的现象(Chrome浏览器.Android都正常):js修改手风琴中的input文本框的值后,但页面仍 ...
- [剑指Offer]40-最小的k个数
题目链接 https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=13&tqId=11182&t ...
- django的csrf
csrf:跨站请求网站 如果是ajax提交,可以按照下面的方式处理 <script src="/static/jq/jquery-3.3.1.js"></scri ...
- select-options and range
1.SELECT...WHERE ... IN ...,它后面跟着的是一个RANGE类型的内表,这种内表是通过RANGES或者SELECT-OPTIONS来定义的. 2.内表中包含四个字段:SIGN, ...
- 利用dom4j读写XML
public static HashMap<String, String> ReadConfig() { HashMap<String, String> map=new Has ...
- JQuery UI之Autocomplete(2)后端获取数据
1.Autocomplete获取后台数据 首先引入css和js文件,以及对应的HTML代码如下: <link href="../css/jquery-ui.css" rel= ...
- centos7下docker1.12.5学习笔记
一.Docker简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相 ...
- linux小笔记
1. 安装go并设置环境变量 Add /usr/local/go/bin to the PATH environment variable. You can do this by adding thi ...