摘要: 描述 有n堆石子排成一条直线,每堆石子有一定的重量。现在要合并这些石子成为一堆石子,但是每次只能合并相邻的两堆。每次合并需要消耗一定的体力,该体力为所合并的两堆石子的重量之和。问最少需要多少体力才能将n堆石子合并成一堆石子? 有n堆石子排成一条直线,每堆石子有一定的重量。现在要合并这些石子成为一堆石 阅读全文
posted @ 2017-08-07 14:29 淡蓝色光 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 度度熊与邪恶大魔王 Accepts: 3027 Submissions: 18837 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 度度熊与邪恶大魔王 Accepts: 3027 Su 阅读全文
posted @ 2017-08-06 16:50 淡蓝色光 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题目意思:给一个字符串和每个字母删除、插入的代价,求把它变成回文串的最小代价 dp[i][j] 表示 区间 i~j 的子串变成回文串需要的最小代价。 设字符串 ab....cd 如果 a == d,则将其变成回文串的最小代价就是将 b....c 变成回文串 如果 a != d,考虑如下四种情况 在左 阅读全文
posted @ 2017-08-05 17:59 淡蓝色光 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相 阅读全文
posted @ 2017-08-04 21:21 淡蓝色光 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 如图,给一个图,每个格子只能走一次,起点终点任意,求按路径顺序将格子里的数字拼在一起,最大的数字。 很容易想到用暴力求解的方法,但最多会有 30 个格子,O(2^30) 肯定超时了。 考虑剪枝,设当前已经找到一个 ans,若当前路径的最大长度小于 ans 的长度,则不可能比 ans 大,剪掉, 若等 阅读全文
posted @ 2017-08-01 17:06 淡蓝色光 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题目意思是,有 n 个栅栏,每个栅栏的长度给出了,要求用这 n 个栅栏构成三角形,求面积最大的 开先没看懂题目意思,不知道 n 个栅栏全部要用上。思路就是把两条边枚举出来,第三条边就知道了,然后把能构成三角形的面积都算出来,取最大值。 代码: 阅读全文
posted @ 2017-07-31 20:37 淡蓝色光 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 又是一道树状dp题目,感觉好难,看的网上的解析才做出来,不过比第一次遇到这种题目时要好多了,加油,多遇到几次就会了。 代码: 阅读全文
posted @ 2017-07-29 17:11 淡蓝色光 阅读(132) 评论(0) 推荐(0) 编辑
摘要: m 的时间,一共 n 门课程,每门课程花不同时间得到的值不同,求能获得的最大值。 用分组背包,n 门课看成 n 组物品,每个物品所花费的时间为背包容量。 分组背包: for(int i=1; i<=n; i++) // i 组物品 for(int j=V; j>=0; j--) // 容量为 j 时 阅读全文
posted @ 2017-07-28 17:19 淡蓝色光 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 给出 n 头牛,每头牛有两个属性 smartness 和 funness ,求从所有的牛里选一些牛,使这些牛的 smartness + funness 的和最大,且 smartness 的和、funness的和都要大于零。 定义 dp[i][j] 表示前 i 头牛在 smartness 为 j 时 阅读全文
posted @ 2017-07-27 14:54 淡蓝色光 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 给 n 个任务,有些任务会有前驱任务,不相关的任务可以同时做,求把这些任务做完的最少时间是多少。 比较水的一道题,任务能尽早开始就尽早开始做(从时间点0开始),如果有前驱任务,就要把前驱任务完成的时间也加上,完成时间最长的任务的时间就是答案 代码: 阅读全文
posted @ 2017-07-26 13:39 淡蓝色光 阅读(280) 评论(0) 推荐(0) 编辑