QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#677812#9489. 0100 InsertionaaaaaTL 1ms5980kbC++231.5kb2024-10-26 13:28:242024-10-26 13:28:24

Judging History

你现在查看的是最新测评结果

  • [2024-10-26 13:28:24]
  • 评测
  • 测评结果:TL
  • 用时:1ms
  • 内存:5980kb
  • [2024-10-26 13:28:24]
  • 提交

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
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:


result: