摘要: 题面 "传送门" 分析 显然,如果不加边,每条边都要走2次,总答案为2(n 1) 考虑k=1的朴素情况: 加一条边(a,b),这条边和树上a b的路径形成一个环,这个环上的边只需要走一遍,所以答案会减少dist(a,b) 1 (a b的路径少走一边,但是又多加了一条边,最终答案为2 (n 1) di 阅读全文
posted @ 2018-12-29 21:34 birchtree 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题面 "传送门" 分析 计算的部分其他博客已经写的很清楚了,本博客主要提供一个简洁的实现方法 尤其是pushdown函数写得很简洁 代码 cpp include include include include define maxn 100005 using namespace std; int n 阅读全文
posted @ 2018-12-27 22:00 birchtree 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题面 "传送门" 分析 根据贪心的思想我们得到几条性质: 1.生成树上的边权减小,非树边的边权增加 2.每条边最多被修改一次 设改变量的绝对值为d 对于一条非树边$j:(u,v)$,树上u v的路径上的任意一条边i的边权$w_i\leq j$,否则把i替换成j可以得到一棵更小的生成树 因此有$w_i 阅读全文
posted @ 2018-12-27 21:51 birchtree 阅读(187) 评论(0) 推荐(0) 编辑
摘要: Meet in the Middle 总结 1.算法模型 1.1 Meet in the Middle算法的适用范围 如果将搜索的路径看成一个有向图,Meet in the Middle 算法适用于求有向图上从A到B,且长度为L的路径数。 换句话说,Meet in the Middle 算法适用于求 阅读全文
posted @ 2018-12-17 19:36 birchtree 阅读(2579) 评论(0) 推荐(1) 编辑
摘要: 题面 "传送门" 题目大意:给出一个无向图,每个节点可以填1,2,3三个数中的一个 问有多少种填数方案,使两个相邻节点的数之和为奇数 分析 如果图中有奇环,一定无解 我们对图黑白染色,由于图可能不联通,记第i个连通分量的黑点数量为$b_i$,白点数量为$w_i$ 观察发现每一条边的连接的两个节点,一 阅读全文
posted @ 2018-12-16 18:54 birchtree 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 题面 "传送门" 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 $a_1≤a_2≤⋯≤a_n$ 给出一个长度为$\frac{n}{2}$ 的序列b,定义$b_i=a_i+a_{n i+1}$ 求出序列a (输出任意一种答案即可) 分析 为了保证序列不下降,我们采用贪心的思想,先假设$a_i 阅读全文
posted @ 2018-12-16 15:30 birchtree 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 题面 "传送门" 分析 贪心 将度限制大于1的点连成一条链,然后将度限制等于1的点挂上去 形状如下图,其中(1,2,3)为度数限制 1的点 显然直径长度=(度数限制 1的节点个数) 1+min(度数限制等于1的节点个数,2) 那么具体如何构造? 首先将度为1和度 1的节点分开 如果有至少1个度为1的 阅读全文
posted @ 2018-12-04 16:13 birchtree 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题面 "传送门" 真是令人胃疼的题面 我不管,我要把苹果都给雪菜!(滑稽)(冬马党不要打我) 分析 突然感觉这题跟今年NOIP Day1T2有点像,都是根据数加减来构造背包,只不过这题是01背包而不是完全背包 背包模型: 设总和为sum,则容量为sum/2 其实本题不需要代价,dp[j]为1表示容量 阅读全文
posted @ 2018-12-04 10:50 birchtree 阅读(258) 评论(2) 推荐(0) 编辑
摘要: 题面 "传送门" 分析 分三维考虑 对第一维,直接排序 对第二维和第三维,我们这样考虑 朴素的方法是建k棵Treap,第i棵Treap里存第二维值为k的第三维数值 每次查询一组(a,b,c),只要在1~b的Treap里查询 include include include include includ 阅读全文
posted @ 2018-11-29 20:08 birchtree 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题面 "传送门" 分析 语文题,主要是如何理解最小波动值 设当前天的营业额为x,则最小波动值为min(x 最大的=x的数 x) 然后用Treap维护序列就可以了 时间复杂度 $ O(n \log n) $ 代码 cpp include include include include include 阅读全文
posted @ 2018-11-29 19:47 birchtree 阅读(192) 评论(0) 推荐(0) 编辑