您的位置:首页 > 其它

bzoj2751

2015-12-02 14:38 246 查看
答案显然是这个

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#define rep(i,l,r) for(int i=(l);i<(r);i++)
#define clr(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define mkp(a,b) make_pair(a,b)
int read(){
int ans=0,f=1;
char c=getchar();
while(!isdigit(c)){
if(c=='-') f=-1;
c=getchar();
}
while(isdigit(c)){
ans=ans*10+c-'0';
c=getchar();
}
return ans*f;
}
const int maxk=100009;
const ll mod=1000000007;
int pre,cnt,n,m,k;
ll s,t,ans=1;
pii x[maxk];
ll power(ll a,ll b){
ll ans=1;
while(b){
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
int main(){
n=read();m=read();k=read();
rep(i,1,k+1){
x[i].first=read();x[i].second=read();
}
sort(x+1,x+k+1);k=unique(x+1,x+k+1)-x-1;
s=ll(n)*(n+1)/2ll%mod;
rep(i,1,k+1){
if(x[i].first==pre) t+=x[i].second;
else{
cnt++;if(t) ans=ans*(((s-t)%mod+mod)%mod)%mod;pre=x[i].first;t=x[i].second;
}
}
if(t) ans=ans*(((s-t)%mod+mod)%mod)%mod;
ans=ans*power(s,m-cnt)%mod;
cout<<ans<<endl;
return 0;
}


View Code

2751: [HAOI2012]容易题(easy)

Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 1436 Solved: 616
[Submit][Status][Discuss]

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

Source

[Submit][Status][Discuss]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: