这道题用线段树做更方便更新和查询,但是其数据范围很大,因此要将离散化和线段树结合起来,算是一道比较经典的线段树+离散化的例题。线段树的离散化有很多方法,在这里,我先用一次结点离散化,间接将源左右端点离散化的想法实现。(受到一个博客的启发)
node tree[200001];booltag[200001];//标记有无lazyvoidmake_map(inti,int&m) {if(l[i].pos!=l[last].pos) { last=i; m++; }if(l[i].from<0) coordinate[-l[i].from-1][1]=m;elsecoordinate[l[i].from-1][0]=m; }voidlazy(intpos,intx) { tag[pos]=true; tree[pos].color=x;...
i.th line [u, v] 表示给区间 [u,v] 染上i色 问最后有几种颜色 区间范围很大,所以先离散化 注意区间更新的操作 #include <stdio.h> #include <string.h> #include <iostream> #include <math.h> #include <queue> #include <set> #define N 10100*2 #define ll int #define L(x) (x<<1) ...
POJ2528的另一种解法(线段切割) 题目:Mayor's posters 首先本题题意是:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度。现在往墙上贴N张海报,每张海报的宽度是任意 的,但是必定是单位宽度的整数倍,且<=1QW。后贴的海报若与先贴的海报有交集,后贴的海报必定会全部或局部覆盖先贴的海 报。现在给出每张...
http://poj/problem?id=2528 题目大意:题目大意: 在长度为10000000的墙上贴海报,海报的高度和墙的高度一样,不同的海报覆盖在不同的区域。如 果有重叠位置,则后面贴的海报会把之前贴的海报覆盖掉。问最终有几张海报可以看到? 分析与总结:分析与总结: ...
(1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)(2)静态二叉检索树. (poj2482,poj2352)(3...
poj1472,poj3371,poj1027,poj2706图算法差分约束系统的建立和求解第3周poj1201,poj2983,poj3159,poj1275,poj1364最小费用最大流poj2516, poj2195,poj3422双连通分量poj2942,poj3694强连通分支及其缩点poj2186,poj3592,poj3114图的割边和割点poj3352最小割模型poj3308,poj3155(偏难)数据结构线段树第3周poj2528,...
(poj2528,poj2828,poj2777,poj2886,poj2750) (2)静态二叉检索树. (poj2482,poj2352) (3)树状树组(poj1195,poj3321) (4)RMQ. (poj3264,poj3368) (5)并查集的高级应用. (poj1703,2492) (6)KMP算法. (poj1961,poj2406) 四.搜索 (1)最优化剪枝和可行性剪枝 (2)搜索的技巧和优化(poj3411,poj1724) ...
见代码。 1 /* 2 线段树+Lazy 3 题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度。 4 现在往墙上贴N张海报,每张海报的宽度是任意的,但是必定是单位宽度的整数倍,且 10 #include 11 #include 12 #include 13 #include 14 #inc