有n個人坐座位,本著民主精神,每個人可以自己提出來,他所希望的座位的範圍,同時考慮到集中制的要求,他只能說乙個數x,表示他所希望的座位不超過x。求滿足每個人訴求的方案有少種。你只需要將答案mod 1000000007即可。如果這是不可能的,就輸出0。最小的可能編號為1。
第一行:乙個整數n(1<=n<=1000);
第二行n個整數,表示n個人的訴求。
乙個整數。
25 8
本題其實使用的是排列組合的原理,
如果直接計算肯定不好計算,
我們可以將 訴求陣列 從小到大排序
這樣對於每乙個 i,(2<=i<=n),
前一到i-1個人必定沒人會佔掉前a[i]個座位中的i-1個。
故ac**如下:
#include#include#include//#pragma gcc optimize(2)
using namespace std;
inline int read()
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;}
long long n,sum=1;
long long a[1010];//別忘記開long long
int main()//這個if判斷其實加不加無所謂,因為sum*0後sum會永遠等於0
sum=sum*(a[i]-i+1)%1000000007;
sum%=1000000007;//保險起見,再模一次
}cout
}
POJ 1509 字尾陣列
點選開啟鏈結 題意 給個串問最小的字尾,但是這個串是個環 思路 是個環也好處理,那麼就將串複製一遍加到後面就行了,然後求出字尾陣列和高度陣列,剛開始我寫的是就求出字尾陣列sa,然後從排名第1開始找,比如找到了i,排名為i的從第sa i 開始,那麼如果這個值小於輸入串的長度,直接輸出就行,提交wa,看...
1509 普及模擬 單元格
在乙個r行c列的 裡,我們要選出3個不同的單元格。但要滿足如下的兩個條件 1 選中的任意兩個單元格都不在同一行。2 選中的任意兩個單元格都不在同一列。假設我們選中的單元格分別是 a,b,c,那麼我們定義這種選擇的 費用 f a b f b c f c a 其中f a b 是指單元格a到單元格b的距離...
HIHOCODER 1509 異或排序
給定乙個長度為 n 的非負整數序列 a 1.n 你需要求有多少個非負整數 s 滿足以下兩個條件 1 0 s 260 2 對於所有 1 i n 有 a i xor s a i 1 xor s 第一行乙個正整數 n 第二行 n 個非負整數表示序列 a 1.n 1 n 50 0 a i 260 乙個非負正...