![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
happen_zhang
想要过什么样的生活你自己决定
展开
-
hdu 1203 I NEED A OFFER!
hdu 1203 I NEED A OFFER! 01背包. 题目中要求求出至少拿到一个offer的概率, 这样不好求, 那就求它的对立面, 即 拿不到任何一个offer的最小概率, 这样就可以转为01背包了.#include #define MAX 10005double dp[MAX], p[MAX];int w[MAX];inline d原创 2013-09-02 00:03:05 · 547 阅读 · 0 评论 -
hdu 1248 寒冰王座
hdu 1248 寒冰王座 简单完全背包...#include #include #define MAX 10005int dp[MAX];int p[4] = {0, 150, 200, 350};inline int max(int a, int b) { return a > b ? a : b;}int main() { int T, mon原创 2013-09-02 00:08:50 · 821 阅读 · 0 评论 -
hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 01背包的对物品的选择方案只有 0(不拿) 和 1(拿)吧, 完全背包对一件物品i的选择就有 k 种啦, k 多重背包, 拆分物品分成多件, 这里是用2的幂作为拆分因子的. 假如当一件物品i的数量c和价值p的乘积c*p大于背包总量时, 可以认为物品i的数量无限啦, 所以就可原创 2013-09-02 00:21:32 · 625 阅读 · 0 评论 -
hdu 2546 饭卡
hdu 2546 饭卡 01背包...#include #include #include using namespace std;#define MAX 1005int dp[MAX], c[MAX];int n, v;inline int max(int a, int b) { return a > b ? a : b;}inline void原创 2013-09-02 00:24:57 · 562 阅读 · 0 评论 -
hdu 1159 Common Subsequence
hdu 1159 Common Subsequence 最长公共子序列的模板题啦。 这里有一个关于lcs问题的分析 最长公共子序列dp解法#include #include #define MAX 1005int dp[MAX][MAX];char a[MAX], b[MAX];inline int max(int a, i原创 2013-09-03 00:20:37 · 435 阅读 · 0 评论 -
hdu 1513 Palindrome
hdu 1513 Palindrome 求出字符串的顺序和逆序的最长公共子序列的长度, 插入数 = 字符串的长度 - 最长公共子序列长度。 这道题给出的是最长可以5000的字符串长度哦,假如使用一般的方法来开个二维数组,那么内存会不够的啦, 那么就用滚动数组吧。 这道题需要的是最长公共子序列的长度, 那么可以放弃一些之前的状态, 因为只需要dp原创 2013-09-03 00:42:02 · 662 阅读 · 0 评论 -
hdu 1677 Nested Dolls
hdu 1677 Nested Dolls 题意: 如果一个布娃娃a的h和w都大于另一个布娃娃b的h和w, 那么b就能嵌套在a里面, 要求所有娃娃嵌套后的最小个数. 先对娃娃的w按从大到小排序, 如果w相等, 则按h从小到大排序, 求出lis.#include #include using namespace std; #define MAX原创 2013-09-04 00:06:10 · 1235 阅读 · 0 评论 -
hdu 1257 最小拦截数
hdu 1257 最小拦截数 最小递增子序列.#include #define MAX 30005#define INF 0xffffffint d[MAX];int a[MAX];int binSearch(int* arr, int left, int right, int key) { int mid; while (left < right) {原创 2013-09-04 00:10:40 · 603 阅读 · 0 评论 -
hdu 2571 命运
hdu 2571 命运 动态规划, dp[i][j] = max(dp[i - 1][j], dp[i][j - 1], dp[i][j / k])#include #define MAX 1005#define INF -0xffffff#define max(a, b) (a > b ? a : b) int dp[21][MAX];int m原创 2013-09-13 14:42:31 · 556 阅读 · 0 评论