摘要: 使用记忆化搜索,可大大提升时间效率.... 1 int n,W;//n为重量 2 int w[MAX],v[MAX]; 3 int dp[MAX][MAX]; 4 5 //从第i个物品开始挑选总重小于j的部分 6 int rec(int i,int j) 7 { 8 //记忆化搜索 9 /*if(d 阅读全文
posted @ 2016-02-29 20:27 Vmetrio 阅读(841) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5281 贪心题目,但是看看我的博客里边相关贪心的题解实在是少的可怜,这里就写出来供大家一起探讨。题意还是比较好理解的,这里有一个小小的坑点:枪的数量,和怪物的数量,不一定是相等的,所以我们这里要特殊处理一 阅读全文
posted @ 2016-02-29 11:36 Vmetrio 阅读(302) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2111 好久不刷题,拿到水题切了切,,,,,题意刚开始都没有理解,,,,真是弱了,,,, 简单贪心,,,,注意分割后的价值和对应的体积成正比 1 #include <stdio.h> 2 #include 阅读全文
posted @ 2016-02-29 11:17 Vmetrio 阅读(162) 评论(0) 推荐(0)
摘要: 木板长为:21 输入: N=3 L={8,5,8} 输出: 34 由于木板的切割顺序不确定,自由度很高.首先,切割的方法可以参见二叉树,每一个叶子节点就对应了切割出的一块块木板.叶子节点的深度就对应了为了得到对应木板所需的切割次数,开销的合计就是个叶子节点的 木板的长度*节点的深度 的总和. 最短的 阅读全文
posted @ 2016-02-29 11:00 Vmetrio 阅读(851) 评论(0) 推荐(0)
摘要: 输入: N=6 R=10 X={1,7,15,20,30,50} 输出: 3 可从最左边的点开始,距离为R以内的最远的点.因为最左的区域没有覆盖的意义,所以应该尽可能覆盖靠右的点.不断重复此过程. 1 int N,R; 2 int X[MAX]; 3 4 void solve() 5 { 6 sor 阅读全文
posted @ 2016-02-29 10:26 Vmetrio 阅读(190) 评论(0) 推荐(0)
摘要: 输入: n=6 S="ACDBCB" 输出: ABCBCD 不断取S的开头和末尾中较小的一个字符放到T的末尾 1.按照字典序比较S和将S反转后的字符串'S'. 2.如果S较小,就从S的开头取出一个文字,追加到T的末尾. 3.如果S较小,就从S的末尾取出一个文字,追加到T的末尾. 1 const in 阅读全文
posted @ 2016-02-29 10:07 Vmetrio 阅读(215) 评论(0) 推荐(0)