2016安徽省赛 - 木条染色 离散化+线段树
来源:互联网 发布:中建水务环保待遇知乎 编辑:程序博客网 时间:2024/06/10 09:46
水模板题当时脑袋短路连想都没想啊!!!
补题的时候居然因为一个条件打错超时好几发,太弱太傻比了
离散化敲了很长时间还是要加油啊
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define lson i<<1#define rson (i<<1)+1int maxn,t,n,m;int va[500000];int ha[1000005],pre,pre2;struct node{ int x,y;}b[100005];int a[100005];void build(int i,int l,int r){ va[i] = 1; if(l==r)return; build(lson,l,(l+r)/2); build(rson,(l+r)/2+1,r);}inline void pushUp(int i){ if(va[lson]==va[rson])va[i] = va[lson]; else va[i] = -1;}inline void pushDown(int i){ va[lson] = va[i]; va[rson] = va[i];}void update(int i,int l,int r,int L,int R){ if(l==L&&r==R) { va[i] = 0; return ; } if(va[i]!=-1)pushDown(i); if(R<=(l+r)/2)update(lson,l,(l+r)/2,L,R); else if(L>=(l+r)/2+1)update(rson,(l+r)/2+1,r,L,R); else { update(lson,l,(l+r)/2,L,(l+r)/2); update(rson,(l+r)/2+1,r,(l+r)/2+1,R); } pushUp(i);}int query(int i,int l,int r,int L,int R){ if(va[i]!=-1) { return va[i]; } if(R<=(l+r)/2)return query(lson,l,(l+r)/2,L,R); else if(L>=(l+r)/2+1)return query(rson,(l+r)/2+1,r,L,R); else return query(lson,l,(l+r)/2,L,(l+r)/2) + query(rson,(l+r)/2+1,r,(l+r)/2+1,R);}inline void init(){ pre = 2; sort(a,a+2*n); ha[a[0]] = pre; for(int i=1;i<2*n;i++) if(a[i]>a[i-1]) { pre+=2; ha[a[i]] = pre; } pre2 = 1; for(int i=max(a[0]-1,0);i<=a[2*n-1]+2;i++) if(ha[i]) { pre2 = ha[i]+1; } else ha[i] = pre2;}int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { scanf("%d%d",&a[i*2],&a[i*2+1]); b[i].x = a[i*2]; b[i].y = a[i*2+1]; } init(); build(1,1,pre2); for(int i=0;i<n;i++) update(1,1,pre2,ha[b[i].x],ha[b[i].y]); for(int i=0;i<m;i++) { int c,d; c = max(c,max(0,a[0]-1)); d = min(a[2*i-1]+2,d); scanf("%d%d",&c,&d); printf("%d\n",query(1,1,pre2,ha[c],ha[d])); } for(int i=max(a[0]-1,0);i<=a[2*n-1]+2;i++) ha[i] = 0; if(t!=0)printf("\n"); } return 0;}
0 0
- 2016安徽省赛 - 木条染色 离散化+线段树
- 安徽省2016“京胜杯”程序设计大赛_G_木条染色
- POJ 2528 离散化+线段树染色
- poj2528(线段树区间染色+离散化)
- 【离散化 && 线段树 && 染色】POJ
- poj2528 线段树 区间更新+染色+离散化
- POJ 2528-posters(线段树区间染色+离散化)
- Mayor's posters 离散化+线段树染色
- POJ2528 Mayor's posters(线段树+离散化+染色)
- poj2528(线段树离散染色)
- zoj2301||hdu1199(线段树染色+离散)
- poj 2528 离散化+线段树 hdu 1698 线段树 线段树题目类型一:染色计数 外加离散化
- poj 2528 Mayor's posters(线段树,离散化,成段更新染色)
- zoj 2301 Color the Ball(区间染色,线段树+离散化)
- (重温)poj 2528 Mayor's posters 线段树 染色+离散化
- poj 2528 Mayor's posters(线段树+离散化,染色)
- hdu 1199 Color the ball(线段树离散化区间染色)
- POJ 2528-Mayor's posters(线段树区间染色+离散化)
- volley+Express实现简单的客户端服务器通信
- 并查集 最大集合并且按顺序输出集合内元素。
- 约束的传播
- C语言之精华总结
- hdu1058
- 2016安徽省赛 - 木条染色 离散化+线段树
- POJ1007 DNA Sorting
- Launch Sublime Text 3 from the command line
- LeetCode 11 Container With Most Water
- jquery制作登陆loading加载页面效果
- 8bit数据的指定位的置0或者置1操作
- 模拟题,但是看输入那块,才是坑点
- 20160530
- PHP异常类