HDU 3577 Fast Arrangement 线段树 区间更新
2014-06-21 13:03
459 查看
原题链接
题意:一辆列车只能同时坐K个人 ,Q个人购票从a站到b站,输出成功购得票的人数;
因为 是在 b站下车所以更新操作就只要从 a -- b-1 就行了。
查询只要查区间的最值 只要最值小于k 顾客就可以成功购票;(渣渣还算和值balabala
)
题意:一辆列车只能同时坐K个人 ,Q个人购票从a站到b站,输出成功购得票的人数;
因为 是在 b站下车所以更新操作就只要从 a -- b-1 就行了。
查询只要查区间的最值 只要最值小于k 顾客就可以成功购票;(渣渣还算和值balabala
)
#include<stdio.h> #include<string.h> #include<math.h> #define lson l , m ,rt<<1 #define rson m+1, r ,rt<<1|1 const int maxn =1006000; int sum[maxn<<2],n; int col[maxn<<2],flag,c[100010]; int max(int a,int b){ return a>b?a:b; } void pushup(int rt){ sum[rt]=max(sum[rt<<1],sum[rt<<1|1]); } void pushdown(int rt){ if(col[rt]){ sum[rt<<1]+=col[rt]; sum[rt<<1|1]+=col[rt]; col[rt<<1]+=col[rt]; col[rt<<1|1]+=col[rt]; col[rt]=0; } } void update(int L,int R ,int add,int l,int r,int rt){ if(L<=l&&r<=R){ col[rt]+=add; sum[rt]+=add; return; } pushdown(rt); int m=(l+r)>>1; if(L<=m) update(L,R,add,lson); if(R>m) update(L,R,add,rson); pushup(rt); } int query(int L,int R,int l,int r,int rt){ if(L<=l&&r<=R){ return sum[rt]; } pushdown(rt); int m=(l+r)>>1, ret=0; if(L<=m) ret=max(ret,query(L,R,lson)); if(R>m) ret=max(ret,query(L,R,rson)); return ret; } int main() { int t,cas=1; scanf("%d",&t); while(t--){ int q,i,j=0,s,t; memset(sum,0,sizeof(sum)); memset(col,0,sizeof(col)); scanf("%d%d",&n,&q); for(i=0;i<q;i++){ scanf("%d %d",&s,&t); t--; if(query(s,t,1,1000000,1)<n){ update(s,t,1,1,1000000,1); c[j++]=i+1; } } printf("Case %d:\n",cas++); for(i=0;i<j;i++) printf("%d ",c[i]); printf("\n\n"); } return 0; }
相关文章推荐
- HDU 3577 Fast Arrangement (线段树区间更新)
- HDU 3577 Fast Arrangement 线段树 区间更新
- HDU 3577 Fast Arrangement(线段树功能:区间更新,查询区间的最大覆盖次数)
- HDU 3577 Fast Arrangement ( 线段树 成段更新 区间最值 区间最大覆盖次数 )
- HDU-3577-Fast Arrangement-区间更新
- HDU-3577-Fast Arrangement-区间更新
- HDU - 3577 Fast Arrangement (线段树区间修改及查询模板题)
- hdu 3577 Fast Arrangement(区间更新)
- HDU 3577 线段树区间更新
- hdu 3577(线段树区间更新)
- hdu 3577 Fast Arrangement(线段树)
- HDU3577:Fast Arrangement(线段树区间更新+lazy)
- HDU - 3577 Fast Arrangement 线段树
- HDU 3577 Fast Arrangement(区间覆盖+单点查询)
- HDU 3577 Fast Arrangement(线段树)
- hdu 3874 Necklace 线段树单点更新区间求和
- hdu 1698(区间更新线段树)Just a Hook
- hdu 1698 Just a Hook(线段树-区间更新)
- 线段树 hdu 1754 I Hate It 单点更新 区间求最值
- HDU 3308【线段树-query:区间最长单调上升序列,update:结点更新,区间合并】