牛客練習賽60 C 操作集錦

2021-10-04 12:31:29 字數 1142 閱讀 3359

整理的演算法模板:acm演算法模板總結(分類詳細版)

有一款自走棋有26種操作,每種操作我們都用a,b,c,d,...,x,y,za,b,c,d,...,x,y,za,b,c,d,...,x,y,z的符號來代替. 

比如對於abababababab,長度為222且本質不同的結果有ab,aa,ba,bbab,aa,ba,bbab,aa,ba,bb。

考慮到答案可能非常大,你只需要輸出在模1e9+71e9+71e9+7意義下的答案就可以了.

第一行兩個整數n,kn,kn,k.

第二行乙個長度為nnn的字串,保證只存在小寫字母.

示例1

3 1

abc

3
思路:dp

狀態屬性以及注意方程**中已經註明;關鍵是去重;

假設乙個字串組成為sa.....b(s為乙個串,a,b是字元);字元 a 可以和 s 中的任何序列構成新的序列,同理b也可以,如果a和b相同,那麼兩者和s構成的序列就相同,那麼就要減去乙個,就意味著前面的a不能和s構成新的序列;那麼就是減去

f(i-1,j-1)   (i為a的位置下標)

//  狀態表示:集合:f(i,j)表示前i個字元中長度為j的不同的序列個數 

// 屬性:sum;

// 狀態計算:f(i,j)=f(i-1,j)+f(i-1,j-1);

// 考慮去重 f(i,j)-=f(pre[s[i]]-1,j-1);

#include using namespace std;

const int mod=1e9+7;

typedef long long ll;

ll dp[1005][1005];

int pre[30];

char s[1005];

int main()

pre[s[i]-'a']=i;

} cout <<(dp[n][k]+mod)%mod<}

操作集錦 牛客網 牛客練習賽60

題目傳送 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 輸入描述 第一行兩個整數n,k 第二行乙個長度為n的字串,保證只存在小寫字母.輸出描述 示例1輸入 3 1 abc輸出 3備註 1 n 1e3 ...

牛客練習賽60補題

思路 考慮位運算 的特性 只有兩者都為1才會對答案有貢獻 且 對答案貢獻的值為 1 k 其中k是當前1所在二進位制下的位數 所以考慮預處理每乙個位的1出現的次數 其中對每一位都會遍歷n n次 所以每一位對答案的貢獻就是 a i a i 1 i a i 為當前位置1的個數 include using ...

牛客練習賽9

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...