POJ2777 线段树(结构体指针)
来源:互联网 发布:男友一夜 知乎 编辑:程序博客网 时间:2024/06/10 01:15
#include<stdio.h> #include<stdlib.h> struct node{ int c,s,t; struct node *l,*r; node(){ c=1; l=NULL;r=NULL; } }; int a[31]; void create_tree(struct node *x){ int mid; struct node *p,*q; mid=(x->s+x->t)/2; if(x->t-x->s>1){ p=new node; p->s=x->s; p->t=mid; q=new node; q->s=mid; q->t=x->t; x->l=p;x->r=q; create_tree(p); create_tree(q); } } void draw(struct node *k,int x,int y,int z){ int mid=(k->s+k->t)/2; if(k->s==x && k->t==y){ k->c=z; return; }else if(y<=mid){ if(k->c!=-1){ k->l->c=k->c; k->r->c=k->c; } k->c=-1;draw(k->l,x,y,z); }else if(x>=mid){ if(k->c!=-1){ k->l->c=k->c; k->r->c=k->c; } k->c=-1; draw(k->r,x,y,z); }else{ if(k->c!=-1){ k->l->c=k->c; k->r->c=k->c; } k->c=-1; draw(k->l,x,mid,z); draw(k->r,mid,y,z); } } void cal_tree(struct node *k,int x,int y){ int mid=(k->s+k->t)/2; if(k->c!=-1){ a[k->c]=1; return; }else if(y<=mid){ cal_tree(k->l,x,y); }else if(x>=mid){ cal_tree(k->r,x,y); }else{ cal_tree(k->l,x,mid); cal_tree(k->r,mid,y); } } void dfs(struct node *k){printf("%d %d %d\n",k->s,k->t,k->c);if(k->l!=NULL)dfs(k->l);if(k->r!=NULL)dfs(k->r);} int main(){ struct node *h; int i,j,k,m,n,ans; char paint,tmp; int x,y,z; scanf("%d%d%d",&m,&k,&n); h=new node; h->s=0;h->t=m; create_tree(h); for(i=1;i<=n;i++){ tmp=getchar(); scanf("%c",&paint); if(paint=='C'){ scanf("%d%d%d",&x,&y,&z); if(x<y){ x--; draw(h,x,y,z); }else{ y--; draw(h,y,x,z); } }else{ scanf("%d%d",&x,&y); for(j=1;j<=k;j++)a[j]=0; ans=0; if(x<y){ x--; cal_tree(h,x,y); }else{ y--; cal_tree(h,y,x); } for(j=1;j<=k;j++)ans+=a[j]; printf("%d\n",ans); } } return 0; }
3 0
- POJ2777 线段树(结构体指针)
- POJ2777线段树(结构体指针实现)
- 线段树模板 poj2777
- POJ2777---线段树
- 线段树-POJ2777
- POJ2777(线段树)
- poj2777线段树
- poj2777 线段树
- poj2777(线段树)
- POJ2777线段树....
- POJ2777线段树
- poj2777(线段树)
- POJ2777【线段树】
- POJ2777 Count Color 线段树
- 线段树典型例题--poj2777
- 【poj2777】【线段树】Count Color
- poj2777线段树+lazy思想
- poj2777(延迟更新+线段树)
- 取(2堆)石子游戏(威佐夫博弈+hdu2177)
- Nginx之location
- Ubuntu Navicat for MySQL安装以及破解方案
- iOS开发中视图相关的小笔记:push、modal、popover、replace、custom
- poj2417 Discrete Logging(BSGS:Baby Step Giant Step)
- POJ2777 线段树(结构体指针)
- 排序算法(三)——插入排序及改进
- 利用uinavigattion实现简单的登陆界面
- [学习笔记]JavaScript基础
- Unity调用外接摄像头的实例代码(C#)
- 使用test 命令
- 8月5日的学习内容
- JavaWeb 过滤器
- 关于@property&@synthesize使用详解