首页 > TAG信息列表 > Heoi2013

【洛谷4097】[HEOI2013] Segment(初学李超线段树)

点此看题面 有\(q\)次操作,分为两种:加入一条线段,询问与直线\(x=k\)交点纵坐标最大的线段的最小编号。 \(q\le10^5,x\le39989\),强制在线 李超线段树 第一次写李超线段树,之前遇到过每次插入直线的题目是直接靠线段树上二分过的。。。 其实思想也挺简单的,就是考虑在线段树的每个节点

P4097 [HEOI2013]Segment [李超树]

李超树模板,细节有点多。。 // powered by c++11 // by Isaunoya #include <bits/stdc++.h> #define rep(i, x, y) for (register int i = (x); i <= (y); ++i) #define Rep(i, x, y) for (register int i = (x); i >= (y); --i) using namespace std; using db = double; u

题解 洛谷 P4098 【[HEOI2013]ALO 】

考虑原序列中的每一个值作为构成最终答案的那个次大值,那么其所在的合法区间最大时,其对答案的贡献最大。 一个值作为最大值时有两个合法的最大区间,一个是左边第二个比其大的位置和右边第一个比其大的位置构成的区间,另一个是左边第一个比其大的位置和右边第二个比其大的位置构成的区

[BZOJ3165][Heoi2013]Segment

题意  在平面直角坐标系中维护两个操作:  1.在平面上加入一条线段。记第i条被插入的线段的标号为i。  2.询问与x=k的线段中,y 坐标最靠上的线段标号。  (强制在线) 分析  李超线段树模板题   代码 #include<iostream>using namespace std;const int mod1=39989,mod2=1e9,N=1e

洛谷 4099 [HEOI2013]SAO——树形DP

题目:https://www.luogu.org/problemnew/show/P4099 结果还是看了题解才会…… 关键是状态,f[ i ][ j ] 表示 i 子树、 i 号点是第 j 个出现的方案数。 合并的时候,很重要的是去枚举孩子 v 有 k 个点放在了第 i 个点前面。这样 v 可以在的位置就根据该边是 > 还是 < 而是一个前/后缀。

P4098 [HEOI2013]ALO

最近这个家伙去哪了,为啥一直不更博客了呢?原来他被老师逼迫去补了一周的文化课,以至于不会把班里的平均分拉掉太多。好了,我们来看下面这道题目: P4098 [HEOI2013]ALO 题目描述 Welcome to ALO ( Arithmetic and Logistic Online)。这是一个 VR MMORPG, 如名字所见,到处充满了数学的谜题

luogu P4099 [HEOI2013]SAO

传送门 吐槽题目标题 这个依赖关系是个树,可以考虑树型dp,设f_i表示子树i的答案 因为这是个序列问题,是要考虑某个数的位置的,所以设\(f_{i,j}\)表示子树i构成的序列,i在第j个位置的方案.转移依次合并儿子\(y\),每次枚举一个位置j,以及枚举儿子\(y\)的序列中有k个数放在插前面,可以

BZOJ3165: [Heoi2013]Segment(李超线段树)

题意 题目链接 Sol 李超线段树板子题。具体原理就不讲了。 一开始自己yy着写差点写自闭都快把叉积搬出来了。。。 后来看了下litble的写法才发现原来可以写的这么清晰简洁Orz #include<bits/stdc++.h> #define pdd pair<double, double> #define MP make_pair #define fi first #d

【题解】Luogu P4097 [HEOI2013]Segment

原题传送门 这珂以说是李超线段树的模板题 按着题意写就行了,时间复杂度为\(O(n\log^2n)\) #include <bits/stdc++.h> #define N 40005 #define db double #define getchar nc using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1=