main.cc 758 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include <cstdio>
  2. #include <cstring>
  3. using namespace std;
  4. const int N = 100000;
  5. const int Q = 100000;
  6. int sum[N + 1][26];
  7. char str[N + 1];
  8. int main() {
  9. int T;
  10. scanf("%d", &T);
  11. for (int t = 1; t <= T; t++) {
  12. int n, q;
  13. scanf("%d %d", &n, &q);
  14. scanf("%s", str);
  15. memset(sum, 0, sizeof(sum));
  16. for (int i = 0; i < n; i++) {
  17. for (int j = 0; j < 26; j++) sum[i + 1][j] = sum[i][j];
  18. int ch = str[i] - 'A';
  19. sum[i + 1][ch]++;
  20. }
  21. int cnt = 0;
  22. for (int i = 0, l, r; i < q; i++) {
  23. scanf("%d %d", &l, &r);
  24. int odd = 0;
  25. for (int j = 0; j < 26; j++)
  26. if (((sum[r][j] - sum[l - 1][j]) & 1) != 0) odd++;
  27. if (odd <= 1) cnt++;
  28. }
  29. printf("Case #%d: %d\n", t, cnt);
  30. }
  31. return 0;
  32. }