Submission #344505
Source Code Expand
#include <algorithm> #include <cstdio> #include <cstdlib> #include <cctype> #include <cmath> #include <iostream> #include <queue> #include <list> #include <map> #include <numeric> #include <set> #include <sstream> #include <string> #include <vector> using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; #define MOD 1000000007 int dp[255][3][255][255]; int main(){ int N, X; string str; cin >> N >> X; cin >> str; if(str[0] == '?'){ dp[0][1][1][0] = 1; dp[0][2][0][0] = 1; dp[0][0][0][0] = 8; }else{ int t = str[0]-'0'; if(t==2){ dp[0][1][1][0] = 1; } else if(t==5){ dp[0][2][0][0] = 1; } else{ dp[0][0][0][0] = 1; } } rep(i,N-1){ rep(j,3){ rep(k,N){ rep(l,X+1){ //cout << i << " " << j << " " << k << " " << l << " " << dp[i][j][k][l] << endl; if(str[i+1]=='?'){ rep(t,3){ if(t==1){ if(j==2){ dp[i+1][t][k+1][l] += dp[i][j][k][l]; dp[i+1][t][k+1][l] %= MOD; } else if(j==1){ dp[i+1][t][1][l] += dp[i][j][k][l]; dp[i+1][t][1][l] %= MOD; } else{ dp[i+1][t][1][l] = (dp[i+1][t][1][l] + dp[i][j][k][l])%MOD; } } else if(t==2){ if(j==1){ dp[i+1][t][k+1][min(X,l+(k+1)/2)] += dp[i][j][k][l]; dp[i+1][t][k+1][min(X,l+(k+1)/2)] %= MOD; } else if(j==2){ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } else{ dp[i+1][t][0][l] = (dp[i+1][t][0][l] + dp[i][j][k][l])%MOD; } } else{ dp[i+1][t][0][l] = (dp[i+1][t][0][l] + 8LL*dp[i][j][k][l])%MOD; dp[i+1][t][0][l] %= MOD; } } }else{ int in = str[i+1]-'0'; int t = 0; if(in == 2) t = 1; if(in == 5) t = 2; if(t==1){ if(j==2){ dp[i+1][t][k+1][l] += dp[i][j][k][l]; dp[i+1][t][k+1][l] %= MOD; } else if(j==1){ dp[i+1][t][1][l] += dp[i][j][k][l]; dp[i+1][t][1][l] %= MOD; } else{ dp[i+1][t][1][l] += dp[i][j][k][l]; dp[i+1][t][1][l] %= MOD; } } else if(t==2){ if(j==1){ dp[i+1][t][k+1][min(X,l+(k+1)/2)] += dp[i][j][k][l]; dp[i+1][t][k+1][min(X,l+(k+1)/2)] %= MOD; } else if(j==2){ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } else{ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } } else{ dp[i+1][t][0][l] += dp[i][j][k][l]; dp[i+1][t][0][l] %= MOD; } } } } } } ll ret = 0; ll all = 1; rep(i,N){ if(str[i]=='?') all = (all * 10LL)%MOD; } rep(i,3){ rep(j,N+1){ rep(k,X){ ret = (ret + dp[N-1][i][j][k])%MOD; } } } cout << (all - ret + MOD)%MOD << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | A - ニコニコ文字列2 |
User | phyllo |
Language | C++ (G++ 4.6.4) |
Score | 20 |
Code Size | 3857 Byte |
Status | AC |
Exec Time | 1812 ms |
Memory | 129568 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 20 / 20 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt |
All | subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 34 ms | 1076 KB |
sample_02.txt | AC | 31 ms | 1604 KB |
subtask1_01.txt | AC | 30 ms | 1080 KB |
subtask1_02.txt | AC | 33 ms | 1136 KB |
subtask1_03.txt | AC | 27 ms | 1140 KB |
subtask1_04.txt | AC | 29 ms | 1100 KB |
subtask1_05.txt | AC | 178 ms | 28232 KB |
subtask1_06.txt | AC | 204 ms | 27152 KB |
subtask1_07.txt | AC | 151 ms | 24244 KB |
subtask1_08.txt | AC | 135 ms | 9908 KB |
subtask1_09.txt | AC | 84 ms | 8816 KB |
subtask1_10.txt | AC | 45 ms | 3824 KB |
subtask1_11.txt | AC | 345 ms | 59084 KB |
subtask1_12.txt | AC | 1086 ms | 60316 KB |
subtask1_13.txt | AC | 421 ms | 91684 KB |
subtask1_14.txt | AC | 1157 ms | 85820 KB |
subtask1_15.txt | AC | 1077 ms | 79644 KB |
subtask1_16.txt | AC | 1088 ms | 80400 KB |
subtask1_17.txt | AC | 1812 ms | 129568 KB |
subtask1_18.txt | AC | 845 ms | 65132 KB |
subtask1_19.txt | AC | 1793 ms | 127632 KB |
subtask1_20.txt | AC | 1119 ms | 82448 KB |
subtask1_21.txt | AC | 510 ms | 129292 KB |
subtask1_22.txt | AC | 355 ms | 79504 KB |