HDU 5200 Trees 离线+链表维护.
来源:互联网 发布:淘宝客服售后问题 编辑:程序博客网 时间:2024/04/19 13:02
HDU 5200
题意:给出长度为n的序列a,Q个独立的操作:将序列中小于等于q[i]的数都删除(可以看作-1).
当序列中两个数x,y之间无-1存在 则x,y是属于同一组. 问每次操作后序列被分为多少组?
n,Q<=5e4,0<=a[i],q[i]<=1e9.
首先离线处理 按q[i]从小到到处理 设置另外一个排好序的序列b(二元组 记录val和pos).
然后用链表把序列a给串起来.每次询问从序列b中取出位置pos进行删除.
若pos前面和后面是编号相差2 则分组增加
若pos前面和后面 都和pos编号相差大于1,则说明pos是单独一个,此时分组减小.
题意:给出长度为n的序列a,Q个独立的操作:将序列中小于等于q[i]的数都删除(可以看作-1).
当序列中两个数x,y之间无-1存在 则x,y是属于同一组. 问每次操作后序列被分为多少组?
n,Q<=5e4,0<=a[i],q[i]<=1e9.
首先离线处理 按q[i]从小到到处理 设置另外一个排好序的序列b(二元组 记录val和pos).
然后用链表把序列a给串起来.每次询问从序列b中取出位置pos进行删除.
若pos前面和后面是编号相差2 则分组增加
若pos前面和后面 都和pos编号相差大于1,则说明pos是单独一个,此时分组减小.
(其实不需要用链表 直接标记该位置是否被删除 然后取pos的前后如上讨论一下即可.)
#include <bits/stdc++.h>using namespace std;typedef pair<int,int> ii;const int N=2e5+5;struct node{ int val,id;}q[N],b[N];bool cmp(node a,node b){return a.val<b.val;}int n,Q,a[N],nxt[N],last[N],ans[N];void solve(){ int j=1,res=1; for(int i=1;i<=Q;i++) { while(j<=n&&b[j].val<=q[i].val) { int pos=b[j].id; int p1=last[pos],p2=nxt[pos]; if(p2-p1==2&&p1!=0&&p2!=n+1) res++; else if((p1==0||pos-p1>1)&&(p2-pos>1||p2==n+1)) res--; last[p2]=p1; nxt[p1]=p2; j++; } ans[q[i].id]=res; } for(int i=1;i<=Q;i++) printf("%d\n",ans[i]);}int main(){ while(cin>>n>>Q) { nxt[0]=1,last[n+1]=n; for(int i=1;i<=n;i++) { scanf("%d",&a[i]),b[i].val=a[i],b[i].id=i; nxt[i]=i+1; last[i]=i-1; } sort(b+1,b+1+n,cmp); for(int i=1;i<=Q;i++) scanf("%d",&q[i].val),q[i].id=i; sort(q+1,q+1+Q,cmp); solve(); } return 0;}
阅读全文
0 0
- HDU 5200 Trees 离线+链表维护.
- HDU 5200 - Trees (离线 + 思维)
- hdu 5200 trees(离线处理)
- Hdu 5200 Trees (离线线段树)
- hdu 5200 Trees(离线处理,排序)
- HDU 5200 Trees(线段树 离线应用)经典
- hdu 4368 树状数组 离线维护
- HDU 5200 Trees
- hdu 5200 Trees
- HDU 5029 Relief grain 树链剖分+线段树离线维护
- hdu 5200(离线处理)
- HDU5200 Trees (离线处理)
- HDU - 5200 - Trees (upper_bound)
- hdu 5200 离线处理+思维
- HDU 5200/BC 36 C Trees
- HDU 4638 多校第四场1007 离线询问,树状数组||线段树维护
- hdu 4638 Group(线段树,离线维护左边界,4级)
- HDU 5333 Undirected Graph 离线 LCT维护最大生成树+树状数组
- 系统权限管理设计
- Queryrunner类的使用
- POJ 2453 An Easy Problem G++
- 外星人入侵笔记
- 网易云热门歌曲歌单爬虫
- HDU 5200 Trees 离线+链表维护.
- HDU
- 连续第二天总结
- hdu1081 To The Max 【动态规划】【最大子矩阵】
- 关于SVD的应用详解
- 图像腐蚀,模糊,canny边缘检测,opencv中摄像头捕捉的图像
- [POJ 3310][树的直径]Caterpillar
- CSS实现三角形
- mac环境下搭建hexo+github pages+next个人博客