
线段树
文章平均质量分 79
synapse7
这个作者很懒,什么都没留下…
展开
-
UVa 105 The Skyline Problem (想法题)
这题有个很巧的思路:离散化。什么意思呢?既然每栋大楼的高和左右边界都是整数,那么不妨把线段用一个个整点表示。既然最后只求一个轮廓,那么对每个横坐标,就记录纵坐标(高度)最大的点。最后从左到右扫描一遍,当高度发生变化时就输出。完整代码:原创 2013-11-10 12:34:08 · 5099 阅读 · 0 评论 -
LightOJ 1080 Binary Simulation (线段树&成段更新)
http://lightoj.com/volume_showproblem.php?problem=1080模板。/*0.484s,4312KB*/#include #include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1原创 2014-03-24 08:18:36 · 1446 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies? (高合成数&用线段树维护约瑟夫环)
http://poj.org/problem?id=2886思路:题目要求约数个数最大的数,此即高合成数的定义(也有人把它叫做反素数,但这种叫法是错的,实际上的反素数是指一个数及其回文数都是素数)。wiki:http://en.wikipedia.org/wiki/Highly_composite_numberOEIS:http://oeis.org/A002182然后原创 2014-02-19 00:07:36 · 1871 阅读 · 0 评论 -
树状数组、线段树模板(一)——单点更新 + HDU 1166 敌兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=1166此题考查RSQ(Range Sum Query)。模板如下:/*343ms,744KB*//*我们使用如下缩写:root--整棵树的根节点rt--当前区间的根节点l,r--区间左右端点m--区间的二等分点,注意m是落在左子区间的(右端点)lson,rson-原创 2013-07-26 00:21:10 · 1134 阅读 · 0 评论 -
POJ 2352 Stars (线段树&想法题)
http://poj.org/problem?id=2352每读一个点(x,y),先查询区间[0,x]上有多少个点,然后把位置x上星星的数目+1完整代码:/*470ms,696KB*/#include #define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1#define root 1, 3200原创 2014-02-18 14:28:02 · 898 阅读 · 0 评论 -
POJ 2777 Count Color (线段树&位运算)
Count ColorTime Limit: 1000MS Memory Limit: 65536KDescriptionChosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a原创 2013-07-26 11:28:58 · 1007 阅读 · 0 评论 -
线段树模板(二)——成段更新 + POJ 3468 A Simple Problem with Integers
http://poj.org/problem?id=3468/*2391ms,4508KB*/#include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1#define root 1, N, 1#define LL long l原创 2014-02-19 11:22:02 · 1035 阅读 · 0 评论 -
HDU 1698 Just a Hook (线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=1698/*843ms,2288KB*/#include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1#define root 1, n, 1co原创 2014-02-19 11:04:51 · 1093 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number (最小逆序对数&线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=1394每读一个数,先查询前面有多少比它大的数(在代码中我们是查询[x,n-1]范围内的数),然后将位置x的数+1把第一个数在序列末尾时,因为比x小的数(0~x-1)都在x前面了,所以逆序对数减少了x;因为比x大的数(x+1~n-1)都在x前面了,所以逆序对数增加了n-1-x。这样每次移动,逆序对数原创 2014-02-18 15:35:55 · 1735 阅读 · 0 评论 -
POJ 2828 Buy Tickets (想法题&后序插入&线段树下的二分查找)
http://poj.org/problem?id=2828真是一道神题,朱泽园神牛出的。首先用链表写的话常数太大(cache命中率太低了),会导致超时。那怎么做?注意到最后一个人的位置是确定的,再前一个人呢?他的位置即是空位的编号(对于第二组数据,倒数第二个人要在第1+1个空位,即第三个位置)那我们怎么找到空位的编号呢?用线段树维护区间的空位数,对于某人的所要插入原创 2014-02-18 17:50:50 · 1160 阅读 · 0 评论 -
POJ 3264 Balanced Lineup (RMQ线段树)
http://poj.org/problem?id=3264模板。完整代码:/*3891ms,1420KB*/#include #include using namespace std;#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1#define root 1, n, 1const原创 2014-02-18 13:33:53 · 844 阅读 · 0 评论 -
HDU 1754 I Hate It (RMQ线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=1754模板。/*1062ms,2284KB*/#include #include using namespace std;#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1#define root 1, n原创 2014-02-18 13:18:36 · 790 阅读 · 0 评论 -
HDU 2795 Billboard (RMQ线段树&合并操作技巧)
http://acm.hdu.edu.cn/showproblem.php?pid=2795关键的一句话:int ret = (x 完整代码:/*3484ms,3356KB*/#include #include using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r原创 2014-02-18 16:38:58 · 817 阅读 · 0 评论 -
UVa 11235 / POJ 3368 Frequent values (想法题&RMQ线段树维护最长区间长度)
http://poj.org/problem?id=3368思路:由于序列是非降的,我们可以统计出每个区间的左端点left和右端点right,并用线段树维护区间长度的最大值。记待查询区间[a,b]的a对应的区间为intera,b对应的区间为interb,则当interb==intera时,最大频率为b-a+1;当interb>intera时,最大频率为max(max(right[i原创 2014-02-19 12:24:42 · 1715 阅读 · 0 评论