poj2777(线段树)
来源:互联网 发布:java中的集合框架 编辑:程序博客网 时间:2024/05/15 17:42
#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#define For(i,j,k) for(i=j;i<=k;++i)struct node{int l,r,s;}a[500000];int len,n,m,l,r,col,flag[40],sum;char c;void build(int t,int ll,int rr){a[t].l=ll;a[t].r=rr;a[t].s=1;if (ll==rr) return ;build(t*2,ll,(ll+rr)/2);build(t*2+1,(ll+rr)/2+1,rr);}int xg(int t){int mid;if (a[t].r<l||a[t].l>r) return a[t].s;if (a[t].l>=l&&a[t].r<=r) {a[t].s=col;return col;}mid=(l+r)/2;int x1=-2,x2=-2,tt;if (a[t].s!=-1) {a[t*2].s=a[t].s;a[t*2+1].s=a[t].s;}/*if (a[t].l<=mid&&a[t].mid>=l)*/x1=xg(t*2);/*if (a[t].(mid+1)<=r&&a[t].r>=(mid+1))*/x2=xg(t*2+1);if (x1==x2&&x1!=-1) {a[t].s=x1;return x1;}a[t].s=-1;return -1;}void cx(int t){if (a[t].r<l||a[t].l>r) return ;if (a[t].s==-1) {cx(t*2);cx(t*2+1);} else {flag[a[t].s]=1;}}int main(){//freopen("in.txt","r",stdin);int i,j;while (scanf("%d%d%d",&len,&n,&m)!=EOF) {build(1,1,len);For(i,1,m) {c=getchar();c=getchar();//For(j,1,17) printf("%d %d %d\n",a[j].l,a[j].r,a[j].s);//puts("");if (c=='C') {scanf("%d%d%d",&l,&r,&col);xg(1);} else {scanf("%d%d",&l,&r);memset(flag,0,sizeof(flag));cx(1);sum=0;For(j,0,n) sum+=flag[j];printf("%d\n",sum);}}}return 0;}
1 0
- 线段树模板 poj2777
- POJ2777---线段树
- 线段树-POJ2777
- POJ2777(线段树)
- poj2777线段树
- poj2777 线段树
- poj2777(线段树)
- POJ2777线段树....
- POJ2777线段树
- poj2777(线段树)
- POJ2777【线段树】
- POJ2777 Count Color 线段树
- 线段树典型例题--poj2777
- 【poj2777】【线段树】Count Color
- poj2777线段树+lazy思想
- poj2777(延迟更新+线段树)
- 线段树区间更新poj2777
- 线段树 POJ2777 && 一些体会
- Linux下Nginx的安装
- 策略模式
- JQ知识点2
- 韩国仁川机场乐天免税店买买买!
- 【C】C语言中的指针概述与内存使用
- poj2777(线段树)
- linux中断处理原理分析
- java/android 设计模式学习笔记(21)---备忘录模式
- Android源码50例汇总
- 如何利用业余时间快乐的赚钱
- 欢迎使用CSDN-markdown编辑器
- JQ知识点3
- UVALive 3565 Bit Compressor (搜索)
- java面试(jsp部分)