动态规划
AC_jie
这个作者很懒,什么都没留下…
展开
-
poj 3176 Cow Bowling
这就是一个动态规划问题,关键在于表格的记录,#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; bool cmp(int a,int b) { return a > b; } int a[500][500]; int b[500][500]; int ma原创 2017-09-05 22:45:11 · 283 阅读 · 0 评论 -
The King’s Ups and Downs
今天又开始做DP,今天这个题是一个组合递推DP,一开始在思考加入一个新的人后,会对前面的数列有什么影响,但是卡在了,这个新加入的人的高度,就直接看了题解。 才发现状态的划分是按照从小到大的顺序来进行的,这样也很符合状态的设计,因为递推性,当有n - 1个不同身高的人已经排好时,再加入一个更高的,其实也复合逻辑,并且之所以这样设计状态对于问题来说也是便于处理和正确的。 接着就是加入这个新的人后,...原创 2018-04-17 11:12:34 · 525 阅读 · 0 评论 -
Working out 三维DP
今天开始研究DP,今天是4.10 离省赛开始还有25天。 先来说一下这个题,一开始把题意看错了,没有看到必须在一个位置相遇。菜啊 这个题一开始想到了将问题转化成计算从相遇点到起点和终点的距离。 但是还是不知道怎么划分状态,看完题解后,想到了一个点就是”累积性”。联想到了概率上的分布函数,可能这就是“递推的本质”。 说一下这个题的思路。 先来说一下为什么将问题转化成相遇点到各个角的最大...原创 2018-04-10 20:08:10 · 264 阅读 · 0 评论 -
(zoj3747) Attack on Titans
今天开始做DP,今天的这个DP是带有限制条件的,并且和组合数学有关。 首先这个题第一个突破点是将至少条件转化为至多的条件,这个很重要,决定了解题的方向。因为在规划问题状态的时候很难对至少进行处理,并且不易进行状态的划分。 这样的话,将问题就转化成了,至多连续n个G,至多连续k个R 减去 至多连续 m-1 个G,至多连续K个R,现在问题的状态就转换成了求至多上面两个状态的方法数。 然后考虑...原创 2018-04-14 22:06:10 · 731 阅读 · 2 评论 -
1.1.3 Friday the Thirteenth 黑色星期五
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int a[10]; int time1[18] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int time2[18] = {0,31,29,31,30,31,30,31...原创 2018-02-20 19:24:48 · 392 阅读 · 0 评论 -
poj 1014 多重背包
就是判断弹珠是否可以平分,一开始想到了背包模型。一开始转画成了01背包。wa了。那是就一直在纠结物品的cost是什么,假设成了1,后来一直不对,看了题解他们将cost 设定等于就是将cost等同于weight.就是在寻找也可以转化这样想,将所给的标准就是cost,也就是体积的话,问题就转化成了在不考虑价值的情况下。怎么分配可以放满容积为 sum / 2 的背包。 #include&l...原创 2018-02-26 21:04:42 · 365 阅读 · 0 评论 -
Codeforces Round #335 (Div. 2) C. Sorting Railway Cars 最长连续上升子序列
今天队内比赛心态有问题,脑子也有点抽,不知为什么.可能是太浮躁了吧.修炼! 先来说下这个题,一开始分析出来了找最长连续(值)上升子序列. 但是不知道怎么样写.看了大牛的写法,跪拜! 分析下:如果让每一个数当序列起点会超时(n^2).所以考虑怎么优化. 开一个数组记录以K为起点的满足要求序列的长度. 有如下关系 dp[k] = dp[k + 1] + 1 如果暴力的话求出的结果之间是有原创 2018-01-09 10:27:28 · 156 阅读 · 0 评论 -
poj2385 Apple Catching
今天开始刷dp,菜鸟慢慢飞,先来解释下题意, Farmer John一开始是站在树1下面,他可以在树1和树2之间来回移动W次,每分钟只能移动一次,也可以不移动每分钟有且只有一棵树会掉苹果,问在时间为T分钟内,他可以得到多少个苹果. 来分析下这个题, 首先很明确用DP做. 第二点来划分这个问题,最终结果是 在t的当前值 加 t - 1 的最优解,同时还要考虑转移次数的问题,状态可以这样划分,d原创 2017-10-05 16:04:30 · 326 阅读 · 0 评论 -
poj 1260 Pearls
今天搞这个题开始有点思路,后来发现自己思路错了,后来分析了一下,原因如下,第一点没有完全读懂题,漏掉了一些条件,第二,还是没有掌握动态规划的思维过程。 大牛的博客#include<cstdio> #include<iostream> using namespace std; const int M = 110; int num[M],price[M],sum[M],dp[M]; int main(转载 2017-10-07 17:39:09 · 215 阅读 · 0 评论 -
HDU 2709 Sumsets
我是真的菜啊,ORZ! 这个题是一个递推题,首先分析,对于奇数来说,奇数的个数等于它上一个偶数的个数,对于偶数,可把它想成+1 + 1的方式,把它分解成加第一个1的时候它变成了奇数,由奇数的计算方法可得它等于奇数 - 1,当加两个1时,就相当于加2了,此时的项应该不含+1,因为含+1的话,就和前面的情况重复了,含+2的项的将它提取公因子可发现它与n / 2的项数相同。#include<cstdio原创 2017-09-07 20:57:54 · 216 阅读 · 0 评论 -
动态规划的意义
https://www.zhihu.com/question/23995189/answer/35429905 转载 自 知乎 王勐的回答. 这个解释感觉很不错,分享一下给大家共享,同时感谢大佬的指点. orz !!! 作者:王勐 链接:https://www.zhihu.com/question/23995189/answer/35429905 来源:知乎 著作权归作者所有。商业转载...转载 2018-04-20 09:30:04 · 523 阅读 · 0 评论