I am trying to solve 165C using binary search, but it is getting TLE. Can anyone help?
Here's my code: 208389930
Code
# | User | Rating |
---|---|---|
1 | tourist | 3856 |
2 | jiangly | 3747 |
3 | orzdevinwang | 3706 |
4 | jqdai0815 | 3682 |
5 | ksun48 | 3591 |
6 | gamegame | 3477 |
7 | Benq | 3468 |
8 | Radewoosh | 3462 |
9 | ecnerwala | 3451 |
10 | heuristica | 3431 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | -is-this-fft- | 162 |
3 | Dominater069 | 160 |
4 | Um_nik | 158 |
5 | atcoder_official | 157 |
6 | Qingyu | 156 |
7 | adamant | 151 |
7 | djm03178 | 151 |
9 | luogu_official | 150 |
10 | awoo | 146 |
Needing help on 165C
I am trying to solve 165C using binary search, but it is getting TLE. Can anyone help?
Here's my code: 208389930
using namespace std; using ll = long long;
ll n, k; ll pre[100005]; string s;
ll bs1(ll lo){ ll l = lo, r = n, mid; while (l <= r){ mid = (l + r) / 2; if (pre[mid] — pre[lo-1] <= k){ l = mid + 1; } else { r = mid — 1; } } return r; }
ll bs2(ll lo){ ll l = lo, r = n, mid; while (l <= r){ mid = (l + r) / 2; if (pre[mid] — pre[lo-1] >= k){ r = mid — 1; } else { l = mid + 1; } } return l; }
signed main(){ ll i, res; cin >> k >> s; n = s.size(); s = " " + s; pre[0] = 0; for (i = 1; i <= n; i++){ pre[i] = pre[i-1] + s[i] — '0'; } res = 0; for (i = 1; i <= n; i++){ res += bs1(i) — bs2(i) + 1; } cout << res; }
Rev. | Lang. | By | When | Δ | Comment | |
---|---|---|---|---|---|---|
en3 |
![]() |
rpmdoestuff | 2023-06-04 09:41:57 | 48 | ||
en2 |
![]() |
rpmdoestuff | 2023-06-04 09:41:06 | 15 | ||
en1 |
![]() |
rpmdoestuff | 2023-06-04 09:37:13 | 1119 | Initial revision (published) |
Name |
---|