-
313-B, *1100코드포스 2021. 7. 23. 15:44
Problem - 313B - Codeforces
codeforces.com
문제
- 문자열 s=s1s2⋅⋅⋅sn, (2≤n≤105)에 대해
- si=si+1인 i∈[l, r)의 개수를 m(1≤m≤105)번 출력
- O(nlog n) 알고리즘은 통과할 수 있다
O(n)
prefix sum 을 이용한다
12345678910111213141516171819202122232425#include <bits/stdc++.h>#define endl "\n"using namespace std;string s;int prefix_sum[100001] {};int main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);getline(cin, s);for(int i = 1; i <= s.length(); i++) prefix_sum[i] = prefix_sum[i-1] + (int)(s[i-1] == s[i]);int m;cin >> m;int l, r;while(m--){cin >> l >> r;cout << prefix_sum[r-1] - prefix_sum[l-1] << endl;}return 0;}cs'코드포스' 카테고리의 다른 글
1335-C, *1100 (0) 2021.07.23 368-B, *1100 (0) 2021.07.23 456-A, *1100 (0) 2021.07.23 519-B, *1100 (0) 2021.07.23 363-B, *1100 (0) 2021.07.22