该文被密码保护。 阅读全文
posted @ 2022-12-04 13:06 杜宇一声 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 首先,重链剖分我们有所认识,在dsu on tree和数据结构维护链时我们都用过他的性质。 在这里,我们要介绍一种新的剖分方式,我们求出这个点到子树中的最长链长,这个链长最终从哪个儿子更新而来,那个儿子就是所谓的“重儿子”,也可以叫长儿子。 我们的做法就是,在统计一个点的信息时,对于重儿子,我们直O 阅读全文
posted @ 2019-03-23 20:04 杜宇一声 阅读(1058) 评论(0) 推荐(1) 编辑
摘要: 看到这道题,网上没有中文版的官方题解,于是就自己翻译了一遍。 不是机器翻译,是一个字一个字纯手翻译的,如果有错误欢迎指正。 比如我们有一张卡片,三个参数分别是 a1 = 4, b1 = 2, c1 = 3. 方便起见,我们令 p = q = r = 5. 考虑什么样的卡片能够击败这张. 我们可以固定 阅读全文
posted @ 2019-03-08 17:35 杜宇一声 阅读(417) 评论(0) 推荐(1) 编辑
摘要: 题目: 给出 k 和 n 个数,构造一个序列使得 d[i]>=d[i/k] ,并且字典序最大。 分析: 听说,当年省选的时候,这道题挡住了大批的高手,看上去十分简单,实际上那道弯段时间内是转不过来的。 首先,一个套路是,将这个序列的关系抽象成一棵树,i的父亲是floor(i/k),我们要要求子树内部 阅读全文
posted @ 2019-03-01 22:52 杜宇一声 阅读(262) 评论(0) 推荐(1) 编辑
摘要: 题目: BZOJ4016最短路径树问题 分析: 大家都说这是一道强行拼出来的题,属于是两种算法的模板题。 我们用dijkstra算法算出1为源点的最短路数组,然后遍历一下建出最短路树。 之后就是裸的点分治算法,一个桶,两个变量就解决了这道题。 代码: 1 #include<bits/stdc++.h 阅读全文
posted @ 2019-02-27 20:07 杜宇一声 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 题目: P3727曼哈顿计划E 分析: 大长题面容易给人一种不可做的错觉,但是这题考的知识点都是我们熟悉的。 稍加分析我们可以得到,我们可以把每个点当成一个单独的游戏,如果k=1,就是简单的nim游戏,这样,当多个游戏放在一起的时候,我们就可以根据一条链的权值异或和来判断必胜必败。 这个给我们启发, 阅读全文
posted @ 2019-02-27 16:10 杜宇一声 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题目: P2664 树上游戏 分析: 本来是练习点分治的时候看到了这道题。无意中发现题解中有一种方法可以O(N)解决这道题,就去膜拜了一下。 这个方法是,假如对于某一种颜色,将所有这种颜色的点全部删去,原树会被割成若干棵小树,那么这个颜色对每个点的贡献就是:树的大小n - 所在小树的大小sz。所以我 阅读全文
posted @ 2019-02-27 09:26 杜宇一声 阅读(168) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-02-26 18:01 杜宇一声 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题意: 小明升任了 CF 国的大总管,他管辖的 n 个城市,编号为 1..n。每个城市生产了 pi 个货物,限制最多可以卖掉 si 个货物。对于每两个城市 i, j,如果 i < j,则可以最多从 i 运送 c 个货物到 j。注意不能反向运送,却可以在多个城市之间送来送去。现在小明想知道,经过运输后 阅读全文
posted @ 2019-02-25 20:31 杜宇一声 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 题意: 有点长→CF547DMike and Fish。 分析: 其实也没什么好分析的,我这也是看的题解。 (不过,那篇题解好像文字的代码不太对劲) 这里直接说做法,正确性自证: 对输入的,将横、纵坐标相等的点分别两两连边,之后只需要dfs跑一个染色,使得一条边两个端点颜色都不一样即可,这样就可以确 阅读全文
posted @ 2019-02-25 17:52 杜宇一声 阅读(193) 评论(0) 推荐(0) 编辑