随笔分类 -  数据结构—线段树

该文被密码保护。
posted @ 2019-06-15 21:15 lokiii 阅读(1) 评论(0) 推荐(0)
摘要:给出的模型很难搞,所以转换一下,记p[i]为i这个数的位置,然后相邻两个p值差 k的能交换,发现使原问题字典序最小也需要使这里的字典序最小 注意到p值差 include include using namespace std; const int N=3000005; int n,k,a[N],p[ 阅读全文
posted @ 2019-05-26 22:25 lokiii 阅读(189) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-23 21:48 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-21 20:34 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-20 17:00 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-04-02 14:37 lokiii 阅读(8) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-31 11:49 lokiii 阅读(5) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-22 21:55 lokiii 阅读(9) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-20 19:37 lokiii 阅读(8) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-12 21:45 lokiii 阅读(5) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-12 07:54 lokiii 阅读(6) 评论(0) 推荐(0)
摘要:圆方树不仅能解决仙人掌问题(虽然我仙人掌问题也没用过圆方树都是瞎搞过去的),还可以解决一般图的问题 一般图问题在于缩完环不是一棵树,所以就缩点双(包括双向边) 每个方点存他所在点双内除根以外的点的最小权值,这样的好处是更新原点的时候不用更新它一圈的方点,只更新父亲即可 树剖维护,然后查的时候如果lc 阅读全文
posted @ 2019-02-28 21:26 lokiii 阅读(165) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-02-25 16:32 lokiii 阅读(5) 评论(0) 推荐(0)
摘要:考虑静态怎么做:枚举右边界,然后枚举上边界,对应的下边界一定单调不降,单调栈维护每一列从当前枚举的右边界向左最长空位的长度,这样是O(nm)的 注意到n =m,所以m include using namespace std; const int N=4000005; int n,m,Q,len[N' 阅读全文
posted @ 2019-02-23 15:47 lokiii 阅读(304) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-01-16 10:32 lokiii 阅读(9) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-01-10 22:02 lokiii 阅读(6) 评论(0) 推荐(0)
摘要:不太清楚是不是动态dp……? 这个维护其实和最大连续子段差不多,维护l[x][y],r[x][y],m[x][y]分别表示包含左儿子的01个数为(x,y)的区间个数,包含右儿子的01个数为(x,y)的区间个数,和01个数为(x,y)的所有区间个数 x表示1的个数情况,0表示0个,1表示1个,2表示 阅读全文
posted @ 2018-12-10 07:57 lokiii 阅读(343) 评论(1) 推荐(1)
摘要:参考:https://www.cnblogs.com/CQzhangyu/p/8632904.html 要开longlong的 首先看dp,设f[u]为必选u点的子树内最大联通块,p[u]为不一定选u的子树内最大联通块,转移很显然就是f[u]=max(Σf[v],0),p[u]=max(max(p[ 阅读全文
posted @ 2018-12-09 11:55 lokiii 阅读(253) 评论(0) 推荐(0)
摘要:我没有找到能在bzojAC的代码……当然我也WA了……但是我在洛谷过了,那就假装过了吧 minmax线段树一开始写的只能用min更新min,max更新max,实际上是可以互相更新的…… 首先看第二问,注意到因为没有相交,所以可以全都按某种顺序像同一个方向移动来完成游戏,这个顺序通过扫描线找到,用se 阅读全文
posted @ 2018-12-06 17:43 lokiii 阅读(427) 评论(0) 推荐(0)
摘要:因为我很愚蠢所以用了很愚蠢的O(nlogn)的manacher+线段树做法 就是开两个线段树mn和mx分别表示左端点在i的最长回文子串和右端点在i的最长回文子串 用manacher求出每个点的最长回文子串,然后对于一组(i,f[i])(这里的i是加完 之后的串),我们考虑对原串贡献是对于中点右边一段 阅读全文
posted @ 2018-11-24 14:21 lokiii 阅读(213) 评论(0) 推荐(0)