「WC2018」即时战略】的更多相关文章

「WC2018」即时战略 考虑对于一条链:直接随便找点,然后不断问即可. 对于一个二叉树,树高logn,直接随便找点,然后不断问即可. 正解: 先随便找到一个点,问出到1的路径 然后找别的点,考虑问出来第一个从1过来的未知位置,就可以一口气问下去了. 怎么找? logn询问次数 法一: 点分治 有点类似:CF772E Verifying Kingdom 可以直接确定走向 暴力插入点,替罪羊重构 O(nlog^2n) 法二: LCT 直接在实链上不断二分,然后跳到下一个实链上 复杂度分析可以类比a…
loj2341「WC2018」即时战略(随机化,LCT/动态点分治) loj Luogu 题解时间 对于 $ datatype = 3 $ 的数据,explore操作次数只有 $ n+log n $ . 毫无疑问无论什么时候已经探索的区域都是一条链. 每当要探索出一个新点,不是在左侧就是在右侧. 最劣情况下调用次数为 $ 2n $ . 只要随机打乱探索顺序,额外浪费的次数类似于上升子序列长度,期望 $ logn $ ,可以解决. 而对于其余数据,依然随机打乱探索顺序, 每次对于目标点,要点在于找…
LOJ 思路 考虑最蠢的暴力:枚举2~n,从1拉一条到他们的链,需要查询\(n^2\)次,显然不能通过. 考虑优化:如果拉的第一个点已经被访问过了,那么类似二分的做法,一次往那个方向多跳几步. 多跳几步?那就动态点分治吧.每次最多跳\(\log n\)次就一定可以找到一个点使得它到你现在枚举的点的路径全都没有访问过,然后一次把这上面的点全都explore一边即可. 然而,树的形态你不知道,怎么动态点分治? 那就动态动态点分治啊2333 类似替罪羊树的思想,加点时直接连上去,每当某个节点\(u\)…
[WC2018]即时战略(动态点分治,替罪羊树) 题面 UOJ 题解 其实这题我也不知道应该怎么确定他到底用了啥.只是想法很类似就写上了QwQ. 首先链的部分都告诉你要特殊处理那就没有办法只能特殊处理了QWQ. 首先听说有一种均摊\(log\)的\(LCT\)做法. 即每次随便\(explore\)一个点,如果这个点未被访问过,直接加入然后继续. 否则在\(LCT\)重链组成的\(Splay\)上跳. 这样子均摊复杂度是\(O(nlogn)\),均摊的询问次数也是\(O(nlogn)\). 然而…
「WC2018」州区划分(FWT) 我去弄了一个升级版的博客主题,比以前好看多了.感谢 @Wider 不过我有阅读模式的话不知为何 \(\text{LATEX}\) 不能用,所以我就把这个功能删掉了. 洛谷上不开 \(O_2\) 根本过不去,自带大常数被卡到 \(15\) 分... 首先题了读了很久,发现一个州的集合可以不连通... 我们可以 \(O(n^22^n)\) 检验每一个状态是否满足条件,用并查集即可. \(f[S]\) 为状态 \(S\) 时的满意度之和,\(g[S]\) 当状态 \…
题目描述 小M在玩一个即时战略(Real Time Strategy)游戏.不同于大多数同类游戏,这个游戏的地图是树形的. 也就是说,地图可以用一个由 n个结点,n?1条边构成的连通图来表示.这些结点被编号为 1 ~ n. 每个结点有两种可能的状态:“已知的”或“未知的”.游戏开始时,只有 1号结点是已知的.在游戏的过程中,小M可以尝试探索更多的结点.具体来说,小M每次操作时需要选择一个已知的结点 x,和一个不同于 x 的任意结点 y(结点 y 可以是未知的). 然后游戏的自动寻路系统会给出 x…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ349.html 题解 被cqz D没了.我D cly 关你啥事(逃 首先链的情况直接rand就好了. 期望次数 $O(n+\log n)$ . 然而我一开始写挂了. 开始扯淡 我用这个模数,就可以过原题数据: ('C'+'L'+'Y'+'A'+'K'+'I'+'O'+'I') 但是用以下两种都不行: ('G'+'L'+'Y'+'A'+'K'+'I'+'O'+'I') ('C'+'L'+'Y'+'A'+'…
没有代码能力... LOJ #2339 Luogu P4220 UOJ #347 题意 给定三棵树$ T1,T2,T3$,求一个点对$ (x,y)$使得$ T1.dist(x,y)+T2.dist(x,y)+T3.dist(x,y)$最大 每棵树的点数为$ 10^5$,时限$ 4s$ $ Solution$ 尝试对$ T1$边分治 设当前分治到边$(L,R)$ 将$ L$及$ L$所在一侧的点染黑,将$ R$及$ R$所在一侧的点染白 问题转化为找到一个点对$ (x,y)$使得满足$ x$为黑点…
这是一道交互题 题目大意 有一棵\(n\)个点的树.最开始\(1\)号点是白的,其他点是黑的. 每次你可以执行一个操作:\(explore(x,y)\).要求\(x\)是一个白点.该函数会返回从\(x\)到\(y\)的路径上第二个点的坐标并把该点染白. 要求你把所有点都染成白色. 设操作次数为\(t\). 对于\(30\%\)的数据:这棵树是一条链(不保证\(1\)在链的一端),\(n=300000,t=O(n+\log n)\) 对于另外\(70\%\)的数据:\(n=300000,t=O(n…
题目:https://loj.ac/problem/2339 两棵树的话,可以用 CTSC2018 暴力写挂的方法,边分治+虚树.O(nlogn). 考虑怎么在这个方法上再加一棵树.发现很难弄. 看了看题解,发现两棵树还有别的做法. 就是要最大化 d1[ x ] + d2[ x ] + d1[ y ] + d2[ y ] - 2*d1[ lca1(x,y) ] - 2*d2[ lca2(x,y) ] ,考虑在第一棵树 T1 上 dfs 地枚举 lca1 ,那么考虑的答案就是 T1 上在当前点 c…