#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int N = 1000000 + 10;
int change_counter[N];
int main()
{
string str;
int n, i, j;
int t = 1;
#ifndef ONLINE_JUDGE
freopen("d:\\OJ\\uva_in.txt", "r", stdin);
#endif
while (cin >> str) {
fill(change_counter, change_counter + N, 0);
for (int k = 1; k < str.length(); k++) {
if (str[k] != str[k - 1])
change_counter[k]++;
}
for (int k = 1; k < N; k++) {
change_counter[k] += change_counter[k - 1];
}
cout << "Case " << t++ << ":" << endl;
cin >> n;
while (n--) {
cin >> i >> j;
if (change_counter[i] == change_counter[j])
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}
return 0;
} UVa10324 - Zeros and Ones
最新推荐文章于 2026-06-14 15:21:32 发布
本文介绍了一种用于计算字符串中相邻字符变化次数的算法,并利用这些变化次数来判断不同子串间是否仅由相同字符组成。该算法首先遍历整个字符串,记录下每个位置上的字符变化情况,然后通过累积求和的方式快速查询任意两个位置之间的变化次数,以此来确定这两段子串是否完全一致。

287

被折叠的 条评论
为什么被折叠?



