传送门

组合数学一眼题。

感觉一直做这种题智商会降低。


利用组合数学的分步计数原理。

只用关心每个数不被限制的取值的总和然后乘起来就可以了。

对于大部分数都不会被限制,总和都是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)(组合数学)的更多相关文章

  1. BZOJ2751: [HAOI2012]容易题(easy)

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 872  Solved: 377[Submit][S ...

  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) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2751 Description 为了使 ...

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

    有限制的最多就K个, 所以我们处理一下这K个就行了. 其他可以任选, 贡献都是∑i (1≤i≤N), 用快速幂. ------------------------------------------- ...

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

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1087  Solved: 477[Submit][ ...

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

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

  7. BZOJ2751 [HAOI2012]容易题

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

  8. 2018.11.07 NOIP训练 L的鞋子(权值分块+莫队)

    传送门 乱搞题. 我直接对权值分块+莫队水过了. 不过调了30min30min30min发现ststst表挂了是真的不想说什么233. 代码

  9. 2018.11.07 NOIP模拟 数独(模拟)

    传送门 sbsbsb签到题. 读题时间比写题时间长系列. 写一个checkcheckcheck函数来检验当前时间段第(i,j)(i,j)(i,j)号格子能否放入kkk就行了. 代码

随机推荐

  1. git 基本操作命令

    1. git status 查看git 状态 2.git init 3.git push -u origin master 提交 4.git remote set "邮箱地址i" ...

  2. e-olymp Problem8352 Taxi

    作为我在这个OJ玩了一下午的终结吧. 水题一道,阅读理解OJ. 传送门:点我 Taxi At the peak hour, three taxi buses drove up at the same ...

  3. java虚拟机的原理

    所谓虚拟机,就是一台虚拟的机器.它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机,Visual Box .Vmare就属于系统虚拟机.他们完全是对物理计算机的仿真 ...

  4. 命令行操作mysql数据库

    1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u dbuser -p dbname > dbname.sql 2.导出一个表m ...

  5. Wannafly挑战赛13 D.applese的生日(贪心+思维)

    题目描述 最可爱的applese生日啦,他准备了许多个质量不同的蛋糕,想请一些同学来参加他的派对为他庆生,为了不让一部分同学感到不爽,他决定把每个蛋糕都分割成几份(也可以不分割),使得最小的蛋糕的质量 ...

  6. udevadm命令详解

    udevadm 后接一个命令和命令指定选项.它控制了udev运行的行为,处理内核事件,控制事件队列,并且提供简单的调试机制. 选项: --debug 打印错误信息 --version 打印版本信息 - ...

  7. Tomcat安装、配置和部署

    首先从Apache的官方网站(http://tomcat.apache.org/)下载Tomcat.有安装版和解压版两种,本文档介绍绿色版安装方法. 一.Tomcat安装(绿色版安装) 1.将下载的T ...

  8. Android camera2 回调imagereader 从Image拿到YUV数据转化成RGB,生成bitmap并保存

    ImageUtil.java import android.graphics.ImageFormat; import android.media.Image; import android.os.Bu ...

  9. vs2017连接mysql以及问题汇总

    https://www.cnblogs.com/eye-like/p/8494355.html https://blog.csdn.net/u012658972/article/details/791 ...

  10. abp ef codefirst Value cannot be null. Parameter name: connectionString

    错误原因是abp生成的项目是mvc类型的,但在使用时,选择了vue去开发,所以在abp上重新生成了一个vue项目,把原有的mvc项目给删掉了,没有将新生成的vue类型的项目的文件覆盖掉原有的mvc其他 ...