2751: [HAOI2012]容易题(easy)

题目连接:

http://www.lydsy.com/JudgeOnline/problem.php?id=2751

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

题意

题解:

答案显然是每个位置的数可选的数的和的累积(即PI(sigma(j)))

然后我们可以暴力处理出有限制的地方的乘积

然后再快速幂搞定剩下没有限制的乘积就好了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+8;
const int mod = 1e9+7;
long long pow_mod(long long a,long long n,long long mod)
{
long long ret = 1;
long long temp = a%mod;
while(n)
{
if(n & 1)ret = ret*temp%mod;
temp = temp*temp%mod;
n >>= 1;
}
return ret;
}
long long n,m;
int k;
vector<pair<int,int> >p;
map<int,long long> H;
int main()
{
scanf("%lld%lld%d",&n,&m,&k);
for(int i=0;i<k;i++)
{
int x,y;
scanf("%d%d",&x,&y);
p.push_back(make_pair(x,y));
}
sort(p.begin(),p.end());
p.erase(unique(p.begin(),p.end()),p.end());
for(int i=0;i<p.size();i++)
{
H[p[i].first]=(H[p[i].first]+p[i].second)%mod;
}
map<int,long long>::iterator it;
int tot = 0;
long long ans = 1;
long long temp = (1LL+n)*n/2LL%mod;
for(it=H.begin();it!=H.end();it++)
{
tot++;
ans = ans*(temp-it->second)%mod;
if(ans<0)ans+=mod;
}
ans = ans * pow_mod(temp,m-tot,mod)%mod;
if(ans<0)ans+=mod;
printf("%lld\n",ans);
}

BZOJ 2751: [HAOI2012]容易题(easy) 数学的更多相关文章

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

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

  2. bzoj 2751 [HAOI2012]容易题(easy)(数学)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2751 [题意] m个位置,已知每个位置的可能取值,问所有可能情况的每个位置的乘积的和. ...

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

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

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

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

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

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

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

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

  7. P2220 [HAOI2012]容易题[小学数学]

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

  8. 2018.11.07 bzoj2751: [HAOI2012]容易题(easy)(组合数学)

    传送门 组合数学一眼题. 感觉一直做这种题智商会降低. 利用组合数学的分步计数原理. 只用关心每个数不被限制的取值的总和然后乘起来就可以了. 对于大部分数都不会被限制,总和都是n(n+1)2\frac ...

  9. BZOJ 2751 容易题(easy) 快速幂+快速乘

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

随机推荐

  1. nmon基础

    nmon是分析 AIX 和 Linux 性能的免费工具 最简单的安装方式(Ubuntu apt源) sudo apt-get install nmon 在terminal下打开nmon 敲CMD,出现 ...

  2. C++将string转化成字符串数组

    //str为需要截断的string,pattern为分隔符 std::vector<std::string> split(std::string str,std::string patte ...

  3. motan源码解读:注册中心zookeeper(2)

    上文大概讲解了利用zookeeper如何实现注册中心的.本文主要是从源码角度说明下.代码都在模块motan-registry-zookeeper中,其实在在这个模块中就3个类. ZkNodeType: ...

  4. Eclipse中用Link方式安装Maven插件(转载)

    标签: it 分类: 开发软件 1.工具下载: Eclipse4.2 jee版本(注意是Jee,不是标准版的eclipse) 下载地址:http://www.eclipse.org/downloads ...

  5. Java Web高性能开发(三)

    今日要闻: Clarifai:可识别视频中物体 最近几年,得益于深度学习技术的发展,谷歌和Facebook等企业的研究人员在图形识别软件领域取得了重大突破.现在,一家名为Clarifai的创业公司则提 ...

  6. Classic Source Code Collected

    收藏一些经典的源码,持续更新!!! 1.深度学习框架(Deep Learning Framework). A:Caffe (Convolutional Architecture for Fast Fe ...

  7. iOS打开手机QQ与指定用户聊天界面

    开发中遇到一个联系客服qq的需求,找到这么一个实现方法,先记录下来.大概的原理就是,iOS启动第三方应用是采用schema模式的,这有点像url,打开不同的界面使用不同的地址.但这个url怎么得来的还 ...

  8. 第三百五十三天 how can I 坚持

    今天买了床被子,凑合盖吧,也不是多好. 下午去了趟华北电力大学,和刘路聊了聊,还是话太多了..不好. 还有买了桶油和大米.. 洗澡,睡觉,一天过得好快.

  9. CameraComponent Quality

    CameraComponent1.Quality := TVideoCaptureQuality.HighQuality; procedure TCameraComponentForm.Set720p ...

  10. <转>Linux环境进程间通信(二): 信号(下)

    原文地址为:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html 原文为: 一.信号生命周期 从信号发送到信号处理函数的 ...