碼蹄集OJ-符號統計
MC0439?符號統計
難度:黃金
時間限制:1 秒
占用內存:256 M
收藏
報錯
在華容道放曹的緊張時刻,小碼哥接到了一個看似微不足道卻至關重要的任務:解讀一條僅由小寫英文字母組成的神秘字符串 s,這條字符串隱藏著敵軍的行軍路線和計劃。
字符串 s 長度為 n,小碼哥需要對它進行 q 次詢問,每次詢問包括兩個參數 l,r (l ≤ r),他必須迅速回答區間 s_l ~ s_r 中,有多少種字母出現次數為偶數,有多少種為奇數。這些信息對于破解敵軍的密碼至關重要,因為它們關系到敵軍的部署和動向。
格式
輸入格式:第一行兩個整數 n,q (1 < n,q ≤ 10?)。
第二行一個長度為 n 的字符串 s。
接下來 q 行,每行兩個整數 l,r (1 ≤ l ≤ r ≤ n)。
輸出格式:輸出 q 行,每行兩個整數 x,y,x 表示出現次數為偶數的字母數量,y 表示出現次數為奇數的字母數量。
樣例 1
輸入: 5 2
ababc
1 5
2 5
輸出: 25 1
24 2
備注
本題中小寫英文字母出現次數為 0 的,也算偶數。
代碼:
?
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int sum[N][30];
int n,q,x,y;
int main()
{cin >> n >> q;string s;cin >> s;s = " " + s;for(int i = 1 ; i <= n ; i++){for(int j = 0 ; j < 26 ; j++){sum[i][j] = sum[i-1][j];}sum[i][s[i] - 'a']++;}while(q--){int l,r;cin >> l >> r;int even = 0,odd = 0;for(int i = 0 ; i < 26 ; i++){int cnt = sum[r][i] - sum[l-1][i];if(cnt % 2 == 0)even++;elseodd++;}cout << even << " " << odd << '\n';}return 0;
}