摘要:
\mathcal About\ me 2018/11/21 来自HB,CHN 退役于 NOIP\ 2018,可能转战 USACO,会继续学习算法,不定期更新博客,平时会打打 Codeforces。 如果有愿意与我交流的小伙伴,可以加我 QQ:1040394902 阅读全文
摘要:
题意 "Here" 简要题意:给定一颗树,树边带权,给 m 个询问,每次给 k 个点,询问删除若干条边使得这 k 个点都不与 1 号点联通的最小代价。\sum k_i \leq500000,1\leq m 思考 同时也记录一下虚树的学习。 看完题目,第一时间想到树形 dp,每 阅读全文
摘要:
题意 "Here" 思考 这题的树形 dp 很明显,我们发现只可能有两种情况,要么是树要么是环,对于一个环来说肯定是要么都选要么都不选,可以缩点,缩完点之后我们得到了一个森林,不妨用一个源点将这些小树串成一个大树再来 dp,后面就显然是一个树上有条件的分组背包了,由于必须要选当前点,所以强制 阅读全文
摘要:
题意 "Here" 思考 感觉这题思路挺不错的 考虑单独的一个人的 a_i,b_i,那么就是有 n a_i b_i 个人分数相同,而这个分数相同的区间是 [a_i+1,n b_i],要满足合理性,我们应该选出若干个不相交的区间,使得权值最大(这个权值也就是区间范围相同的人数),这个问题就 阅读全文
摘要:
题意 "Here" 思考 这题竟然卡常 + 卡精度,我 …… 令 f[i][k] 表示前 i 个元素分了 k 次的最大值,我们可以得出转移方程(sum[]为前缀和数组): $$f[i][k] = max\{f[j][k 1] + sum[j] (sum[i] sum[j])\ 阅读全文
摘要:
题意 "Here" 思考 写的第一道斜率优化…感觉这个板题还蛮简单的 首先按普通思路,我们令 dp[i],为前 i 个物品的最小价值,那么可以很容易列出方程: dp[i] = min\{ dp[j]+(sum[i] sum[j]+i j 1 L)^2 \} 这是一个 O(n^2) 阅读全文
摘要:
题意 "Here" 思考 这个题过于水… 考虑单独的以 u 为根的一个子树,我们假设 u 的所有子节点 v 形成的子树已经满足条件(即 v 到 v 的叶子节点的距离经过 f[v] 次改变已经达到了深度相等的状态),我们现在只需改变所有 e\{u, v\} 的值使得 u 阅读全文
摘要:
题意 "Here" 思考 吐槽一下这个题,完全就是两个裸题拼一起了,而且两个板子之间毫无联系… 首先我们造一个保证字典序最小的最短路径树,怎么保证字典序呢,先将你存的图按字典序从小到大重新排个序再跑最短路就行了。之后就是:跑 dijkstra,dfs 一遍重新建图,如果 u 已经被访问过 阅读全文
摘要:
题意 "Here" 思考 简要题意:给一棵树,每条边有权。求一条简单路径,权值和等于 K,且边的数量最小。 由于这条最小路径可以是所有路径中的任意一个,所以所有等于 K 的路径我们必须考虑到,关于树上的路径统计问题,我们选用点分治。 这样一想就是点分治裸题了,由于 K \leq 1e6, 阅读全文
摘要:
题意 "Here" 思考 最近学习一下点分治 本题点分治裸题,也可以用树形 dp 做,在此记录一下点分治的做法: 首先题目要求求出边权和为 3 的倍数的路径个数和,那么我们可以将路径和对 3 取模,树上路径就只分为了三种: 0,\ 1,\ 2,用一个桶记录个数,那么每次点分治计算的答 阅读全文
摘要:
关于矩阵加速数列递推: 给定一个递推数列 f[i] = a_1 f[i 1] + a_2 f[i 2] … a_k f[i k] ,我们普通计算的话肯定是逐个计算,复杂度较大。 我们可以用矩阵表示: $$ \left[ \begin{matrix} f[i] \\ f[i 1] \\ … \\ 阅读全文