传送门

题目

为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:
有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的数列的积的和 mod 1000000007的值,是不是很简单呢?呵呵!

Input
第一行三个整数n,m,k分别表示数列元素的取值范围,数列元素个数,以及已知的限制条数。
接下来k行,每行两个正整数x,y表示A[x]的值不能是y。

 

Output

一行一个整数表示所有可能的数列的积的和对1000000007取模后的结果。如果一个合法的数列都没有,答案输出0。

分析

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
long long cnt,num[];
const long long mod=1e9+;
struct node {
long long x,y;
}a[];
inline long long pw(long long a,long long p){
long long res=;
a%=mod;
while(p){
if(p&)res=res%mod*(a%mod)%mod;
a=a%mod*(a%mod)%mod;
p>>=;
}
return res;
}
inline bool cmp(const node p,const node q){
if(p.x==q.x)return p.y<q.y;
return p.x<q.x;
}
int main(){
long long n,m,i,j,k,t;
scanf("%lld%lld%lld",&n,&m,&k);
t=n*(n+)/%mod;
for(i=;i<=k;i++){
scanf("%lld%lld",&a[i].x,&a[i].y);
}
sort(a+,a+k+,cmp);
for(i=;i<=k;i++){
if(a[i].x!=a[i-].x)num[++cnt]=a[i].y;
else if(a[i].y!=a[i-].y)num[cnt]=(num[cnt]+a[i].y)%mod;
}
long long ans=pw(t,m-cnt);
for(i=;i<=cnt;i++)
ans=ans%mod*(((t-num[i]+mod)%mod)%mod)%mod;
printf("%lld\n",ans);
return ;
}

最新文章

  1. 《UML大战需求分析》阅读笔记03
  2. AngularJS中实现无限级联动菜单(使用demo)
  3. 4.在二元树中找出和为某一值的所有路径[FindPathsInBinaryTree]
  4. Android Listener 监听的几种写法
  5. iOS开发那些事-iOS应用本地化-资源文件本地化
  6. 关于在xp(sp3 专业版)下安装sql2005开发版图解
  7. Android学习笔记--服务(Service)
  8. Makefile条件推断 ——————————【Badboy】
  9. vue学习笔记 概述(一)
  10. SVN:Cleanup failed to process the following paths
  11. swig官方go Examples 源码勘误
  12. 概括一下nodejs
  13. Mybatis_3.基于注解的增删改查
  14. window.location.search 在url中有?name=value时仍为‘’的情况
  15. Visual Studio 2017 密匙
  16. Flume配置Replicating Channel Selector
  17. HDU2976 Dropping tests 2017-05-11 18:10 39人阅读 评论(0) 收藏
  18. 删除或修改eclipse中svn的账号密码
  19. opencv:基于颜色空间的肤色检测方法
  20. go语言数组与切片比较

热门文章

  1. 2018-2019-2 20165210《网络对抗技术》Exp6 信息搜集与漏洞扫描
  2. ios 加密解密(包括base64,DES)非原创
  3. UVALive 3635 Pie(二分法)
  4. OpenCV-Python在图片上输出中文
  5. 幸运数字(数位dp)
  6. JavaWeb框架_Struts2_(三)----&gt;Struts2的拦截器
  7. HIVE-如何查看执行日志
  8. BZOJ1901:Dynamic Rankings
  9. MySQL 用户权限详细汇总(转)
  10. nginx与二级域名的绑定 nginx安装