洛谷 2220 HAOI2012 容易題

2021-09-28 21:04:07 字數 1658 閱讀 5058

題目描述

為了使得大家高興,小q特意出個自認為的簡單題(easy)來滿足大家,這道簡單題是描述如下:

有乙個數列a已知對於所有的a[i]都是1~n的自然數,並且知道對於一些a[i]不能取哪些值,我們定義乙個數列的積為該數列所有元素的乘積,要求你求出所有可能的數列的積的和 mod 1000000007的值,是不是很簡單呢?呵呵!

輸入格式

第一行三個整數n,m,k分別表示數列元素的取值範圍,數列元素個數,以及已知的限制條數。

接下來k行,每行兩個正整數x,y表示a[x]的值不能是y。

輸出格式

一行乙個整數表示所有可能的數列的積的和對1000000007取模後的結果。如果乙個合法的數列都沒有,答案輸出0。

輸入輸出樣例

輸入 #1

3 4 5

1 11 1

2 22 3

4 3

輸出 #1

90

100%的資料 n

<=1

09,m

<=1

09,k

<=1

05,1

<=y

<=n

,1

<=x

<=m

n<=10^9,m<=10^9,k<=10^5,1<=y<=n,1<=x<=m

n<=1

09,m

<=1

09,k

<=1

05,1

<=y

<=n

,1<=x

<=m

解釋:很容易推出公式,dp[

i]=(

1+n)

i−j∗

ni−j

2i−j

∗dp[

j]

dp[i]=\frac*n^}}*dp[j]

dp[i]=

2i−j

(1+n

)i−j

∗ni−

j​∗d

p[j]

,對於限制,然後我們就可以列舉限制來計算,對於限制,我們只需要套減去限制的數字*前乙個狀態就好了。

#include#include#define mod 1000000007

#define ll long long

using namespace std;

struct nodes[100005];

ll pow(ll a,ll b)

return ret;

}ll inv(ll x)

bool cmp(node &a,node &b)

k++;

s[k].pos=m;s[k].v=0;

sort(s+1,s+1+k,cmp);

for(int i=1;i<=k;i++)

if(s[i].pos==s[i-1].pos&&s[i].v==s[i-1].v) continue;

ret-=s[i].v*frontret;

ret%=mod;ret+=mod;ret%=mod;

}cout

}

P2220 HAOI2012 容易題 快速冪

為了使得大家高興,小q特意出個自認為的簡單題 easy 來滿足大家,這道簡單題是描述如下 有乙個數列a已知對於所有的a i 都是1 n的自然數,並且知道對於一些a i 不能取哪些值,我們定義乙個數列的積為該數列所有元素的乘積,要求你求出所有可能的數列的積的和 mod 1000000007的值,是不是...

P2220 HAOI2012 容易題 小學數學

有乙個數列a已知對於所有的a i 都是1 n的自然數,並且知道對於一些a i 不能取哪些值,我們定義乙個數列的積為該數列所有元素的乘積,要求你求出所有可能的數列的積的和 mod 1000000007的值,是不是很簡單呢?呵呵!標籤裡面數論是騙人的 霧 難道是因為有個取模嗎?這題還是很簡單的,首先觀察...

洛谷 P1877 HAOI2012 音量調節

音量用乙個整數描述。輸入檔案中整數beginlevel,代表吉他剛開始的音量,整數maxlevel,代表吉他的最大音量。音量不能小於0也不能大於maxlevel。輸入中還給定了n個整數c1,c2,c3,cn,表示在第i首歌開始之前吉他手想要改變的音量是多少。吉他手想以最大的音量演奏最後一首歌,你的任...