会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Sugewud
古之成大事者,不惟有超世之才,亦必有坚韧不拔之志。
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
14
15
16
17
18
19
20
21
22
···
34
下一页
2018年8月19日
caioj 1065 动态规划入门(一维一边推3:合唱队形)
摘要: 就是最长上升子序列,但是要用n^2的算法。#include#include#define REP(i, a, b) for(int i = (a); i a[j]) b1[i] = max(b1[i], b1[j] + 1); } for(int i = n ...
阅读全文
posted @ 2018-08-19 08:38 Sugewud
阅读(189)
评论(0)
推荐(0)
2018年8月18日
caioj 1063 动态规划入门(一维一边推1:美元和马克)
摘要: 这道题一开始我是这么想的最后的答案肯定是某次的马克换回来的,但这个该怎么确定??实际上应该把范围缩小,只看最后一次和倒数第二次之间有什么联系。可以发现,只有两种可能,最后一天换或者不换。换的话就要求出最后一天之前最多的马克,不换的话就是最后一天前最多的美元。设d[i]...
阅读全文
posted @ 2018-08-18 16:36 Sugewud
阅读(218)
评论(0)
推荐(0)
51nod 子序列的个数 (动规分析方法)
摘要: 这道题的分析方法我很需要学习学习。一开始我想的是f[i][j]表示前i个数子序列长度为j的个数然后发现新加入一个数的时候会和前面的重复,这个时候不知道该怎么处理这种重复。其实我再继续往下想就可以想到,这些重复的序列都有一个特征,结尾都是新加入的这个数那么这就启示我们可...
阅读全文
posted @ 2018-08-18 16:05 Sugewud
阅读(160)
评论(0)
推荐(0)
51nod 更难的矩阵取数问题 + 滚动数组优化
摘要: 这里要求要走到终点再走回来,可以转化为两个人走。那么我们可以先粗暴的设f[x1][y1][x2][y2]为第一个人走到(x1, y1), 第二个人走到(x2, y2)的最大价值。那么这样空间会很大,通过观察可以发现,一个走的步数=横坐标+纵坐标,因为走一步一定是横坐标...
阅读全文
posted @ 2018-08-18 15:15 Sugewud
阅读(158)
评论(0)
推荐(0)
51nod 多重背包问题(二进制优化)
摘要: 有N种物品,每种物品的数量为C1,C2......Cn。从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数)。求背包能够容纳的最大价值。我们可以转化成01背包来做,但是...
阅读全文
posted @ 2018-08-18 12:18 Sugewud
阅读(257)
评论(0)
推荐(0)
51nod 循环数组最大子段和
摘要: 这个问题就是在原来的基础上加上了可以循环。那么我们可以分两种情况处理,一种是有从尾到头的,例如1表示取,0表示不取,则是11000011一种是没有跨越的, 即000111100那么对于第二种情况可以直接用最大字段和做,关键是第一段要怎么处理。这里需要用到逆向思维,在1...
阅读全文
posted @ 2018-08-18 12:13 Sugewud
阅读(113)
评论(0)
推荐(0)
51nod 正整数分组
摘要: 将一堆正整数分为2组,要求2组的和相差最小。显然我们可以把所有可能组合成的数求出来。然后从总和的中间开始往大找,找到了就是其中一个的分组,就可以求出答案了。#include#include#define REP(i, a, b) for(int i = (a); i ...
阅读全文
posted @ 2018-08-18 12:09 Sugewud
阅读(115)
评论(0)
推荐(0)
51nod 01背包
摘要: #include#include#define REP(i, a, b) for(int i = (a); i = w; j--) f[j] = max(f[j], f[j - w] + v); } printf("%d\n", f[m]); return 0;...
阅读全文
posted @ 2018-08-18 12:07 Sugewud
阅读(101)
评论(0)
推荐(0)
51nod 最大子段和问题
摘要: 给出一个整数数组a(正负数都有),如何找出一个连续子数组(可以一个都不取,那么结果为0),使得其中的和最大?用f[i]表示以i为结尾的最大字段和,也就是说i一定要取,那么f[i] = max(a[i], f[i-1] + a[i])只有两种选择,之前的一段取或者不取。...
阅读全文
posted @ 2018-08-18 12:06 Sugewud
阅读(119)
评论(0)
推荐(0)
51nod 矩阵取数问题
摘要: 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。f[i][j] = max(f[i-1][j], f[i][j-1]) + a[i][j];边界: f[i][0] = 0; f[0][i] =...
阅读全文
posted @ 2018-08-18 12:02 Sugewud
阅读(116)
评论(0)
推荐(0)
上一页
1
···
14
15
16
17
18
19
20
21
22
···
34
下一页
公告