defsolve(): n,x,y = map(int,sys.stdin.readline().split()) p = list(map(int, sys.stdin.readline().split())) # x = (100-x)/100 if n == 1: ans = p[0] - y if p[0] > y else0 ans = min(ans, p[0]*x/100) print(ans) return p.sort() if p[-2] >= y: ans = 0 for i inrange(n): ans += p[i] if i!=n-1else p[i]*x/100 print(ans-y) return x = (100-x)/100 tmp = p[-1]*x + p[-2] res = p[-2]*x + (y if p[-1] >= y else p[-1]) ans = sum(p) print(ans-max(tmp,res))
我们考虑一个序列的结尾,不包含txt的序列结尾有3种情况:1、以 t 结尾 2、以tx结尾 3、以其他小写字母结尾,我们考虑从后面添加小写字母以增加长度,即以序列长度为阶段,长度和结尾的字母构成状态。
表示长度为 i 的序列以 t 结尾,以 tx 结尾,其他情况。
状态转移:
tx后面不可接t:
tx只能由t接上x:
显然可得:
python code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import sys
mod = 998244353 N = 2*10**5+1 f = [[0,0,0] for _ inrange(N)] f[1] = [25,1,0] for i inrange(2,N): f[i][1] = (f[i-1][0] + f[i-1][1]) % mod f[i][2] = f[i-1][1] f[i][0] = (f[i-1][0]*25 + f[i-1][2]*25 + f[i-1][1]*24) % mod
for _ inrange(int(sys.stdin.readline())): n = int(sys.stdin.readline()) ans = pow(26,n,mod) - sum(f[n]) print((ans+mod)%mod)