NOIP2016提高A組五校聯考2 string

2021-09-25 02:21:09 字數 1093 閱讀 4361

description

給出乙個長度為n, 由小寫英文本母組成的字串s, 求在所有由小寫英文本母組成且長度為n 且恰好有k 位與s 不同的字串中,給定字串t 按照字典序排在第幾位。

由於答案可能很大,模10^9 + 7 輸出。

input

第一行為兩個整數n; k

第二行乙個字串s

第三行乙個字串t,(t即是k位與s不同的串)

output

輸出一行取模後的答案。

sample input

4 1abcd

bbcd

sample output

76data constraint

對於前30% 的資料,n<=5

對於100% 的資料,k<=n<=10^5..

...分析

問題轉化,求有多少個字串的字典序小於t且有k位和s不同。

我們先列舉第一位,若第一位比t1小,則第2~n位填什麼字母進去都可以,用組合數求出可行方案。

若第一位等於t2,則我們列舉第二位,

以此類推..

....

程式:

#include#include#includeusing namespace std;

long long jc[100010],ny[100010],d[100010],mo=1000000007,ans=1;

char s[100010],t[100010];

long long ksm(long long a,long long b)

return res;

}long long c(int x,int y)

int main()

int l=0;

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

if (s[i]!=t[i]) l++;

if (l>k) break;

}printf("%lld",ans%mo);

fclose(stdin);

fclose(stdout);

return 0;

}

NOIP2016提高A組五校聯考1 道路規劃

我們考慮,當現在有乙個合法的集合時,如何往裡面增加乙個點,使這個集合仍然合法。假設現在有乙個合法的集合,那麼當我們加入乙個點,它的道路穿過來整個集合,那麼 然後搞一遍最長下降子串行就可以了。include include include include include const int maxlo...

NOIP2016提高A組五校聯考1 挖金礦

剛看到這題時,還在想怎麼貪心,然後很快的打完之後發現貪心是錯的。然後仔細的看了看範圍,哈哈,這不是二分嗎。二分出乙個mid,然後在所有行裡面用mid j 字首和然後找乙個最大值。最後把這些最大值加起來,判斷一下就好了。include include include include include i...

NOIP2016提高A組五校聯考1 挖金礦

答案,保留4位小數 4 3 4 3 3 5 1 6 2 6 1 3 2 9 4.4286 n m 100000 很簡單的一道題 設sum i j 表示第i列向下挖j行的字首和 假設第i列挖h i 行 設二分的答案是m,答案如果合法,那麼 n i 1s um i h i ni 1 h i m 移項 i...