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就行了. 代码
随机推荐
- 测试用户体验相关——UI设计准则及方法
之前跟我们uxc同学聊过一些,记录下来,方便在工作中不断渗透深入和理解,能够逐渐养成比较好的审美和对UI交互问题的敏锐的觉察力. 以问题为导向来吧... 第一个问题:一个menu中的图标一定要风格一致 ...
- Djang的model创建的字段和参数复习
class test_orm(models.Model): id = models.AutoField(primary_key=True) # int自增列,必须填入参数primary_key=Tru ...
- iOS 组件化流程详解(git创建流程)
[链接]组件化流程详解(一)https://www.jianshu.com/p/2deca619ff7e
- Win10以管理员身份启动cmd.exe
PowerShell -windowstyle hidden -Command "Start-Process cmd.exe -ArgumentList '/s,/k, pushd' -Ve ...
- 关于控制反转(IOC)容器 ,依赖注入(DI)模式必读文章收集
推荐一篇国外設計大師Martin Fowler的大作:Inversion of Control Containers and the Dependency Injection pattern http ...
- JavaScript 字符串用于存储和处理文本
JavaScript 字符串用于存储和处理文本 var string_value='dasfsdfsd'; 注意:字符串利用索引精确定位取值 var character=string_value[7] ...
- python loggin
一 日志级别 CRITICAL = 50 #FATAL = CRITICAL ERROR = 40 WARNING = 30 #WARN = WARNING INFO = 20 DEBUG = 10 ...
- 深入理解HTTP协议及原理分析
1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和 ...
- C# CashCode项目开发
如果不是因为这个项目,我可以一辈子都接触不到识币器,更不会知道CashCode是干啥的. 从项目开始,到CashCode机器到桌面上测试,中间在网上找过资料,也联系过北京的技术,他们发来的PDF让我看 ...
- N! (数组)
#include <iostream> using namespace std; ; int f[MAXN]; int main(){ int n; cin >> n; f[] ...