45分求助!!

P1638 逛画展

在线等挺急的
by lwyznoip @ 2023-09-17 21:18:41


数组开大一点
by rhq2022 @ 2023-09-17 21:22:41


@[lwyznoip](/user/186546) 您的做法会超时,建议您用单调队列、二分或贪心完成此题。
by rhq2022 @ 2023-09-17 21:32:59


可是我在练双指针....
by lwyznoip @ 2023-09-17 21:50:55


双指针似乎也可以,~~只是我没这么写~~,且双指针似乎也不是您这么做的 @[lwyznoip](/user/186546)
by rhq2022 @ 2023-09-17 21:56:58


```cpp #include <bits/stdc++.h> using namespace std; long long n, m, t, ll, rr; long long a[1000005]; long long b[1000005]; long long ans = 0x3f3f3f3f; int main() { scanf ("%d%d", &n, &m); for (int i = 1; i <= n; i ++){ scanf ("%d", &a[i]); } int l = 1, r = 1, k = 1;b[a[l]] ++; while(l <= r && r <= n) { if(k == m) { if(ans > r-l+1) { ans = r-l+1; ll = l; rr = r; } b[a[l]] --; if(b[a[l]]==0){ k --; } l ++; } else{ r ++; b[a[r]] ++; if(b[a[r]]==1){ k ++; } } } cout << ll << ' ' << rr; } ``` @[lwyznoip](/user/186546) 双指针写出来辣
by rhq2022 @ 2023-09-17 22:08:26


太感谢了
by lwyznoip @ 2023-09-17 22:12:23


已经加关注了
by lwyznoip @ 2023-09-17 22:13:51


|