上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页
摘要: 棋盘分割问题 题目大意,将一个棋盘分割成k-1个矩形,每个矩形都对应一个权值,让所有的权值最小求分法 很像区间DP,但是也不能说就是 我们只要想好了一个怎么变成两个,剩下的就好了,但是怎么变,就是变化的必要条件是什么 k——分割的个数肯定是必须的,而表示一个矩形,至少要知道两个点,所以x1,y1,x 阅读全文
posted @ 2018-07-24 21:03 Butterflier 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 区间DP-刷字符问题-思维考察 翻译了一下这个题,一看还是有点难以入手,标明了是区间DP问题,但是如何DP呢 来捋一捋思路吧 dp[i][j]肯定是从i刷到j所要的次数但是它的i和j是s1串还是s2串呢,怎么能把两个串结合起来考虑呢,这是一个问题,它的转移方程是什么呢 没有想到先去考虑母串的情况 是 阅读全文
posted @ 2018-07-24 15:57 Butterflier 阅读(257) 评论(0) 推荐(0) 编辑
摘要: HDU3506环形石子合并问题 线性的石子合并问题比较好理解,环形的转成线性的方法就是扩展数组 1 2 3 . . . n 1 2 3 ... n 依据是我们最优的取值可以是 1 n也能是 2 n + 1,所以完全可以线性来做 for(int i = 1;i <= 2 * n;i++) { if(i 阅读全文
posted @ 2018-07-24 10:55 Butterflier 阅读(544) 评论(0) 推荐(0) 编辑
摘要: HDU3480_区间DP平行四边形优化 做到现在能一眼看出来是区间DP的问题了 也能够知道dp[i][j]表示前 i 个节点被分为 j 个区间所取得的最优值的情况 cost[i][j]表示从i到j元素区间中的值,这里可以直接排序后简单求出——也就是我们的代价函数 这样其实就能够做出来了,但是空间复杂 阅读全文
posted @ 2018-07-24 09:26 Butterflier 阅读(402) 评论(0) 推荐(0) 编辑
摘要: HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的区间DP问题 d p[i][j]表示前i个节点,分为j个区间的最优策略值 cost[i][j]为从i到j节点的策略值 阅读全文
posted @ 2018-07-23 16:00 Butterflier 阅读(195) 评论(0) 推荐(0) 编辑
摘要: POJ1160 题目大意:一系列村庄在一维坐标系上有序的排列,建设p个邮局,问各个村庄到邮局的最短距离和。 线性区间DP问题 dp数组的值为最短/最优距离 村庄和邮局为限制 dp[i][j]表示前i个村庄有j个邮局的最优解 分析最小子问题可得前i个村庄有1个邮局的最优解——中间的村庄 所以分解区间d 阅读全文
posted @ 2018-07-23 13:09 Butterflier 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 入门区间DP,第一个问题就是线性的规模小的石子合并问题 dp数组的含义是第i堆到第j堆进行合并的最优值 就是说dp[i][j]可以由dp[i][k]和dp[k+1][j]转移过来 状态转移方程 dp[i][j] = min(dp[i][j],dp[i][k] + dp[k+1][j] + sum[i 阅读全文
posted @ 2018-07-23 10:45 Butterflier 阅读(270) 评论(0) 推荐(0) 编辑
摘要: HDU2159_二维完全背包问题 输入有:经验,忍耐度,怪物种数,限制杀怪数 每一种怪物对应获得的经验值和消耗的耐久值 输出:剩下的最大忍耐度 限制:忍耐度,杀怪个数 在这里把忍耐度看成背包的容量,杀怪个数限制作为第二维 dp[i][j]表示在背包容量为i的时候,放了j件物品所产生的价值 接下来就是 阅读全文
posted @ 2018-07-21 08:40 Butterflier 阅读(381) 评论(0) 推荐(0) 编辑
摘要: HDU2844买表多重背包问题题目大意都不大好懂,是利用手头上的硬币看看能组合出多少种价格,也就是跑完背包,看看有多少背包符合要求 剩下的就是多重背包的问题了1.第一个处理办法就是直接当01背包进行存储和处理2.第二个处理办法就是扫描物品时,当这个物品和数量产生的总价格大于限制时,采用完全背包的方法 阅读全文
posted @ 2018-07-20 19:05 Butterflier 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 做01背包做到的这个LIS,常见的n2会超时,所以才有nlogn可行 先来介绍一下n2 dp[i] 表示该序列以a[i]为结尾的最长上升子序列的长度 所以第一层循环循环数组a,第二层循环循环第i个元素前面的元素,里面做一个基本升序判断,然后找最大值 定义一个外部变量记录最大值 nlogn 用了一个数 阅读全文
posted @ 2018-07-20 16:38 Butterflier 阅读(118) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 13 下一页