碎碎念----- 突然 觉得好无聊~~ 还好 只有4天了~~ 直接上题吧~~ touch me 使用多重背包的代码是转自---键盘上的舞者---- 写得特别有想法 使用dp的代码是porker写的.. 使用搜索的 我一开始是将价值从低到高搜索的 这样TLE了,,因为速度实在是太慢了 ...
分类:
其他好文 时间:
2014-07-18 23:37:35
阅读次数:
258
背包问题(三种动态规划) 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目参考: http://blog.csdn.net/caroline_wendy/article/details/37912949可以用动态规划(Dynamic Programming, DP)求解, 可以通过记忆化搜索推导出递推式, 可以使用三种不同的方向进行求解.动态规划主要...
分类:
其他好文 时间:
2014-07-18 13:37:31
阅读次数:
329
背包问题(记忆化搜索) 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目参考: http://blog.csdn.net/caroline_wendy/article/details/37912949使用记忆化搜索, 需要存储每组的值, 下次不需要进行继续迭代, 可以降低至时间复杂度O(nW).代码:/*
* main.cpp
*
* Cre...
分类:
其他好文 时间:
2014-07-18 12:27:26
阅读次数:
234
最短路+DP(个人用的SPFA+完全背包)
做了一上午……开始想用SPFA+BFS。但是写了半天越写越乱,放弃了。
就想到了是不是可以当作背包问题(背出病了……)把鞋子可以使用的次数当作背包容量。做完全背包。
先N次SPFA把 各点的最短距离算出来,其实比较适合Floyd。(个人用vector实现伪邻接表,然后SPFA)
然后SPFA更新路径的时候,当鞋子使用次数不...
分类:
其他好文 时间:
2014-07-18 11:18:36
阅读次数:
279
题目链接:http://code.bupt.edu.cn/problem/p/417/
裸的01背包,不懂的同学可以看下本博客转载的《背包九讲》
代码:
#include
#include
#include
#include
#define N 11111
using namespace std;
int a[N];
long long b[N];
long long dp[N];
...
分类:
其他好文 时间:
2014-07-18 11:13:19
阅读次数:
137
01背包,DP简答题就行,要用滚动数组,不然内存要爆。for循环的方向很重要,虽然是简单题,但对理解DP帮助很大,听队长说要把每一个状态写出来,我试着写了一下,果然更容易理解了。 1 #include 2 #include 3 #define doumax(a,b) (a>b?a:b) 4 cons...
分类:
其他好文 时间:
2014-07-18 09:23:32
阅读次数:
181
假设所有西瓜重 Asum,所求的是用 Asum / 2 的背包装,最多装下多少。刚开始用贪心作的,WA。后来用01背包,结果TLE,数据太大。原来用的是深搜!dfs(int sum, int i) 表示当前装已了 sum,对第 i 个进行决策。用时1200多MS,不知道大牛们60MS是怎么搞的,泥煤...
分类:
其他好文 时间:
2014-07-17 22:36:47
阅读次数:
255
题意:有n种面值的硬币a[i],每种硬币有c[i]个,问能组成不大于m面值(1~m)的个数。
多重背包模板:by背包九讲。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#d...
分类:
其他好文 时间:
2014-07-17 20:16:48
阅读次数:
233
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢!
----第一节...
分类:
其他好文 时间:
2014-07-17 20:08:19
阅读次数:
294
这道题算是01背包问题吧,刚开始做DP的题目,那这一题试试也很不错hand[j]=max(hand[j],hand[j-w[i]]+d[i]);#include #include using namespace std;int hand[12900];int w[3410],d[3410];int ...
分类:
其他好文 时间:
2014-07-17 13:05:06
阅读次数:
202