2023年8月10日提高組T1 數學

2021-08-07 01:55:10 字數 1245 閱讀 6244

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。現在皮皮找到了一次遊戲的結果,但他不知道這個結果是不是合法的。請你告訴他這個結果有沒有可能成為乙個合法的遊戲結果...