題目描述為了使得大家高興,小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
輸出 #190
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首歌開始之前吉他手想要改變的音量是多少。吉他手想以最大的音量演奏最後一首歌,你的任...