首页 > TAG信息列表 > APIO2010

P3629 [APIO2010]巡逻 题解

题面 \(k=1\) 的时候就是边数 \(\times 2\) 再减去直径长度。考虑 \(k=2\) 的时候,减去的相当于是选出的两条路径的对称差。考虑一个贪心,第一次取某一条直径一定不会更劣,这个感性理解就好。然后把这个直径的边权都设成 \(-1\) 再跑一遍直径就行了。 点击查看代码 const int N=1e5+

P3628 [APIO2010]特别行动队 单调队列优化dp

P3628 [APIO2010]特别行动队 链接 转移方程不难写出:设 \(f_i\) 表示把前 \(i\) 个士兵分成若干组的最优值。 那么转移就是: \[f_{i}=\max\limits_{0\le k\le i-1}\{f_k+a\times (sum_i-sum_k)^2+b\times (sum_i-sum_k)+c \} \]拆开后移项变成了: \[f_k+a\times sum_k^2-b\times sum_

[APIO2010]特别行动队

嘟嘟嘟 这道题dp式特别好想: \[dp[i] = max_{j = 0} ^ {i - 1} (dp[j] + f(s[i] - s[j])) \] 其中\(f(x) = ax^ 2 + bx + c\),\(s[i] = \sum_{j = 1} ^ {i} x[j]\)。 但是\(O(n ^ 2)\)过不了,需要斜率优化。 勇敢的把项拆开得到 \[dp[i] = max(dp[j] - b * s[j] + a * s[j] ^ 2 -

LG3630 [APIO2010]信号覆盖(计算几何)

LG3630 [APIO2010]信号覆盖 前言 南海都有网络了,怎么北京还要覆盖信号啊 好久以前做的计算几何题了,回来复盘一下。 解法 首先,题目中各有一个条件很重要: 保证任何三个房子都不在同一条直线 上,任何四个房子都不在同一个圆上。 翻译一下,没有四点共圆,没有三点共线。 我们做这道题依

P3628 [APIO2010]特别行动队

令 \(f_i\) 表示前 \(i\) 个士兵组成特别行动队的最大修正战斗力之和。对 \(x\) 做一遍前缀和。 转移方程: \[f_i=\max\{f_j+a\times(x_i-x_j)^2+b\times(x_i-x_j)+c|j<i\} \]考虑两个决策 \(j,k(j<k)\),若 \(j\) 比 \(k\) 优: \[f_j+a\times(x_i-x_j)^2+b\times(x_i-x_j)+c>f_k+a\ti

P3629 [APIO2010] DFS + 树形 DP

题意 传送门 P3629 [APIO2010]巡逻 题解 当 K = 0 K=0 K=0,遍历整棵树,每条边必然被递归依次,回溯一次,故路线总长度为

[APIO2010]特别行动队

解析 转移方程很容易推:\(f_i = \max(f_j + a * (s_i - s_j)^2 + b * (s_i - s_j) + c)\) 然后当 \(j>k\) 时,如果 \(j\) 更优 那么 \(f_j + a * (s_i - s_j)^2 + b * (s_i - s_j) + c > f_k + a * (s_i - s_k)^2 + b * (s_i - s_k) + c\) 整理得:\((f_j + a * s_j^2 - b * s_j) - (f

luogu P3628 [APIO2010]特别行动队 斜率优化dp

#include<map> #include<queue> #include<time.h> #include<limits.h> #include<cmath> #include<ostream> #include<iterator> #include<set> #include<stack> #include<cstdio> #include<cstring> #incl

P3628 [APIO2010]特别行动队

思路:斜率优化\(DP\) 提交:\(1\)次 题解: 转移方程:\(f[i]=\max(f[j]+A*(s[i]-s[j])^2+B*(s[i]-s[j])+C) 写成可以斜率优化的式子:\)f[i]+As[j]^2-Bs[j]+C=2As[i]s[j]+f[i]-As[j]^2-B*s[i]$ 然后求\(f[i]\)最大值,于是维护上凸包;,横坐标单调增,斜率单调减,所以直接上单调队列即可。 #includ

[APIO2010] 算法竞赛竞赛经典 巡逻

原题链接 题目描述 在一个地区有 n 个村庄,编号为1,2,…,n。 有 n-1 条道路连接着这些村庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其他任一个村庄。 每条道路的长度均为1个单位。 为保证该地区的安全,巡警车每天都要到所有的道路上巡逻。 警察局设在编号为1的

洛谷P3629 [APIO2010]巡逻(树的直径)

如果考虑不算上新修的道路,那么答案显然为\(2*(n-1)\)。 考虑\(k=1\)的情况,会发现如果我们新修建一个道路,那么就会有一段路程少走一遍。这时选择连接树的直径的两个端点显然是最优的。 难就难在\(k=2\)的时候,还是上面的思路,首先肯定连接两个叶子结点最优。假设我们连接的是\(x,y\)两

【APIO2010】巡逻

这是一道关于树的直径的好题,值得一刷。 本题有两个难点,一个是分类讨论k,另一个是代码的实现(其实还好)。 本题k可以为1或2,因此我们分类讨论一下。 当k=1时,我们可以任选两个点连接,假设我们一条边都不连接,那么我们需要走2*m次,其中m为边的数量。假设我们在x,y上连一条边,那么我们用1个距

[luogu3628][bzoj1911][APIO2010]特别行动队【动态规划+斜率优化DP】

题目描述 给你一个数列,让你将这个数列分成若干段,使其每一段的和的\(a \times sum^2 + b \times sum + c\)的总和最大。 分析 算是一道斜率优化的入门题。 首先肯定是考虑\(O(n^2)\)的暴力DP。 定义状态\(f[i]\)表示最后一段的结尾是\(i\)的最大答案。 那么枚举j,得到转移方程为\(f[i

APIO2010 特别行动队

题目链接:戳我 DP方程:\(dp[i]=max(dp[i],dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c)\) 暴力还是可以过一些点的(不止20pts),甚至有人说他暴力水过去了。。。 我们现在考虑正解,正解还是斜率优化。维护一个上凸包qwqwq 设\(dp[i]\)表示到士兵i所能达到的最大战力,\(sum[i]\)表示前