线段树
laziercs
这个作者很懒,什么都没留下…
展开
-
2012 ACM/ICPC Asia Regional Online Warmup-1006
/*这题是一个线段树的题,但是比赛的时候一直没出,后面赛后发现题意读错了(虽然在wa多次后,在Clarifications里面问了多次题意,还是搞错了,那个排列我还以为就是每次的目的点,后面才知道还要做一下映射,看来英语水品有待提高);解题思路就是用线段树维护一个区间里有多少个点被删掉了,然后就是从当前点到目的点顺时针查一次,逆时针差一次,看那一个更近就走哪一个方向,走目的点后把那个点dr原创 2012-08-28 19:26:42 · 547 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Changchun Online-1002
//http://acm.hdu.edu.cn/showproblem.php?pid=4268//一个想法题,赛前没做出来,后面听学长讲了下,是一个贪心,以其中一个维排序,后面对另一个维贪心,在那个维上找最接近的那一个就好了,找的时候维护一颗线段树,直接查找最近的那个就好了;//代码如下: #include#include#includeusing namespace原创 2012-09-08 20:44:00 · 670 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Changchun Online-1001
//一个线段树题,把k=1这种情况进行扩展,扩展到10就可以了; 代码如下: #include#includestruct node{ int d[11];}sum[210000];void build(int i,int l,int r){ int j,mid; for(j=1;j<=10;j++) sum[原创 2012-09-08 18:58:05 · 752 阅读 · 1 评论 -
2012 ACM/ICPC Asia Regional Chengdu Online-hdu 4288
//离线线段树上的子节点到父节点的状态转移,转移方程为:btree[i].sum[j]=btree[i//代码如下:#include #include #include #include using namespace std;#define N 100010struct tree{ __int64 sum[5]; int cnt;}btree[4*N]原创 2012-09-16 19:23:10 · 529 阅读 · 0 评论 -
hdu-4417-Super Mario
//一个考数据结构的题,我用线段树做的,先分层分区间排序,后面对目的区间的里的数二分找就是可以了,这个题型,在刘汝佳的题里面出现过,而且这里只需查找,不要更新,所以就更容易解了,这题解法有很多,划分树+二分,我想也能解吧;//线段树+二分代码如下:#include#includeusing namespace std;struct node{ int d[原创 2012-09-23 20:19:19 · 539 阅读 · 0 评论 -
hdu 1255 线段树的面积覆盖问题
/*以前没想到线段树还能这样用,阅读了胡浩大牛的解题报告,这个线段重叠的思想很巧妙,先把一个矩形拆成两条线段,记录每条线段的两个端点及它的高度,并标记此线段是在矩形的上边还是下边,在利用cnt[]数组记录这个x轴的区间段被这样的线段覆盖了几次,那么在这一题来说,覆盖两次以上既是我们要求的解,所以我们在节点上只要保存覆盖一次,和覆盖两次及两次以上的x长度就可以了,最后用所有x轴被覆盖的长度也就是原创 2012-10-17 13:01:17 · 688 阅读 · 0 评论 -
hdu 4419线段树覆盖面积
/*和胡浩大牛写的hdu 1255题的大体思路差不多,先把矩形线段化,在一个数轴上覆盖,再枚举另一个数轴求面积(再枚举之前先排好序),只不过这题的状态比较多,要把Pushup函数改一下,这里不仅仅是处理覆盖一次和多次的问题了,还要考虑颜色的重叠问题,处理的时候有点像容斥,用二进制的1,2,4表示r,g,b这样便于处理,最后覆盖过程就大体差不多了;代码如下:*/#include#原创 2012-10-18 13:07:00 · 623 阅读 · 0 评论