Description

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

Input

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

Output

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

Sample Input

3 4 5
1 1
1 1
2 2
2 3
4 3

Sample Output

90
样例解释
A[1]不能取1
A[2]不能去2、3
A[4]不能取3
所以可能的数列有以下12种
数列 积
2 1 1 1 2
2 1 1 2 4
2 1 2 1 4
2 1 2 2 8
2 1 3 1 6
2 1 3 2 12
3 1 1 1 3
3 1 1 2 6
3 1 2 1 6
3 1 2 2 12
3 1 3 1 9
3 1 3 2 18

HINT

数据范围

30%的数据n<=4,m<=10,k<=10

另有20%的数据k=0

70%的数据n<=1000,m<=1000,k<=1000

100%的数据 n<=109,m<=109,k<=105,1<=y<=n,1<=x<=m

首先易知答案就是每一个数的所有可以取的数之和乘在一起

然后因为限制很小,就读进来排序+乱搞。然后因为m是10e,还要快速幂处理没有约束的

#include<cstdio>
#include<algorithm>
using namespace std;
#define LL long long
#define mod 1000000007
#define K 100010
struct lim{int x,y;
}l[K];
LL n,m,tot,ans=1,mul,tomul;
int k,cnt;
inline bool cmp(const lim &a,const lim &b)
{return a.x<b.x||a.x==b.x&&a.y<b.y;}
inline void quickpow(LL &ans,LL a,LL b)
{LL mult=a;while (b){if (b&1)ans=(ans*mult)%mod;mult=(mult*mult)%mod;b>>=1;}
}
inline LL read()
{LL x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int main()
{n=read();m=read();k=read();mul=(n*(n+1)/2)%mod;LL x,y;for(int i=1;i<=k;i++){l[i].x=read();l[i].y=read();}sort(l+1,l+k+1,cmp);tot=m;tomul=mul-l[1].y;for (int i=2;i<=k;i++){if (l[i].x==l[i-1].x){if (l[i].y==l[i-1].y)continue;tomul-=l[i].y;}else{tot--;if (tomul<0)tomul=tomul%mod+mod;ans=(ans*tomul)%mod;tomul=mul-l[i].y;}}if (mul!=tomul){tot--;if (tomul<0)tomul=tomul%mod+mod;ans=(ans*tomul)%mod;}quickpow(ans,mul,tot);printf("%lld",ans);
}

  

转载于:https://www.cnblogs.com/zhber/p/4035929.html

bzoj2751 [HAOI2012]容易题(easy)相关推荐

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

    bzoj2751[HAOI2012]容易题(easy) 题意: 已知一个数列A对于所有的A[i]都是1~n的自然数,一些A[i]不能取一些值,求出所有可能的数列的积的和 mod 1000000007的 ...

  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. 关于js中的this
  2. 类和对象—对象特性—空指针访问成员函数
  3. spring boot 异常设计原理
  4. 解决BDOC structure里header和data structure里数据格式不一致的问题
  5. Mysql查询结果只有一条的情况下把值赋值给变量,再用if else 流程判断
  6. Go database/sql 教程
  7. asp.net my sqlHelper
  8. 金蝶注册不了服务器,金蝶KIS专业版V10.0加密服务器无法注册?
  9. BootStrap之导航navigation
  10. XXX@1.0.0 build: `NODE_ENV=production webpack --config webpack.config.js`报错的解决
  11. sohu_news搜狐新闻类型分类
  12. 【Linux学习】信号——信号保存 | 信号处理 | 不可重入函数,volatile,SIGCHLD信号
  13. 在idea2021中遇到element tx:attributes is not allowed here的问题
  14. ​Vue 3 这个坑我踩了,你们一定要小心
  15. 时间间隔输出函数 python3
  16. 计算机科学核心知识体系
  17. Java反射系列--Type接口及其子接口
  18. 最大公约数的几种求解及代码实现
  19. 关于使用JavaPOI 导出Excel多级联动的一些方法
  20. 实时即未来,大数据项目车联网之项目基石与前瞻【一】

热门文章

  1. 苹果将在内华达州里诺市再购地块 都是为了它
  2. oracle EXP-00028
  3. 【高斯消元】bzoj1013 [JSOI2008]球形空间产生器sphere
  4. wpspbc按钮是什么意思_AC只是英文单词缩写,在科技领域常见的有三种意思
  5. svn回退到上一个版本_Git实用教程(一) | 为什么需要版本控制?(以嵌入式项目开发为例)...
  6. 小程序css之字体镂空
  7. 性能测试测试环境与生产环境_不在生产中测试? 在生产中进行测试!
  8. python使用redis_使用Python构建您的第一个Redis Hello World应用程序
  9. 应用迁移方案_Kubernetes如何成为迁移旧版应用程序的解决方案
  10. raspberry pi_如何进行Raspberry Pi聚会