QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#677812 | #9489. 0100 Insertion | aaaaa | TL | 1ms | 5980kb | C++23 | 1.5kb | 2024-10-26 13:28:24 | 2024-10-26 13:28:24 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define db double
#define pii pair<ll,ll>
#define pli pair<ll,ll>
#define vi vector<ll>
#define eb emplace_back
#define po pop_back
#define par __builtin_parity
#define pct __builtin_popcount
#define ctz __builtin_ctz
#define clz __builtin_clz
#define gcd __gcd
#define fi first
#define se second
#define mid ((l+r)/2)
/*
#include <bits/stdc++.h>
using namespace std;
#define db double
#define pii pair<ll,ll>
#define pli pair<ll,ll>
#define vi vector<ll>
#define eb emplace_back
#define po pop_back
#define par __builtin_parity
#define pct __builtin_popcount
#define ctz __builtin_ctz
#define clz __builtin_clz
#define gcd __gcd
#define fi first
#define se second
#define mid ((l+r)/2)
*/
typedef long long ll;
const ll N=505,MOD=998244353;
ll n,o,ans,dp[2][N*2][N][2];
string str;
map<ll, char> a;
void W(ll &x,ll y) {x+=y;if(x>=MOD) x-=MOD;}
void clear()
{
for(ll i=-n;i<=n;++i) for(ll j=0;j<=n;++j) for(ll k=0;k<2;++k)
dp[o][i+n][j][k]=0;
}
int main()
{
cin >> n;
cin >> str;
for (ll i=0; i<str.length(); i++) {
a[i+1] = str[i];
}
dp[o][n][0][0]=1;
for(ll i=n,t;i;--i)
{
o^=1;clear();
for(ll j=-n;j<=n;++j) for(ll k=0;k<=n;++k) for(ll l=0;l<2;++l)
{
t=dp[o^1][j+n][k][l];
if(a[i]!='1') W(dp[o][j+1+n][k+1][0],t);
if(a[i]!='0' && !l && j-3+n>=0 && k-3>=-1) W(dp[o][j-3+n][max(k-3,0LL)][1],t);
}
}
for(ll i=0;i<=n;++i) W(ans,dp[o][n][i][0]);
cout << ans << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5812kb
input:
8 0??0?100
output:
2
result:
ok "2"
Test #2:
score: 0
Accepted
time: 1ms
memory: 5616kb
input:
4 ?10?
output:
1
result:
ok "1"
Test #3:
score: 0
Accepted
time: 0ms
memory: 5980kb
input:
28 ???????????0???0??????1???0?
output:
2023
result:
ok "2023"
Test #4:
score: 0
Accepted
time: 1ms
memory: 5616kb
input:
4 ????
output:
1
result:
ok "1"
Test #5:
score: 0
Accepted
time: 1ms
memory: 5708kb
input:
8 11111111
output:
0
result:
ok "0"
Test #6:
score: -100
Time Limit Exceeded
input:
500 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...