CF E. Till I Collapse 整体二分+根号分治
Posted guangheli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF E. Till I Collapse 整体二分+根号分治相关的知识,希望对你有一定的参考价值。
本来模拟赛想出这个来的,但是感觉不太友好啊~
主席树可以直接屎过去,但是空间消耗很大.
考虑用整体二分:
code:
#include <bits/stdc++.h> #define N 100003 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; int A[N],C[N],ans[N],n; int solve(int x) int cur=0,ans=0,ls=0,i,j,rt=0; memset(C,0,sizeof(C)); for(i=1;i<=n;++i) ++C[A[i]]; if(C[A[i]]==1) ++rt; if(rt>x) --i; for(j=ls;j<=i+1;++j) C[A[j]]--; rt=0,ls=i+1,++ans; ++ans; return ans; void div_con(int l,int r) int L=solve(l), R=solve(r); if(L==R) for(int j=l;j<=r;++j) ans[j]=L; else int mid=(l+r)>>1; div_con(l,mid), div_con(mid+1,r); int main() int i,j; // setIO("input"); scanf("%d",&n); for(i=1;i<=n;++i) scanf("%d",&A[i]); for(i=1;i*i<=n;++i) ans[i]=solve(i); div_con(i, n); for(i=1;i<=n;++i) printf("%d ",ans[i]); return 0;
以上是关于CF E. Till I Collapse 整体二分+根号分治的主要内容,如果未能解决你的问题,请参考以下文章