hdu 4614——Vases and Flowers

來源:互聯網
上載者:User

線段樹

線段樹太渣了,看別人代碼惡補下。http://www.cnblogs.com/aukle/archive/2013/07/26/3217639.html

#include<iostream>#include<cstdio>using namespace std;#define maxn 50010#define ls (rt<<1)#define rs (rt<<1|1)#define mid ((t[rt].l+t[rt].r)>>1)//注意加括弧!! int n,m;struct tree{    int l,r;    int sum;    int lazy;}t[maxn<<2];void pushup(int rt){t[rt].sum=t[ls].sum+t[rs].sum;}void pushdown(int rt){if(t[rt].lazy==0){t[rt].lazy=-1;t[ls].sum=0;t[rs].sum=0;t[ls].lazy=0;t[rs].lazy=0;}else if(t[rt].lazy==1){t[rt].lazy=-1;t[ls].sum=t[ls].r-t[ls].l+1;t[rs].sum=t[rs].r-t[rs].l+1;t[ls].lazy=1;t[rs].lazy=1;}}void build(int rt,int l,int r){t[rt].sum=1,t[rt].l=l,t[rt].r=r,t[rt].lazy=-1;if(l==r)return;build(ls,l,mid);build(rs,mid+1,r);pushup(rt);}int query(int rt,int l,int r){if(t[rt].l==l&&t[rt].r==r)return t[rt].sum;pushdown(rt);if(l>mid)return query(rs,l,r);elseif(r<=mid)return query(ls,l,r);elsereturn query(ls,l,mid)+query(rs,mid+1,r);}void change(int rt,int l,int r,int val){if(t[rt].l==l&&t[rt].r==r){if(val==0)t[rt].sum=0;elset[rt].sum=r-l+1;t[rt].lazy=val;return ;}pushdown(rt);if(l>mid)change(rs,l,r,val);elseif(r<=mid)change(ls,l,r,val);elsechange(ls,l,mid,val),change(rs,mid+1,r,val);pushup(rt);}int main(){int t;int x,a,b;cin>>t;while(t--){scanf("%d%d",&n,&m);build(1,0,n-1);while(m--){scanf("%d%d%d",&x,&a,&b);if(x==1){int sum=query(1,a,n-1);if(sum==0)printf("Can not put any one.\n");else{if(sum<b)b=sum;int s,e;int l=a,r=n-1;int m;while(l<=r){m=(l+r)>>1;if(query(1,a,m)>=1){s=m;r=m-1;}elsel=m+1;}l=a,r=n-1;while(l<=r){m=(l+r)>>1;if(query(1,a,m)>=b){e=m;r=m-1;}elsel=m+1;}change(1,s,e,0);printf("%d %d\n",s,e);}}else{printf("%d\n",b-a+1-query(1,a,b));change(1,a,b,1);}}printf("\n");}return 0;} 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.