現在給你n個不同的數,a1,a2,a3, ..... ,an。求長度為k的不同遞減序列的個數,既包含連續也包含不連續的序列。例如:給你n=3,k=2,原始序列為 3 ,1,2 。長度為2的遞減序列為3,1和 3,2;
一共有兩組所以答案為2.
第一行輸入n,k(1<=n<=20000, 2=第二行輸入n個整數ai。(0<=ai<=1e5).
輸出乙個整數為長度為k 的不同的遞減數列的個數。答案取餘1000000000;
5 35 4 3 2 1
10
dp[i][j] 表示最後一位在第i位長度為j的遞減序列的長度;所以dp方程為: if(arr[now]最後累加ans[1...n][k] 即可;
時間複雜度在4e9;過了蠻不可思議的;
#include#define int long long
using namespace std;
const int maxn=2e4+10;
const int mod=1000000000;
int dp[maxn][15];
int arr[maxn];
#undef int
int main()}}
int ans=0;
/*for(int i=1;i<=n;i++)
cout<}*/
for(int i=1;i<=n;i++)
ans=(ans+dp[i][kk])%mod;
printf("%lld\n",ans);
return 0;
}
字串擴充套件 SDUT 1916
tom有些時候為了記錄的方便,常常將一些連續的字元用擴充套件符 簡單表示。比如abcdefg可以簡寫為a g,即用起始的字元和終止字元中間加上乙個擴充套件符 來表示這個字串。但是為了處理的方便,tom又必須將這些我們簡單記法擴充套件成原來的字串。很明顯要是人工來做的話必定很麻煩,tom知道計算機可以...
hdu5256序列變換(非遞減子串行)
題意 中文直接粘吧 序列變換 problem description 我們有乙個數列a1,a2.an,你現在要求修改數量最少的元素,使得這個數列嚴格遞增。其中無論是修改前還是修改後,每個元素都必須是整數。請輸出最少需要修改多少個元素。input 第一行輸入乙個t 1 t 10 表示有多少組資料 每一...
SDUT1524回文串判定(棧)
time limit 1000ms memory limit 65536k 有疑問?點這裡 輸入一串字元 長度小於100 判斷該串字元是否是回文串 正序讀與逆序讀內容相同 輸入一串字元 長度小於100 若該串字元是回文串輸出 yes 否則輸出 no asdfgfdsa yes include inc...