794. [HAOI2012] 容易题

★★☆   输入文件:easy.in   输出文件:easy.out   简单对比
时间限制:1 s   内存限制:128 MB

第一题:容易题(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

显示代码纯文本

    1. /*
    1. 题解抄的别人的。表示对母函数一脸懵逼。。。
    1. 首先考虑暴力…(20分~~)…然后你会得到一堆式子,从前往后合并同类项,可以发现顺序无所谓,可以先算m-1个的再算m个的。
    1. 然后显然答案就是π(i=1~m)Σ(所有可行的)a[i]
    1. 虽然m很大,但是k只有1e5,所有许多位置可以全选,把没有限制的部分直接一起算就行了
    1. */
    1. #include<cstdio>
    1. #include<iostream>
    1. #include<algorithm>
    1. #define pir pair<int,int>
    1. using namespace std;
    1. typedef long long ll;
    1. const int N=1e5+;
    1. const int mod=1e9+;
    1. int n,m,val,tn,tmp;
    1. pir f[N];
    1. inline int read(){
    1. int x=,f=;char ch=getchar();
    1. while(ch<'0'||ch>'9'){if(ch=='-')f=-;ch=getchar();}
    1. while(ch>='0'&&ch<='9'){x=x*+ch-'0';ch=getchar();}
    1. return x*f;
    1. }
    1. ll fpow(ll a,ll p){
    1. ll res=;
    1. for(;p;p>>=,a=a*a%mod) if(p&) res=res*a%mod;
    1. return res;
    1. }
    1. int main(){
    1. freopen("easy.in","r",stdin);
    1. freopen("easy.out","w",stdout);
    1. val=read();n=read();m=read();
    1. int all=1LL*val*(val+)/%mod;
    1. int ans=;
    1. for(int i=,a,b;i<=m;i++) a=read(),b=read(),f[i]=make_pair(a,b);
    1. sort(f+,f+m+);
    1. m=unique(f+,f+m+)-(f+);
    1. for(int i=;i<=m;i++){
    1. tmp+=f[i].second;
    1. if(i==m||f[i].first!=f[i+].first){
    1. ans=1LL*ans*(all-tmp)%mod;
    1. tmp=;tn++;
    1. }
    1. }
    1. ans=1LL*ans*fpow(all,n-tn)%mod;
    1. if(ans<) ans+=mod;
    1. printf("%d",ans);
    1. return ;
    1. }

[HAOI2012] 容易题[母函数]的更多相关文章

  1. BZOJ 2751: [HAOI2012]容易题(easy) 数学

    2751: [HAOI2012]容易题(easy) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2751 Description 为了使 ...

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

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

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

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

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

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

  5. 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂

    [bzoj2751][HAOI2012]容易题(easy) 先考虑k=0的情况 那么第一个元素可能为[1,n] 如果序列长度为m-1时的答案是ans[m-1] 那么合并得 然后同理答案就是 k很小 而 ...

  6. 洛谷 P2220 [HAOI2012]容易题 数论

    洛谷 P2220 [HAOI2012]容易题 题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数 ...

  7. hdu2079 选课时间(题目已修改,注意读题) 母函数

    计算数的和的种类,母函数裸题 #include<stdio.h> #include<string.h> ],c2[],a,b; int main(){ int T; while ...

  8. [HAOI2012] 容易题

    有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定义一个数列的积为该数列所有元素的乘积,要求你求出所有可能的数列的积的和 mod 1000000007的 ...

  9. BZOJ2751 [HAOI2012]容易题

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

随机推荐

  1. hibernate学习系列-----(8)hibernate对集合属性的操作之Collectioon集合篇

    度过短暂的周末,又到了周一,继续轻松而愉快的学习,紧承以前的学习,继续了解hibernate对集合的操作学习之旅! 在上一篇中,就已经提前说过,这一篇的内容以及下一篇的内容会有很多相似之处,这里就不再 ...

  2. Python 提取Twitter tweets中的元素(包括text, screen names, hashtags)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-1 @author: guaguastd @name: ex ...

  3. Data truncation: Data too long for column

    是字符集问题引起的,用show full fields from + 表名就可以看出你的列的编码格式把它改成GBK或者GB2312.uTF-8.如果还不行的话,把你表的编码格式也改成上面的编码格式,我 ...

  4. Tomcat 5常用优化和配置

    Tomcat 5常用优化和配置 1.JDK内存优化:Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件 ...

  5. Easy UI datebox控件无法正常赋值

    <input id="AcceptDetail_IssuingDate" class="easyui-datebox" data-options=&quo ...

  6. Visual Studio提示“无法启动IIS Express Web服务器”或者“无法连接Web服务器IIS Express ”的解决方法

    解决办法:找到程序根目录,删除隐藏的.vs文件夹即可. 问题原因:一般是项目拷贝或者系统设置变更所造成的.

  7. PHP正则表达式教程

    1.入门简介  在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windo ...

  8. C#取调用堆栈StackTrace

    Environment.StackTrace or System.Diagnostics.StackTrace if you need a more convienient (i.e. not str ...

  9. 辛星让mysql跑的更快第一节之优化的方向和数据库建模

    近期计划写一套书目,也就是关于mysql的优化的.那么首先在博客上写写,然后整理成pdf的文档的形式,当然也期待各位的关注了.对于mysql的优化是一个比較大的话题.可优化的地方也非常多,大致想了一下 ...

  10. nginx源码学习_源码结构

    nginx的优秀除了体现在程序结构以及代码风格上,nginx的源码组织也同样简洁明了,目录结构层次结构清晰,值得我们去学习.nginx的源码目录与nginx的模块化以及功能的划分是紧密结合,这也使得我 ...