题意: 给你一个字符串, 然后m次区间查询,求出区间有多少组 str【i】 == str【i+1】
就是一个水DP了 有则Dp【i】 = Dp【i-1】 无则 Dp【i】 = Dp【i-1】;
(刚开始理解错题意,以为要查询区间次数最多的频数, 还RMQ WA了。。。http://www.cnblogs.com/aoxuets/p/4792907.html, 查找次数的。。)
#include<bits/stdc++.h> using namespace std; const int maxn = 1e5 + 131; char str[maxn]; int Dp[maxn]; int main() { int m, l, r; cin >> str+1; int len = strlen(str+1); memset(Dp,0,sizeof(Dp)); for(int i = 1; i <= len; ++i) if(str[i] == str[i-1]) Dp[i] = Dp[i-1] + 1; else Dp[i] = Dp[i-1]; cin >> m; while(m --) { cin >> l >> r; cout << Dp[r] - Dp[l] <<endl; } }