【NOIP模拟】成绩调研
来源:互联网 发布:淘宝美工的后台 编辑:程序博客网 时间:2024/05/16 15:15
Description
Solution
这题明明是道水题,但是却不小心打错了。
做法大致是每次搜到一个i,对于每个等级k,都找一个[x,y]满足[x~y,i]是合法的,然后用线段树求一下区间的交集就好了。
每次多找到一个a[i]是,左右区间本来都要向右移动的(如果已经有的话),但是我的右区间移动了,左区间却没有移动,而且我并没有考虑l=0的情况,以后要注意点啊,思维一定要谨慎。
这次又忘了开long long。
Code
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)using namespace std;typedef long long ll;const int maxn=500007;typedef long long ll;int i,j,k,n,m,a[maxn],zuo,you,ou,sz,sy;int x[maxn],y[maxn],c[maxn],hou[maxn],l[maxn],r[maxn],tou[maxn],tt[maxn];int yi[maxn],er[maxn],cc[maxn];bool bz[maxn],az[maxn];ll ans;int t[maxn*3][2];void change(int x,int l,int r,int y,int z,int bz){ int mid=(l+r)/2; if(l==r){t[x][bz]=z;return;} if(y<=mid)change(x*2,l,mid,y,z,bz); else change(x*2+1,mid+1,r,y,z,bz); t[x][0]=min(t[x*2][0],t[x*2+1][0]); t[x][1]=max(t[x*2][1],t[x*2+1][1]);}int main(){ freopen("survey.in","r",stdin); freopen("survey.out","w",stdout); scanf("%d%d",&n,&m); fo(i,1,n){ scanf("%d",&a[i]);l[i]=hou[a[i]],hou[a[i]]=i; } fo(i,1,m)tou[i]=n+1; fod(i,n,1)r[i]=tou[a[i]],tou[a[i]]=i; fo(i,1,m)tt[i]=tou[i],er[i]=n+1; fo(i,1,m){ change(1,1,m,i,tou[i],0); change(1,1,m,i,l[er[i]]+1,1); } fo(i,1,m){ scanf("%d%d",&x[i],&y[i]); if(!x[i])ou++; } fo(i,1,n){ c[a[i]]++;cc[a[i]]++; if(c[a[i]]==y[a[i]]&&!bz[a[i]]) er[a[i]]=tt[a[i]],bz[a[i]]=1,change(1,1,m,a[i],l[er[a[i]]]+1,1); if(c[a[i]]==x[a[i]]&&!az[a[i]])az[a[i]]=1,ou++; if(c[a[i]]>y[a[i]]){ c[a[i]]--; er[a[i]]=r[er[a[i]]]; change(1,1,m,a[i],l[er[a[i]]]+1,1); } if(cc[a[i]]>x[a[i]]){ cc[a[i]]--; if(!x[a[i]])tou[a[i]]=n; else tou[a[i]]=r[tou[a[i]]]; change(1,1,m,a[i],tou[a[i]],0); } if(ou!=m)continue; if(t[1][1]>t[1][0])continue; ans+=(t[1][0]-t[1][1]+1); } printf("%lld\n",ans);}
2 0
- 【NOIP模拟】成绩调研
- NOIP提高组【JZOJ4804】成绩调研
- 成绩调研
- 【JZOJ4804】【NOIP2016提高A组模拟9.28】成绩调研
- 07年NOIp模拟赛by Matrix67 比赛成绩公布
- Noip模拟
- 日常训练20161014 成绩调研
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 【NOIP模拟】 20151006模拟
- 【NOIP模拟】 20151007模拟
- 【NOIP模拟】20151014模拟
- 【NOIP模拟】20151015模拟
- 【NOIP 2017普及组】 成绩
- 模拟player成绩统计
- 【09 NOIP 模拟】light
- [NOIP模拟]Day1
- 8.9CH NOIP模拟
- 大端序、小端序、网络序
- 如何离线发布百度地图
- HttpURLConnection上传图片到服务器
- mysql怎么创建可以定时执行任务的过程语句存储过程定时执行sql
- Spine在unity里的使用
- 【NOIP模拟】成绩调研
- Android动画效果
- Java中的信号量Semaphore
- iOS——使用XCode模仿网络环境
- VS2010配置连接远程数据库的字符串
- centos6.5环境利用scp实现自动化文件备份
- Weli的Android学习日记 0.2Shape探究
- table布局写出小样式
- 第31个python程序:逻辑判断