首页 > TAG信息列表 > P1638
P1638 逛画展(尺取法)
https://www.luogu.com.cn/problem/P1638 #include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 1e6 + 10; int n,m; int a[maxn],b[maxn]; int l = 1, r= 1; int ans = maxn,k = 1; int ll,rr; signed main(){ //freopen("P1638 逛画展
显然数据只能nlogn以下。 其实O(n)就能做。 对于一个数,我们维护它最后出现的位置p [ ] 。那么对于L~R(假设已经达到m种画都有),R+1时,至少一个数的p会被更新。那么如果这个左端点在这个区间中还有一个,即 L < p [ a [ L ] ] ,那么这个L删掉是没有影响的,我们就让L++;否则L不变,P1638 逛画展(直尺法)
这道题是直尺法的模板题: #include<iostream>using namespace std;const int maxn = 1e6 + 5;const int M = 2e3 + 5;int n, m, a[maxn], vis[M];int main(){ cin >> n >> m; for (int i = 0; i < n; ++i)cin >> a[i]; int st = 0, en = 0, num