随笔分类 - 数据结构
摘要:[TOC] [NOIP2015]运输计划 链接 "luogu" 好久没写博客了,水一篇波。 思路1 暴力数据结构 枚举最长链的边,删除后代价为(最长链 边权,不经过这条边的链)的最大值。 不经过某条边的最大值要用线段树维护补集。 复杂度$O(nlog^2n)$ 思路2 二分树上差分 二分答案,删除的
阅读全文
摘要:loj2090. 「ZJOI2016」旅行者 链接 "loj" 思路 $(l,mid)(mid+1,r)$.考虑跨过mid的贡献。 假设选的中间那条线的点为gzy,贡献为$dis(x,gzy)+dis(gzy,y)$ 那就计算n遍最短路,一次分治为$n^2mlog{nm}$ 设S=n m.矩阵的长度
阅读全文
摘要:cf1039D 链接 "cf" 思路 一次k可以贪心O(n)算。 对于$≤\sqrt{n}$的k,暴力算。 对于$>\sqrt{n}$的k,最多会有$\sqrt{n}$种答案,而且答案单调。 二分就行了。 复杂度$O(nlogn+n\sqrt{n}logn)$ 递归会被卡,所以要记录dfs序然后循环
阅读全文
摘要:bzoj3589 动态树 链接 "bzoj" 思路 求链并。 发现只有最多5条链子,可以容斥。 链交求法:链顶是两条链顶深度大的那个,链底是两个链底的$lca$ 如果链底深度小于链顶,就说明两条链没有交集。 复杂度$m 2^klog^2n$ 还有一种做法。 把所有链子都打上$0/1tag$,只有$1
阅读全文
摘要:bzoj2287【POJ Challenge】消失之物 缺一01背包 链接 "bzoj" 思路 分治solve(l,r,arr)表示缺少物品$[l,r]$的dp数组arr。 然后solve(l,mid,arr)用右边的物品更新,solve(mid+1,r,arr)同理。 $f(n)=2 f(\fra
阅读全文
摘要:[ZJJOI2013]K大数查询 链接 "luogu" 思路 整体二分。 代码 cpp include define ll long long using namespace std; const ll _=5e5+7; ll read() { ll x=0,f=1;char s=getchar()
阅读全文
摘要:[NOI2010]超级钢琴 链接 "luogu" 思路 和12省联考的异或粽子一样。 堆维护n个左端点,每次取出来再放回去次 代码 cpp include define ll long long using namespace std; const int _=5e5+7,INF=0x3f3f3f3
阅读全文
摘要:hdu5111 链接 "hdu" 思路 先考虑序列上如何解决。 这个序列变成 是对答案没有影响的(显然)。 然后查询操作$l,r,L,R$就是, 一段连续的区间$[L,R]$内包含几个值在$[l,r]$的数字个数. 主席树就可以做了。 $query(rt[L 1],rt[R],[l,r]的和)$ 可
阅读全文
摘要:CF888G XOR MST 链接 "CF888G" 思路 trie上贪心,先左右两边连边,再用一条边的代价连起左右两颗树。因为内部的边一定比跨两棵树的边权笑,显然是对的。 代码自己瞎yy的。启发式合并 代码 cpp include define ll long long using namespa
阅读全文
摘要:2090. 「ZJOI2016」旅行者 链接 "loj" 思路 $(l,mid)(mid+1,r)$.考虑跨过mid的贡献。 假设选的中间那条线的点为gzy,贡献为$dis(x,gzy)+dis(gzy,y)$ 那就计算n遍最短路,一次分治为$n^2mlog{nm}$ 设S=n m.矩阵的长度是不定
阅读全文
摘要:P5055 【模板】可持久化文艺平衡树 链接 "luogu" 思路 可持久化fhq treap套一套就行了,pushdown和split都要可持久化,但merge不用可持久。以前以为很难一直没看,就是个板子。 错误 这两句话居然不一样。 我靠我靠我靠,调试了一下午。 代码 cpp include d
阅读全文
摘要:bzoj4605: 崂山白花蛇草水 链接 "bzoj" "loj" 思路 强制在线,那就权值线段树套KDtree好了,没啥好讲的。 KDtree要加平衡因子来重构。另外,那水真难喝。 错误 树套树一边写过了,然后是各种傻屌错误。 我居然离散化了权值,要被gzy嘲笑了。 我一开始还笑话那些写动态开点的
阅读全文
摘要:[HNOI2016]序列 CDQ 链接 "loj" 思路 一个点最小变为l,最大变为r,不变的时候为v 那么j能在i前面就要满足。 $j using namespace std; const int _=1e5+7; int n,m,f[_],ans; struct node {int i,v,l,
阅读全文
摘要:4520: [Cqoi2016]K远点对 链接 "bzoj" 思路 用K Dtree求点的最远距离。 求的时候顺便维护一个大小为2k的小根堆。 不知道为啥一定会对。 代码 cpp include define ll long long define ls (t[u].ch[0]) define rs
阅读全文
摘要:[SDOI2010]捉迷藏 链接 "luogu" 思路 k dtree模板题 代码 cpp include define ls (t[u].ch[0]) define rs (t[u].ch[1]) define cmin(a,b) (a b?a=b:a) define cmax(a,b) (a b
阅读全文
摘要:bzoj4066: 简单题 链接 "bzoj" 思路 强制在线。k dtree。 卡常啊。空间开1e6就T了。 代码 cpp include define my_min(a,b) (ab?a:a=b) using namespace std; const double alpha=0.75; con
阅读全文
摘要:P4169 [Violet]天使玩偶/SJY摆棋子 链接 "luogu" 思路 luogu以前用CDQ一直过不去。 bzoj还是卡时过去的。 今天终于用k dtree给过了。 代码 cpp include using namespace std; const int INF=0x3f3f3f3f,N
阅读全文
摘要:链接 "bzoj" 思路 首先$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{k=i}^{j}max(a_k)$可以用单调队列求解。 "参见" ? 求解此题目,我们分治。计算$[l,mid]$对$[mid+1,r]$的贡献。 我们从后向
阅读全文
摘要:链接 "bzoj" 思路 cdq入门题,拆成4个矩阵,然后cdq。 代码 cpp / Problem: 1176 User: gryz2016 Language: C++ Result: Accepted Time:2652 ms Memory:13012 kb / include using na
阅读全文
摘要:bzoj 2716: [Violet 3]天使玩偶 链接 "bzoj" 思路 80s的评测交了五六发、、、~~貌似卡评测了~~ 只讨论在左下角的点,cdq分支求出。 然后剩下的用坐标对称啥的再来三遍。 不过每次还原这样是会T的。 对x排序,然后搞就过了,(我也不知道,不过还是40s左右) KD tr
阅读全文