結果
問題 | No.1740 Alone 'a' |
ユーザー |
![]() |
提出日時 | 2021-11-12 22:36:47 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 525 ms / 2,000 ms |
コード長 | 1,125 bytes |
コンパイル時間 | 2,122 ms |
コンパイル使用メモリ | 77,188 KB |
実行使用メモリ | 69,848 KB |
最終ジャッジ日時 | 2024-11-25 20:06:44 |
合計ジャッジ時間 | 14,925 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 |
ソースコード
import java.util.*;public class Main {public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);int N = sc.nextInt();char[] s = sc.next().toCharArray();int[][][] dp = new int[N][2][2];int mod = 998244353;for( int i = 0; i <= s[0]-'a'; i++ ) {int j = i == 0 ? 1 : 0;int k = i < s[0]-'a' ? 1 : 0;dp[0][j][k]++;}for( int i = 0; i < N-1; i++ ) {for( int j = 0; j <= 1; j++ ) {for( int k = 0; k <= 1; k++ ) {int max = k == 1 ? 'z'-'a' : s[i+1]-'a';for( int d = 0; d <= max; d++ ) {int x = d == 0 ? 1 : 0;int y = d < s[i+1]-'a' ? 1 : 0;if( (j&x) == 1 ) continue;dp[i+1][j|x][k|y] += dp[i][j][k];dp[i+1][j|x][k|y] %= mod;}}}}System.out.println(dp[N-1][1][1]);}}