随笔分类 - 寒假刷题
摘要:2.20 [P1040 NOIP 2003 提高组] 加分二叉树 - 洛谷 (luogu.com.cn) 首先说明这是一道区间dp 我们可以定义\(dp[i,j]\)i结点到j结点为这根树的最大分数,那么可以考虑就是\([i,j]\)区间中存在k为根节点 迭代方程就为\(dp[i][j] = max
阅读全文
摘要:2.18 P1613 跑路 - 洛谷 (luogu.com.cn) 越来越感觉在做图论了....... 首先本题运用了倍增的思想(特地去学了一下倍增),倍增主要是运用于lca(寻找结点的最近祖先结点)的问题中。简单来说我们维护一个一维线性数组,也就是\(dp[i][j]\)表示我们从i点向右走\(2
阅读全文
摘要:2.17 P1352 没有上司的舞会 - 洛谷 (luogu.com.cn) \(dp[i][1/0]\)表示以i结点为根节点时,选或者不选所得到最大幸福值 我们dfs到叶子结点后在回溯时进行dp 假如我们选择了boss,那么boss的子节点就不能再选,\(dp[parent][1] += dp[s
阅读全文
摘要:2.16 [P1070 NOIP 2009 普及组] 道路游戏 - 洛谷 (luogu.com.cn) \(dp[i]\)表示前i个时间,所最多收集的金币 如果是\(O(n^3)\)的做法的话,我们只需要枚举起点,步数,时间就行了 但是可能是数据弱的问题,本题这样做就ac了,标答应该用优先队列维护为
阅读全文
摘要:CF607B Zuma - 洛谷 (luogu.com.cn) \(dp[i][j]\)表示在这个\((i,j)\)区间中所使用的最短时间。 考虑转移方程,因为是回文字符串,所以当\(arr[left] != arr[right]\)时,有\(dp[left][right] = dp[left +
阅读全文
摘要:[P3205 HNOI2010] 合唱队 - 洛谷 (luogu.com.cn) import java.io.*; import java.util.*; import java.util.zip.ZipEntry; public class Main implements Runnable {
阅读全文
摘要:2.11 P1775 石子合并(弱化版) - 洛谷 (luogu.com.cn) 可以说是区间dp入门的基本题目了 状态数组\(dp[i][j]\)为区间i到j合并后的消耗最小值 那么我们只需要枚举区间长度,区间起点(区间末可以通过前面两个算出),再枚举区间中间的隔断点,即可得出最大值 我们用前缀和
阅读全文
摘要:[P2340 USACO03FALL] Cow Exhibition G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)\ 很不错的一道题,我们考虑把本题转换为01背包,因为每只奶牛只有选或者不选两种可能性 \(dp[i][j]\)记录为在前i头奶牛中,智商为j时所得到的情商最大数
阅读全文
摘要:2.9 [P1435 IOI 2000] 回文字串 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先说思路,我们这里有样例Ab3bd,反着读是db3bA,我们发现重复的是b3b,不重复的是Ad两个字符,相当于我们只要补全这两个字符为偶数,就可以使他成为回文串。答案就为2。 ok,
阅读全文
摘要:2.8 [P1004 NOIP 2000 提高组] 方格取数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题一开始是想用\(dp[i][j]\)来代表走到i,j后所得到的最大值,根据转移方程\(dp[i][j] = max(dp[i][j - 1],dp[i - 1][j]
阅读全文
摘要:P1874 快速求和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 本题\(dp[i][j]\)代表以i结束和为k的最小加号用量,用\(num[i][j]\)代表i-j范围内的数字 转移方程为\(dp[i][k] = min(dp[j][k - num[j + 1][i]]) +
阅读全文
摘要:2.6 P1725 琪露诺 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 首先我们先简化一下本题,如果我们假设有一个数为\(x\),我们每次从某一个地点到另一个地点需要加上\(x\),那么可以得到线性模板dp,也就是\(dp[j + x] = max(dp[j]) + 1\),
阅读全文
摘要:2.5 [P1020 NOIP 1999 提高组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 本题两个问,第一个问如下 step1 第一眼看到就觉得是一道线性dp的板子题,最长上升子序列。第一反应就是\(O(N^2)\)来解决,显然是会T的。转而思考优化,选用二分进
阅读全文
摘要:2.2 [P2527 SHOI2001] Panda的烦恼 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 发现n小k大,复杂度为O(n * k),大概会吃到1e7的复杂度,姑且可以低空飘过 考虑运用set,java中的话就是TreeSet,自动提供排序和排重的功能 ok,那么先放
阅读全文
摘要:2.1 P1144 最短路计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 用java会吃T,java底层没有加速这道题会被卡常数 本质上就是用bfs来进行搜索每个点与点1的最近距离,然后维护两个数组来计算路径条数,其实就是一个spfa算法的实现 import java.io.
阅读全文
摘要:1.30 Maze - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 从一个空格走cnt - k个点并标记,然后将没有标记的点设为A即可 import java.io.BufferedReader; import java.io.IOException; import java.io
阅读全文
摘要:骑士的移动 Knight Moves - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 注意输入即可,做一个剪枝 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream
阅读全文
摘要:P4961 小埋与扫雷 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 本题#17报RE错,是因为栈溢出,查询了资料之后发现,java主线程分配的栈块太小,递归深度太大就会发生这种问题,我们写爆搜不可避免要在Tle和爆栈边缘徘徊,这也是和c++相比一个比较弱势的点,那么有没有方法解
阅读全文
摘要:P3915 树的分解 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题感觉更考到了递归的本质。我们说递归,我目前的理解是,把无数个相似的问题拆分成一个个个体,然后去依次分类解决,然后返回给上层,这么一个感觉。 这道题难点虽然是普及难度,但是实话实说,我在树的方面基础还是比较薄
阅读全文
摘要:P1123 取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 本题一开始是想写双for循环,复杂度\(O(n^n)\),不出意外T了三个点,然后思考剪枝,考虑到不需要重新找,做了一个bool数组来标记,防止重新搜索已经出现过的方案,过了第四个点。 后面看了题解后,发现这一思
阅读全文
浙公网安备 33010602011771号