随笔分类 -  ACM_线段树/树状数组

摘要:题目链接:http://codeforces.com/contest/610/problem/D 就是给你宽度为1的n个线段,然你求总共有多少单位的长度。 相当于用线段树求面积并,只不过宽为1,注意y和x的最大都要+1,这样才相当于求面积。 阅读全文
posted @ 2016-04-27 23:26 Recoder 阅读(171) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1151 题意是平面上给你n个矩形,让你求矩形的面积并。 首先学一下什么是扫描线:http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html 这是别人的blog, 阅读全文
posted @ 2016-04-25 20:18 Recoder 阅读(208) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3321 给你n个点,n-1条边,1为根节点。给你m条操作,C操作是将x点变反(1变0,0变1),Q操作是询问x节点以及它子树的值之和。初始所有的节点为1。 用DFS序的方法将以1为根节点DFS遍历所有的节点,L[i]表示i点出现的最早的 阅读全文
posted @ 2016-04-18 17:52 Recoder 阅读(177) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2481 给你n个区间,让你求每个区间被真包含的区间个数有多少,注意是真包含,所以要是两个区间的x y都相同就算0。(类似poj3067,cf652D) 对每个区间的x从小到大排序,相同的话按y从大到小排序。然后对枚举每个区间的y求其逆序 阅读全文
posted @ 2016-04-18 15:50 Recoder 阅读(243) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3067 题意是:日本有N个城市在东边,从北至南编号为1 2 3,,,N,M个城市在西边,从北至南编号为1 2 ,,,,M,K条高速公路将被建造,高速公路的一端在西边,一端在东边;问高速公路的交点有多少个,不包括城市的端点。 先把x按从小 阅读全文
posted @ 2016-04-18 14:46 Recoder 阅读(193) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/438/D 给你n个数,m个操作,1操作是查询l到r之间的和,2操作是将l到r之间大于等于x的数xor于x,3操作是将下标为k的数变为x。 注意成段更新的时候,遇到一个区间的最大值还小于x的话就停止更新。 阅读全文
posted @ 2016-04-10 12:18 Recoder 阅读(215) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/242/E 给你n个数,m个操作,操作1是查询l到r之间的和,操作2是将l到r之间的每个数xor与x。 这题是线段树成段更新,但是不能直接更新,不然只能一个数一个数更新。这样只能把每个数存到一个数组中,长度大 阅读全文
posted @ 2016-04-08 22:48 Recoder 阅读(150) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974 给你T组数据,n个节点,n-1对关系,右边的是左边的父节点,所有的值初始化为-1,然后给你q个操作: 有两种操作: 操作一:T X Y ,将以X为根的子树上的所有节点都变成Y。 操作二:C X,查 阅读全文
posted @ 2016-04-06 16:00 Recoder 阅读(508) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作。画板初始化为颜色1。操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的颜色有几种。 很明显的线段树成段更新,但是查询却不好弄。经过提醒,发现颜色的种类最多不超过30种,所 阅读全文
posted @ 2016-04-05 22:26 Recoder 阅读(233) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 题意不好理解,给你数字k表示这里车最多同时坐k个人,然后有q个询问,每个询问是每个人的上车和下车时间,每个人按次序上车,问哪些人能上车输出他们的序号。 这题用线段树的成段更新,把每个人的上下车时间 阅读全文
posted @ 2016-04-05 13:48 Recoder 阅读(500) 评论(1) 推荐(1)
摘要:题目链接:http://poj.org/problem?id=2528 给你n块木板,每块木板有起始和终点,按顺序放置,问最终能看到几块木板。 很明显的线段树区间更新问题,每次放置木板就更新区间里的值。由于l和r范围比较大,内存就不够了,所以就用离散化的技巧 比如将1 4化为1 2,范围缩小,但是不 阅读全文
posted @ 2016-04-04 21:53 Recoder 阅读(161) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3468 题意就是给你一组数据,成段累加,成段查询。 很久之前做的,复习了一下成段更新,就是在单点更新基础上多了一个懒惰标记变量。updata的时候刚好在(l==T[p].l && r==T[p].r)的时候不更新下去,暂时用一个懒惰变量 阅读全文
posted @ 2016-04-04 19:36 Recoder 阅读(185) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2828 题意就是给你n个人,然后每个人按顺序插队,问你最终的顺序是怎么样的。 反过来做就很容易了,从最后一个人开始推,最后一个人位置很容易就确定了,那最后第二个人的位置也可以推(与最后一个人的位置无关)...依次就都可以确定所有的人了。 阅读全文
posted @ 2016-04-04 16:34 Recoder 阅读(213) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题目大意:有一块h*w的矩形广告板,要往上面贴广告; 然后给n个1*wi的广告,要求把广告贴上去; 而且要求广告要尽量往上贴并且尽量靠左; 求每个广告的所在的位置,不能贴则为-1。 用线段树模拟, 阅读全文
posted @ 2016-04-04 14:26 Recoder 阅读(203) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目让你求一个数组,这个数组可以不断把最前面的元素移到最后,让你求其中某个数组中的逆序对最小是多少。 一开始就求原来初始数组的逆序对,树状数组求或者归并方法求(可以看《挑战程序设计》P178),然 阅读全文
posted @ 2016-04-04 13:50 Recoder 阅读(300) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/652/D 给你n个不同的区间,L或者R不会出现相同的数字,问你每一个区间包含多少个区间。 我是先把每个区间看作整体,按照R从小到大排序。然后从最小的R开始枚举每个区间,要是枚举到这个区间L的时候,计算之前枚 阅读全文
posted @ 2016-03-26 18:48 Recoder 阅读(220) 评论(0) 推荐(0)
摘要:树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值. 理论上用BIT(树状数组)能解决的问题 ,线段树都可以解决 , 但是明显前者的代码量少. 阅读全文
posted @ 2015-09-29 22:09 Recoder 阅读(180) 评论(0) 推荐(0)