hdu 4614 Vases and Flowers 线段树
来源:互联网 发布:航班延误 知乎 编辑:程序博客网 时间:2024/05/17 19:19
比赛最后40分钟写的,线段树加二分,思路写法完全没问题,但最后提交了2次都WA了,回来后发现是模板更新lazy把0当做更新过的了,但是应该是1
/*author:jxylang:C/C++university:China,Xidian University**If you need to reprint,please indicate the source***/#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#define maxn 100001using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int sum[maxn<<2],lazy[maxn<<2];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1]; return;}void pushdown(int rt,int len){ if(lazy[rt]>=0) { lazy[rt<<1]=lazy[rt<<1|1]=lazy[rt]; sum[rt<<1]=(len-(len>>1))*lazy[rt]; sum[rt<<1|1]=(len>>1)*lazy[rt]; lazy[rt]=-1; } return;}void update(int L,int R,int c,int l,int r,int rt){ if(L<=l&&R>=r) { lazy[rt]=c; sum[rt]=(r-l+1)*c; return; } pushdown(rt,r-l+1); int m=(l+r)>>1; if(L<=m)update(L,R,c,lson); if(R>m)update(L,R,c,rson); pushup(rt); return;}void build(int l,int r,int rt){ lazy[rt]=-1; if(l==r){sum[rt]=0;return;} int m=(l+r)>>1; build(lson);build(rson); pushup(rt);}long long query(int L,int R,int l,int r,int rt){ if(L<=l&&R>=r)return sum[rt]; long long ans=0; pushdown(rt,r-l+1); int m=(l+r)>>1; if(L<=m)ans+=query(L,R,lson); if(R>m)ans+=query(L,R,rson); return ans;}int main(){ int T; scanf("%d",&T); while(T--) { memset(sum,0,sizeof(sum)); memset(lazy,0,sizeof(lazy)); int len,q; scanf("%d%d",&len,&q); build(1,len,1); int k,a,b; while(q--) { scanf("%d%d%d",&k,&a,&b); a++;b++; if(k==1) { b--; int t; if((t=query(a,len,1,len,1))==len-a+1) { puts("Can not put any one."); continue; } int l=a,r=len,mid; b=min(b,len-a+1-t); while(l<r) { mid=(l+r)>>1; if(query(a,mid,1,len,1)==mid-a+1)l=mid+1; else r=mid; } printf("%d ",l-1); l=a;r=len; while(l<r) { mid=(l+r)>>1; if((mid-a+1-query(a,mid,1,len,1))>=b)r=mid; else l=mid+1; } printf("%d\n",r-1); update(a,l,1,1,len,1); } else { printf("%d\n",query(a,b,1,len,1)); update(a,b,0,1,len,1); } } puts(""); }}
- hdu 4614 Vases and Flowers 线段树
- hdu 4614 Vases and Flowers 线段树
- hdu 4614 Vases and Flowers(线段树)
- hdu-4614-Vases and Flowers-线段树
- 【HDU】4614 Vases and Flowers 线段树
- hdu 4614 Vases and Flowers 线段树
- hdu 4614 Vases and Flowers 线段树
- HDU 4614 Vases and Flowers (线段树)
- HDU 4614 Vases and Flowers 线段树
- hdu 4614 Vases and Flowers(线段树)
- HDU 4614 Vases and Flowers(线段树)#by zh
- hdu 4614 Vases and Flowers(线段树+二分)
- hdu 4614 Vases and Flowers (线段树+二分)
- hdu-4614Vases and Flowers 线段树区间赋值
- HDU 4614 Vases and Flowers 线段树区间更新
- hdu 4614 Vases and Flowers (二分 线段树)
- hdu 4614 Vases and Flowers 线段树+二分
- hdu 4614 Vases and Flowers (线段树打标记)
- UVA 537 Artificial Intelligence?
- mutable关键字
- 学习模式----观察者模式(3)
- RHN yum command: Unable to read consumer identity Warning and Solution
- 恩恩,一个想法,初步实现了它~就剩封装了
- hdu 4614 Vases and Flowers 线段树
- LCS(最长公共子序列问题)
- hdu 1874 畅通工程续 (dijkstra算法)
- 输入法钩子
- STL之set使用方法小结
- 结束和开始
- SecureCRT连接vm中的ubuntu
- UVA 409 Excuses, Excuses!
- C语言基础知识