結果
問題 | No.1740 Alone 'a' |
ユーザー |
![]() |
提出日時 | 2021-11-13 12:55:35 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 447 ms / 2,000 ms |
コード長 | 1,696 bytes |
コンパイル時間 | 155 ms |
コンパイル使用メモリ | 82,124 KB |
実行使用メモリ | 177,792 KB |
最終ジャッジ日時 | 2024-11-27 07:16:20 |
合計ジャッジ時間 | 12,610 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
import itertools as iterimport collections as collimport heapq as hqimport bisect as bisfrom decimal import Decimal as decfrom copy import deepcopy as dcopyimport mathimport syssys.setrecursionlimit(10**6)def input():return sys.stdin.readline().rstrip()def getN():return int(sys.stdin.readline())def getNs():return map(int,sys.stdin.readline().split())def getList():return list(map(int,sys.stdin.readline().split()))def strinps(n):return [sys.stdin.readline().rstrip() for _ in range(n)]pi = 3.141592653589793mod = 10**9+7MOD = 998244353INF = math.infdx = [1,0,-1,0]; dy = [0,1,0,-1]def ctoi(char):return ord(char)-ord('a')"""Main Code"""n = getN()s = input()l = [ctoi(c) for c in s]dp = [[0]*4 for _ in [0]*n]ndp = dcopy(dp)dp[0][0b00] = max(0,l[0]-1)dp[0][0b01] = int(l[0] != 0)dp[0][0b10] = int(l[0] != 0)dp[0][0b11] = int(l[0] == 0)#print(dp)for i in range(1,n):# 0 を 1 つも含まず、S より小さいdp[i][0b00] += dp[i-1][0b00] * 25; dp[i][0b00] %= MODdp[i][0b00] += dp[i-1][0b10] * max(0,l[i]-1); dp[i][0b00] %= MOD# 0 を 1 つだけ含み、S より小さいdp[i][0b01] += dp[i-1][0b00]; dp[i][0b01] %= MODdp[i][0b01] += dp[i-1][0b01] * 25; dp[i][0b01] %= MODdp[i][0b01] += dp[i-1][0b10] * (l[i] != 0); dp[i][0b01] %= MODdp[i][0b01] += dp[i-1][0b11] * max(0,l[i]-1); dp[i][0b01] %= MOD# 0 を 1 つも含まず、S と等しいdp[i][0b10] += dp[i-1][0b10] * (l[i] != 0); dp[i][0b10] %= MOD# 0 を 1 つだけ含み、S と等しいdp[i][0b11] += dp[i-1][0b10] * (l[i] == 0); dp[i][0b11] %= MODdp[i][0b11] += dp[i-1][0b11] * (l[i] != 0); dp[i][0b10] %= MOD#print(dp)print(dp[n-1][0b01])