您的位置:首页 > 产品设计 > UI/UE

Codeforces Round #371 (Div. 2) C. Sonya and Queries (01trie树)

2016-09-14 12:48 656 查看

分析:

一看奇偶相互间隔,01trie树直接上,然后调试了整场…….最后Xcode单步调试才查出一个语句顺序错误,还是思维模型不真实。调试好之后只有30s提交wa5,然后发现数据是long long急忙改,还是没来得及,赛后把改了long

long的交了就过了。。。

还有本场终于上紫色了JIBANCANYANG

其实可以直接丢数组,因为218种不多。。。。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define pr(x) cout << #x << ": " << x << "  "
#define pl(x) cout << #x << ": " << x << endl;
const int maxn = 5000 + 13;

struct jibancanyang
{
int n;
bool G[maxn], f[maxn];

int getTimes(int k) {
int sum = 0, ret = 0;
for (int i = 0; i < n; ++i) {
if (i - k >= 0) sum -= f[i - k];
if (i <= n - k) {
if (sum % 2) {
if (!G[i]) f[i] = 0;
else f[i] = 1, ret++;
} else {
if (G[i]) f[i] = 0;
else f[i] = 1, ret++;
}
} else {
f[i] = 0;
if (!G[i] && sum % 2 == 0) return maxn;
if (G[i] && sum % 2) return maxn;
}
sum += f[i];
}
return ret;
}

void fun() {
while (cin >> n) {
for (int i = 0; i < n; ++i) {
char c;
cin >> c;
G[i] = c == 'B' ? 0 : 1;
}
int ans = maxn, K;
for (int k = 1; k <= n; ++k) {
int temp = getTimes(k);
if (temp < ans) ans = temp, K = k;
}
cout << K << " " << ans << endl;
}
}

}ac;

int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
#endif
ac.fun();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: