1641A - Great Sequence
作者:互联网
首先,我们可以用 \(2^10=1024\) 的复杂度暴搜,然后再来判断当前这种情况的结束时刻。
现在我们通过爆搜获得了一个长度为 \(1010\) 的由 \(0、1\) 组成的字符串。然后维护两个数组 \(a、b,a_i\)维护的是 \(i\) 队在当前时刻进球数量之后最多进球的数量,\(b_i\) 维护的是 \(i\) 队在当前时刻已经进球的数量,显然当有一队的当前进球数量比另外一队的预测数量还要多的时候结束。
代码:
\(\Huge{栈一定要清空!}\)
\(\Huge{栈一定要清空!}\)
\(\Huge{栈一定要清空!}\)
#include <iostream>
using namespace std;
int n,ans = 11;
string s;
int stk[15],top = 0;
void dfs (int u) {
if (u > top) {
int a[2] = {5,5},b[2] = {0,0};
for (int i = 1;i <= 10;i++) {
int j = (i & 1);
if (s[i] == '0') a[j]--;
else b[j]++;
if (b[j] > a[j ^ 1] || b[j ^ 1] > a[j]) {
ans = min (ans,i);
break;
}
}
return ;
}
s[stk[u]] = '0';
dfs (u+1);
s[stk[u]] = '1';
dfs (u+1);
}
int main () {
cin >> n;
while (n--) {
ans = 10,top = 0;
cin >> s;
s = ' '+s;
for (int i = 1;i <= 10;i++) {
if (s[i] == '?') stk[++top] = i;
}
dfs (1);
cout << ans << endl;
}
return 0;
}
标签:Huge,Great,1641A,Sequence,int,top,dfs,进球,ans 来源: https://www.cnblogs.com/incra/p/16413118.html