
DP
ACM败犬
这个作者很懒,什么都没留下…
展开
-
2019 南昌邀请赛 A.Attack(斯坦纳树 + 子集dp)
题目链接:https://nanti.jisuanke.com/t/40253题目大意:有 n 个点,m无向条边的图,每条边有一个非负边权。现在有4对点需要连通,共用的边只用计算一次,输出使这4对点连通的最小花费。如果这四对点间互相不连通,那么答案是这四对点的最短路之和。但这四对点之间也可能互相连通,他们共用了一部分边,某一对点间的连通路径也许不是这两点间的最短路。一个做法是,枚举哪些点...原创 2019-10-22 16:15:55 · 196 阅读 · 0 评论 -
Codeforce 1236 E. Alice and the Unfair Game(思维,dp,并查集)
题目大意:初始有 n 个盒子 和 一个小球,A 和 B 玩一个游戏。游戏过程如下:A将小球放在某一个盒子内,然后 B 来猜小球在哪个盒子,每一次B会询问小球是否在 他猜的数字 aia_iai 中。游戏共进行 m 轮,A为了不让B赢,在每一次 B 猜的时候 A可以移动小球到相邻位置,游戏开始前和游戏结束后 A 也可以移动小球一次。设A初始将球放在 xxx 位置,游戏结束后球最后的位置在 yyy...原创 2019-10-19 10:34:08 · 289 阅读 · 0 评论 -
CH 5501 :环路运输(DP 环化处理)
题目大意:有一个圈上有n个点,编号从 1 ~ n,每个点有一个权值A[i],定义dist(i,j)=min(∣j−i∣,n−∣j−i∣)dist(i,j) = min(|j - i|,n - |j - i|)dist(i,j)=min(∣j−i∣,n−∣j−i∣),问两个点的A[i]+A[j]+dist(i,j)A[i] +A[j] + dist(i,j)A[i]+A[j]+dist(i,j)最大...原创 2019-07-19 17:02:50 · 207 阅读 · 0 评论 -
2019 Multi-University Training Contest 2:Beauty Of Unimodal Sequence(DP + 贪心构造)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6592题目大意:给你一个序列,让你构造一个字典序最大和字典序最小的单峰最长序列(这个单峰序列在峰点之前和峰点之后是严格单调的),并输出出来。分析:由于峰点范围是[1,k](话说比赛时看成了(1,k),直接就想不下去了),倒序遍历一边可以处理出 f[i][0] 表示选i号点[i,n]的最长单减序列的...原创 2019-07-26 09:15:13 · 182 阅读 · 0 评论 -
bzoj 1791: [Ioi2008]Island 岛屿(基环树直径(递归扣环模板))
题目大意:给你一堆基环树,求这些基环树的直径和。题解:求基环树的直径:按直径是否经过环分类讨论:对于不经过环的直径,就是环上的点为根节点所在的子树的直径,取最大值。经过环的直径:显然要求出环上每一个点到它的子树里的点的最远距离 disdisdis。将环复制一倍展开,然后枚举环上每一个点uuu作为终点,用单调队列优化找出 disv−sumvdis_v - sum_vdisv−sumv的最大值...原创 2019-08-10 17:18:23 · 224 阅读 · 0 评论 -
Codeforce 835 F. Roads in the Kingdom(基环树DP + 单调队列,基环树环上删边使直径最小)
题目大意:给你一棵基环树,让你在环上删掉一条边,使得树的直径尽量小。题解:不考虑删边的基环树的直径是如何做的:对环上每个点树形DP,dp[i][0],dp[i][1]dp[i][0],dp[i][1]dp[i][0],dp[i][1]分别记录i到以 i 为根的子树的最远距离和次远距离,用单调队列处理直径过环的情况。环是双向的,处理过环情况时将环断开复制一倍,然后用单调队列枚举一个点做终点找能和...原创 2019-08-11 20:04:58 · 441 阅读 · 0 评论 -
2019 上海网络赛 F. Rhyme scheme(dp + 线性构造)
题目大意:用字符表示集合划分,例如 AABBA 表示 1,2,5划分一个集合,3,4划分一个集合,输入 n,k,用字母表示 n 个人的集合划分,输出字典序第 k 小的划分字符串。集合划分的数目是一个贝尔数,观察到如果前 i 个人划分出了 k 个集合,第 i + 1 个人有 k + 1种选择,要么归属 k 个集合中的一个,要么划分到一个新的集合。一个人的可选择方案数量只和前面的集合数量有关,并...原创 2019-09-17 00:35:58 · 507 阅读 · 2 评论 -
HDU 1085 : Holding Bin-Laden Captive! (生成函数 | 背包)
题目大意:有面值 1,2,5的硬币 n1,n2,n5n_1,n_2,n_5n1,n2,n5枚,输出不能用这些硬币凑出的金额中最小的金额。有两种做法,一种是直接转01背包,由于数据范围较小可以直接暴力转,复杂度为 (3000∗8000)(3000 * 8000)(3000∗8000)另一种做法:e1+2∗e2+5∗e5=ie_1 + 2*e2 + 5 * e_5 = ie1+2∗e...原创 2019-09-20 14:27:35 · 193 阅读 · 0 评论