摘要: 题目链接 题目含义 第一行给出城堡个数N和背包容量M 第i+1行给出i的父亲以及i的权值 求装m个城堡能得到的最大权值 题目分析 入门的树形背包 题目代码 阅读全文
posted @ 2019-07-29 20:27 helman78 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 推荐一个博主写的——关于树形DP中求最小支配集,覆盖集,独立集的博客 他写的关于树形DP代码的解释很好懂 虽然还有求重心,树形背包什么的没讲,不过对于我这样刚入门的人来说应该是够了 最小支配集——POJ3659 题目含义 有1到N个点,给出点两两的相邻关系,这个图的最小支配集 题目分析 简单易懂的最 阅读全文
posted @ 2019-07-29 20:13 helman78 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 题目含义 从坐标0开始,每次可以从i到i+l与i+r之间的位置 每次到新的位置,都可以获得新的位置对应的数 问还差一步就能到大于n的位置时,获得的最大数字 题目分析 dp[i]=max(dp[i-r]...dp[i-l])+a[i] 每次找最大就开一个数组用单调队列就好了(或者用一个优先队列) 题目 阅读全文
posted @ 2019-07-26 20:14 helman78 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目含义 给出一堆数字,要求分成几个区间,并且每个区间的和不大于m,并求每个区间的最大值之和最小 题目分析 动态转移方程是dp[i]=dp[j]+max(a[j+1],a[j+2],...,a[i]) 可以理解为,一个长的数列的值等于一个短的数列的值加上剩下的数的最大值 但是,sum[i]-sum[ 阅读全文
posted @ 2019-07-26 19:57 helman78 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目含义 给出n*n的地图和每次行走最长距离k,每次到达的数字必须大于原来的数字 问走一遍得到的数字最大是多少 题目分析 一个dfs就可以了 题目代码 阅读全文
posted @ 2019-07-26 19:32 helman78 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目含义 v个村庄要建p个邮局 现给出每个村庄的位置,并且邮局只能建在村庄的位置 问每个村庄到离它最近的邮局距离之和最小为多少 题目分析 区间dp[i][j]表示在前i个村庄建j个邮局的最小距离 dp[i][j]=min(dp[i][j],dp[k][j-1]+dis[k+1][j]) 这个状态方程 阅读全文
posted @ 2019-07-25 20:22 helman78 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题目含义 不是完美匹配,找出匹配的括号数目 题目分析 括号匹配有两种,一种是括号里有括号(()),一种是括号在外面()() 所以如果s[i]与s[j]匹配,那么dp[i][j]=dp[i+1][j-1]+2 同时要不断在i与j之间找间隔点,找出最大的dp[i][k]+dp[k+1][j] 对我来说, 阅读全文
posted @ 2019-07-25 19:52 helman78 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 题目含义 给出一堆课的截止时间和完成需要的时间 每完成这门课的时间超过截止时间一天就扣一分 问怎么安排完成所有课扣掉的分最少 题目分析 可以看到课总共就不超过16个 假设有3门课,用111表示全部完成,000表示都没完成,于是这个题可以用状压dp完成 用dp[1]...dp[1<<n-1]表示n门课 阅读全文
posted @ 2019-07-24 21:26 helman78 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目含义 给出一堆坏的电脑的坐标和一系列操作 好的电脑如果距离小于等于d可以看做一个集合 然后O是修电脑,S是询问两个电脑在不在一个集合 题目分析 明显的并查集问题,只是要标识好的和坏的电脑,然后只能在好的电脑用并查集 注意:如果让【新修好的电脑】的父亲指向【之前修好的电脑】的话 可能会出错,本该在 阅读全文
posted @ 2019-07-23 20:33 helman78 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题目含义 有一堆商品,给出了售货截止日期和售价 让你选择每天售出的商品,使得收入最大 题目分析 为什么可以选择并查集呢,我一开始也不明白 但是尽量选择售价高的商品,这个贪心思维是没问题的 主要在于选择一个商品后,可能一些快到期的商品就不能选了 在这里,我们根据截止日期分堆,一个截止日期一个集合 我们 阅读全文
posted @ 2019-07-23 19:54 helman78 阅读(94) 评论(0) 推荐(0) 编辑