2023年8月15日提高組T1 字串

2021-08-07 01:57:15 字數 1283 閱讀 2363

description

有兩個長度為n且僅由小寫字母組成的字串s,t,滿足s和t恰好有k位不同。問在所有恰好與s有k位不同的字串中,t按照字典序排在第幾位。由於答案可能很大,模10^9+7輸出。

input

第一行兩個整數n,k。

第二行乙個字串s。

第三行乙個字串t。

output

一行乙個整數表示答案。

sample input

4 1

abcd

bbcd

sample output

76 hint

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

對於100%的資料,k<=n<=100000.

做法:

我們就從第一位開始統計:

首先字串的第一位肯定不能大於t的第一位

那麼如果s的第一位比t的第一位要小,那麼第一位對答案的貢獻就是

c(n-1,m-1)25^(m-1)(t[1]-『a』-1)+c(n-1,m)*25^m然後要m–

如果s的第一位比t的第一位要大,那麼第一位對答案的貢獻就是c(n-1,m-1)25^(m-1)(t[1]-『a』)然後要m–

如果s的第一位等於t的第一位,那麼對答案的貢獻就是c(n-1,m-1)25^(m-1)(t[1]-『a』)

然後往下一位一樣的接著處理就好了。

**如下:

#include 

#include

#include

#define maxn 1000000007

using

namespace

std;

char a[100007],b[100007];

long

long f[100007],g[100007],l[100007];

long

long n,m;

long

long ans;

long

long pow4(long

long a,long

long b)

return r;

}long

long c(long

long x,long

long y)

int main()

for (long

long i=1;i<=n;i++)

if (a[i]==b[i])

if (a[i]>b[i])

}cout

<1;

}

2023年8月8日提高組T1 作業

小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其中的一項作業,請你告訴小...

2023年8月8日提高組T1 作業

description 小a作為乙個乖乖好學生,回到家後總是一絲不苟地完成老師布置的作業。這天,老師給小a布置了n項作業,每一項作業都有截止時間di和價值vi 你可以理解成每做完乙份作業就要快遞過去給老師,且快遞是不耗費時間的 每完成一項作業便可獲得其價值。但小a發現,自己每乙個單位時間內只能完成其...

2023年8月10日提高組T1 數學

description 小a得到了乙個數列a,他告訴你這個數列中所有的a i 都是1到n的自然數,並且告訴你對於一些a i 不能取哪些值。無聊的你想要知道所有可能的數列的積的和。定義乙個數列的積為這個數列所有數的乘機。由於答案太大,只要模10 9 7輸出即可。input 第一行三個整數n,m,k,分...