![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 79
synapse7
这个作者很懒,什么都没留下…
展开
-
UVa 105 The Skyline Problem (想法题)
这题有个很巧的思路:离散化。 什么意思呢?既然每栋大楼的高和左右边界都是整数,那么不妨把线段用一个个整点表示。既然最后只求一个轮廓,那么对每个横坐标,就记录纵坐标(高度)最大的点。最后从左到右扫描一遍,当高度发生变化时就输出。 完整代码:原创 2013-11-10 12:34:08 · 5062 阅读 · 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 · 1410 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies? (高合成数&用线段树维护约瑟夫环)
http://poj.org/problem?id=2886 思路: 题目要求约数个数最大的数,此即高合成数的定义(也有人把它叫做反素数,但这种叫法是错的,实际上的反素数是指一个数及其回文数都是素数)。 wiki:http://en.wikipedia.org/wiki/Highly_composite_number OEIS:http://oeis.org/A002182 然后原创 2014-02-19 00:07:36 · 1824 阅读 · 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 · 1114 阅读 · 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 · 874 阅读 · 0 评论 -
POJ 2777 Count Color (线段树&位运算)
Count Color Time Limit: 1000MS Memory Limit: 65536K Description Chosen 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 · 985 阅读 · 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 · 1018 阅读 · 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, 1 co原创 2014-02-19 11:04:51 · 1071 阅读 · 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 · 1710 阅读 · 0 评论 -
POJ 2828 Buy Tickets (想法题&后序插入&线段树下的二分查找)
http://poj.org/problem?id=2828 真是一道神题,朱泽园神牛出的。 首先用链表写的话常数太大(cache命中率太低了),会导致超时。 那怎么做? 注意到最后一个人的位置是确定的,再前一个人呢?他的位置即是空位的编号(对于第二组数据,倒数第二个人要在第1+1个空位,即第三个位置) 那我们怎么找到空位的编号呢? 用线段树维护区间的空位数,对于某人的所要插入原创 2014-02-18 17:50:50 · 1133 阅读 · 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, 1 const原创 2014-02-18 13:33:53 · 815 阅读 · 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 · 772 阅读 · 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 · 799 阅读 · 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 · 1692 阅读 · 0 评论