[HAOI2012] 容易题[母函数]
794. [HAOI2012] 容易题
★★☆ 输入文件:easy.in 输出文件:easy.out 简单对比
时间限制:1 s 内存限制:128 MB
- /*
- 题解抄的别人的。表示对母函数一脸懵逼。。。
- 首先考虑暴力…(20分~~)…然后你会得到一堆式子,从前往后合并同类项,可以发现顺序无所谓,可以先算m-1个的再算m个的。
- 然后显然答案就是π(i=1~m)Σ(所有可行的)a[i]
- 虽然m很大,但是k只有1e5,所有许多位置可以全选,把没有限制的部分直接一起算就行了
- */
- #include<cstdio>
- #include<iostream>
- #include<algorithm>
- #define pir pair<int,int>
- using namespace std;
- typedef long long ll;
- const int N=1e5+;
- const int mod=1e9+;
- int n,m,val,tn,tmp;
- pir f[N];
- inline int read(){
- int x=,f=;char ch=getchar();
- while(ch<'0'||ch>'9'){if(ch=='-')f=-;ch=getchar();}
- while(ch>='0'&&ch<='9'){x=x*+ch-'0';ch=getchar();}
- return x*f;
- }
- ll fpow(ll a,ll p){
- ll res=;
- for(;p;p>>=,a=a*a%mod) if(p&) res=res*a%mod;
- return res;
- }
- int main(){
- freopen("easy.in","r",stdin);
- freopen("easy.out","w",stdout);
- val=read();n=read();m=read();
- int all=1LL*val*(val+)/%mod;
- int ans=;
- for(int i=,a,b;i<=m;i++) a=read(),b=read(),f[i]=make_pair(a,b);
- sort(f+,f+m+);
- m=unique(f+,f+m+)-(f+);
- for(int i=;i<=m;i++){
- tmp+=f[i].second;
- if(i==m||f[i].first!=f[i+].first){
- ans=1LL*ans*(all-tmp)%mod;
- tmp=;tn++;
- }
- }
- ans=1LL*ans*fpow(all,n-tn)%mod;
- if(ans<) ans+=mod;
- printf("%d",ans);
- return ;
- }
第一题:容易题(easy)
时间限制:1秒
输入:easy.in
输出:easy.out
问题描述
为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:
有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的数列的积的和 mod 1000000007的值,是不是很简单呢?呵呵!
输入
第一行三个整数n,m,k分别表示数列元素的取值范围,数列元素个数,以及已知的限制条数。
接下来k行,每行两个正整数x,y表示A[x]的值不能是y。
输出
一行一个整数表示所有可能的数列的积的和对1000000007取模后的结果。如果一个合法的数列都没有,答案输出0。
样例输入
3 4 5
1 1
1 1
2 2
2 3
4 3
样例输出
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
数据范围
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
[HAOI2012] 容易题[母函数]的更多相关文章
- BZOJ 2751: [HAOI2012]容易题(easy) 数学
2751: [HAOI2012]容易题(easy) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2751 Description 为了使 ...
- BZOJ2751: [HAOI2012]容易题(easy)
2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 872 Solved: 377[Submit][S ...
- 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) 数论-快速幂
[bzoj2751][HAOI2012]容易题(easy) 先考虑k=0的情况 那么第一个元素可能为[1,n] 如果序列长度为m-1时的答案是ans[m-1] 那么合并得 然后同理答案就是 k很小 而 ...
- 洛谷 P2220 [HAOI2012]容易题 数论
洛谷 P2220 [HAOI2012]容易题 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数 ...
- hdu2079 选课时间(题目已修改,注意读题) 母函数
计算数的和的种类,母函数裸题 #include<stdio.h> #include<string.h> ],c2[],a,b; int main(){ int T; while ...
- [HAOI2012] 容易题
有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的数列的积的和 mod 1000000007的 ...
- BZOJ2751 [HAOI2012]容易题
Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...
随机推荐
- hdoj-1213-How Many Tables【并查集】
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- hibernate hql 语句中 in 的用法
例子描述查询一些班级中的学生 /** * * @param city * @return */ public List<Student> studentList(final Integer ...
- 倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT 如何简单执行NC功能块 TC3
这一节我们介绍简单的NC运动(前面所讲的所有内容都是PLC编程和HMI的界面,算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际 ...
- 使用Google-Authenticator加强serverSSH登录
对于须要特殊加密的人群,我这里给出对应的方法来进行谷歌式加密. 过程例如以下: 准备: 首先在你的手机上准备好client(自己百度下载) 接下来依照命令做: date 查看系统时间 da ...
- Visual studio C++ MFC之树形控件Tree Control
背景 本篇旨在MSDN帮助文档下总结树形控件Tree Control的使用,并列出碰到的具体问题. 正文 树形控件Tree Control的类则是CTreeCtrl,具体成员对象详见链接,以下则描述一 ...
- 利用pandas进行数据分析之ndarray结构
Numpy的重要特点就是其N维数组对象, 1.ndarray每个元素是相同的,每个数组都有一个两个对象: .shape:用于表示维度大小的元组 .dtype:用户表示数组类型的对象 2.创建数组 ar ...
- xcode,不要将.a文件拖到xcode里
如果将.a文件拖到xcode里,它自动生成的search path是错的.导致奇怪的编译错误,非常坑.这是xcode的一个bug. 或者为了省事直接将.a拖进xcode也行,但记着去Library S ...
- 统计MSSQL数据库中所有表记录的数量
SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS aINNER JOIN sysindexes AS b ON a.id = b.id ...
- TADOConnection如何测试连接数据库超时的解决办法
TADOConnection如何测试连接数据库超时的解决办法 TADOConnection 提供了很好的数据库连接功能,但是我们在实际使用时,如果指定的远程数据库不存在或其他原因连接不上,程序往往会 ...
- 551. Student Attendance Record I【easy】
551. Student Attendance Record I[easy] You are given a string representing an attendance record for ...