随笔分类 -  动态规划

摘要:前言:本文章主要记录一些 dp 入门题,都是我做过的,希望读者能从这些基础题中打好 dp 扎实的基础,有不足的地方也欢迎指出。大部分是 CodeFocesAtcoder 的题(可以公开代码)。 T1: CF191A 题意: 给你若干字符串,a 可以拼接到 阅读全文
posted @ 2022-11-16 23:04 __honey 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题目:机器分配 设f[i][j]表示前i个机器,共分配了j个的最大值,枚举第i个机器分配个数,转移f[i][j]=max{f[i-1][k]+a[i][j-k]},此题只是加了个要输出 代码: #include <cstdio> #include <cstdlib> #include <cstrin 阅读全文
posted @ 2022-03-08 23:26 __honey 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目:最大上升子序列和 就是最长上升子序列的改版,贡献由1改为a[i]其他全部不变 代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> const int N=1e3+5; using na 阅读全文
posted @ 2022-03-05 21:12 __honey 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目:友好城市 分析一下可以转化为:选取最多的点对,使得点对之间连线没有交点,没有交点说明什么,假设选定第i组,则对于任意的j,一定满足a[i].l<a[j].l && a[i].r<a[j].r或者a[i].l>a[j].l && a[i].r>a[j].r,那么就可以先按左端点排序,再求一遍最长 阅读全文
posted @ 2022-03-04 22:56 __honey 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目:Work Group 树形dp,设状态f[u][0/1] 表示以u为根节点,他的子树中选了0(偶数)1(奇数)个节点的最大价值,设x为他的一个儿子,显然f[u][1]=max(f[k][0]+f[u][1],f[k][1]+f[u][0]),f[u][0]=max(f[k][0]+f[u][0 阅读全文
posted @ 2022-03-01 23:29 __honey 阅读(96) 评论(0) 推荐(0) 编辑
摘要:题目:吃奶酪 状压dp实现,dp[i][j]表示走过状态i,停到了j的位置的最小价值。枚举状态,起点终点,转移dp[i][j]=min{dp[i-(1<<s)][k]+dis(s,k)} 其中(s!=k,dis(s,k)表示s和k的欧几里得距离)。 时间复杂度O(n2*2n),跑的还算快。 代码: 阅读全文
posted @ 2022-02-24 22:34 __honey 阅读(14) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示