apio2010专题

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

题目链接 易错点: l2必须要设置全局变量而不能设置局部变量,这是由于设置局部变量无法兼顾所有情况造成的.bfs并设置直径上边权为-1后,如果k=2则不能继续直接使用bfs获得答案,这是bfs的拓展加点性造成的(类比dijkstra).如果两个变量可以用一个变量导出就用一个变量.  BFS方法正确性的证明: 如果源点在直径上:显然正确.如果源点不在直径上:既然源点不在直径上那么直径

【树的直径】洛谷_3629 [APIO2010]巡逻

题意 有一颗树,要在其中加入 K ( k ≤ 2 ) K(k\leq 2) K(k≤2)条边,使得本来遍历这颗树要经过的边数最少,同时加入的边一定要正好走过 1 1 1次。 思路 当 K = 1 K=1 K=1时,显然是在树的直径的两个点之间连一条边,因为这样可以少走一次直径,而直径又是最长的。 当 K = 2 K=2 K=2时,新建的边如果与之前的边没有环重叠的话也是和 K = 1 K=1

[BZOJ 1911][Apio2010]特别行动队:DP斜率优化

点击这里查看原题 DP方程: f[i]=max(f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c) 如果j>k且j比k更优,则 f[j]-f[k]+a*sum[j]^2-a*sum[k]^2+b*(sum[k]-sum[j])>2*a*(sum[j]-sum[k])*sum[i] /*User:SmallLanguage:C++P