跳至内容
CVBB ACM Team
用户工具
注册
登录
站点工具
搜索
工具
显示页面
修订记录
Copy this page
导出 PDF
反向链接
最近更改
媒体管理器
网站地图
注册
登录
>
最近更改
媒体管理器
网站地图
您在这里:
front_page
»
2020-2021
»
teams
»
looking_up_at_the_starry_sky
»
我跑得很慢的代码
2020-2021:teams:looking_up_at_the_starry_sky:我跑得很慢的代码
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
<code cpp> #include<bits/stdc++.h> using namespace std; const int T=100009; const int maxn=200009; const int SIZE=500; const int B=34000; int n,m,Tn; int a[maxn]; int b[maxn]; bitset<T>f[B+9],now; int c[T]; int nn; struct Section{ int l,r,id; bool operator < (const Section &rhs) const{ if(l/SIZE==rhs.l/SIZE)return r<rhs.r; else return l<rhs.l; } }p[maxn]; void insert(int x){ now.set(x+c[x],1);++c[x]; } void delt(int x){ --c[x];now.set(x+c[x],0); } int l1[B+9],r1[B+9],l2[B+9],r2[B+9],l3[B+9],r3[B+9]; void solve(){ nn=0; for(int i=1;i<=m;++i){ p[++nn].l=l1[i];p[nn].r=r1[i];p[nn].id=i; p[++nn].l=l2[i];p[nn].r=r2[i];p[nn].id=i; p[++nn].l=l3[i];p[nn].r=r3[i];p[nn].id=i; } sort(p+1,p+1+nn); int L=1,R=0; memset(c,0,sizeof(c)); now.reset(); for(int i=1;i<=m;++i)f[i].set(); for(int i=1;i<=nn;++i){ while(R<p[i].r)insert(a[++R]); while(L>p[i].l)insert(a[--L]); while(R>p[i].r)delt(a[R--]); while(L<p[i].l)delt(a[L++]); f[p[i].id]&=now; } for(int i=1;i<=m;++i){ int siz=r1[i]-l1[i]+r2[i]-l2[i]+r3[i]-l3[i]+3-3*f[i].count(); printf("%d\n",siz); } } int main(){ scanf("%d%d",&n,&Tn); for(int i=1;i<=n;++i){ scanf("%d",&a[i]);b[i]=a[i]; } sort(b+1,b+1+n); for(int i=1;i<=n;++i)a[i]=lower_bound(b+1,b+1+n,a[i])-b; while(Tn--){ ++m; scanf("%d%d%d%d%d%d",&l1[m],&r1[m],&l2[m],&r2[m],&l3[m],&r3[m]); if(m==B){ solve(); m=0; } } if(m)solve(); return 0; } </code>
2020-2021/teams/looking_up_at_the_starry_sky/我跑得很慢的代码.txt
· 最后更改: 2020/05/15 22:51 由
zzy
页面工具
显示页面
修订记录
反向链接
Copy this page
导出 PDF
回到顶部