description
小a得到了乙個數列a,他告訴你這個數列中所有的a[i]都是1到n的自然數,並且告訴你對於一些a[i]不能取哪些值。無聊的你想要知道所有可能的數列的積的和。定義乙個數列的積為這個數列所有數的乘機。由於答案太大,只要模10^9+7輸出即可。
input
第一行三個整數n,m,k,分別表示數列元素取值範圍,數列長度以及限制的數量。
接下來k行每行兩個正整數x,y,表示a[x]的值不可能是y。
output
一行乙個整數表示答案。如果連一種可能的數列都沒有,就輸出0即可。
sample input
3 4 5
1 1
1 1
2 2
2 3
4 3
sample output
90 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
做法:考慮每個限制的部分對答案的貢獻,其餘部分直接求解,最後相加即可。
**如下:
#include
#include
#include
#include
#define maxn 1000000007
using
namespace
std;
long
long n,m,k,ans,a[200007];
struct arr
f[200007];
long
long pow1(long
long a,long
long b)
return r;
}long
long cmp (arr a,arr b)
else}}
long
long ans2=pow1(ans,m-e)%maxn;
long
long ans3=1;
for (int i=1;i<=e;i++)
ans3%=maxn;
ans2%=maxn;
long
long answer=(ans2*ans3)%maxn;
cout
<}
2023年8月8日提高組T1 作業
小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其中的一項作業,請你告訴小...
2023年8月8日提高組T1 作業
description 小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其...
2023年8月17日提高組T1 遊戲
description 皮皮和敵敵在玩乙個遊戲 每輪選擇乙個正整數k,看誰先喊出k這個數字,誰就贏。一開始每個人都有乙個數字1,贏得那方的數字可以乘上k 2,而輸的那方的數字就只能乘上k。現在皮皮找到了一次遊戲的結果,但他不知道這個結果是不是合法的。請你告訴他這個結果有沒有可能成為乙個合法的遊戲結果...