动态规划
文章平均质量分 80
wjhshuai
这个作者很懒,什么都没留下…
展开
-
hihocoder买零食
买零食Time Limit:5000MS Memory Limit:262144KB 64bit IO Format:%lld & %lluSubmit Status Practice HihoCoder 1272Description小Ho很喜欢在课间去小卖部买零食。然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰原创 2016-11-30 09:56:36 · 498 阅读 · 0 评论 -
nyoj-传纸条(一)
NYOJ-----------传纸条(一)这题是一道动规题目,原本打算在原矩阵上动手脚(预处理)发现预处理只能找一条路的最大值!于是,如何判重就非常重要了!于是绞尽脑汁!!!!!!!!!如果做标记的话预处理就没有用了!换一个思路:题目求来回两条路的最大值,然而发现去的路反过来也可以当回来的路意思就是选中一条路,既可以当回去的路,也可以当去的路那么原创 2017-07-13 16:51:02 · 290 阅读 · 0 评论 -
NYOJ--整数划分问题
整数划分问题总结整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。转载 2017-07-15 17:30:47 · 789 阅读 · 0 评论 -
VUA-10891-Game of sum
Game of sum题目大意:给你一个串数字,每次只能选一边,然后取走一些数,你拿到的数字就是你的分数,求先手的人可以比后手的人最多多拿多少分区间DP问题难就难在两头都可以取,而且对面也不傻,采取的也是最优策略···依旧按照DP的思想,大问题转化为小问题首先要直接计算最大差多少分是非常难的但是知道先手最大拿多少分,那么就可以计算出后手拿多少分(反正总分就原创 2017-07-31 17:32:06 · 257 阅读 · 0 评论 -
NYOJ-1023-还是回文
还是回文给你一串字符,每添加或者删去一个数都会产生一定的费用,然后给你每个字符删去或者添加分别需要多少钱,问使一个字符串变为回文字符串需要多少费用区间DP问题石子合并很像,如果石子合并理解了,这个也就应该能想出来但是有一点,就是添加或者删去只需要存一个最小的就行了其他的不用考虑#include#include#include#include#include原创 2017-08-01 10:39:07 · 222 阅读 · 0 评论 -
NYOJ-746整数划分(四)
整数划分 题目链接经典区间DP问题,但是和石子合并又有些区别石子合并的dp并不适合套用在这道题上原创 2017-08-02 10:04:39 · 228 阅读 · 0 评论 -
nyoj-737石子合并(一)
石子合并(一)石子合并是一道典型的动规问题动规问题的实质其实就是从小问题到解决大问题(把大问题分解,一直分解到问题小到直接暴力可以解决)合并的规则就是,最小的问题是两堆石子合并!其次是三堆的,然后四堆可以开一个dp[i][j]数组表示从i到j的最优解(花费最小)而我们要从两堆石子开始合并,那么就要保证第一次更新最优解的时候i和j相差为1然后让相差的值依次递增,即再枚原创 2017-07-25 18:15:00 · 359 阅读 · 0 评论 -
NYOJ-1111游戏人生
游戏人生区间DP问题和石子合并又很像但是题目中有一点没有说明白,导致我卡了很久比如 1 2 3三只野怪,如果把2野怪杀死,那么1和3就变为相邻了其他的就比较好想了状态转移方程的含义:找一个中间点k,先把从i到k-1的都打死,然后打死k+1到j的最后打死k注意,打死k的时候,k的边上是i-1和j+1,所以后面要加一行代码#include原创 2017-08-03 10:50:09 · 205 阅读 · 0 评论 -
NYOJ-括号匹配(二)
括号匹配(二)题意:给你几对括号,让你看一下括号是否配对,输出最少添加多少个括号可以使括号配对这道题和括号配对(一)不一样,刚开始我也想用栈试试看能不能,但是如何记录需要添加多少对括号?如果用最后栈里还有多少元素没出栈那是不行的,比如 [ ( ] ) 在栈里剩余是4个,其实只需要2个括号就行了那么只有用别的方法了这题是一道区间DP,参考上原创 2017-07-26 18:56:02 · 257 阅读 · 0 评论 -
HDU3363 Count the string
Count the string题目链接这道题是活用KMP算法的next数组需要透彻理解KMP的作用,KMP的原理并且用到了递归~~~~~先介绍一种比较暴力的解法。记忆化搜索参考文章接下来就是比较快一点的算法了next数组表示相同前缀后缀的长度但是现在要找所有前缀出现的次数n原创 2017-10-09 15:23:41 · 219 阅读 · 0 评论 -
NYOJ-304 节能(区间DP)
典型的动规DP题但是又和一般的DP有不同这道题每次只可能有两个选择,那就是向右边走或者向左边走而且,每次走完会有一个位置,这个位置一定是最左边或者最右边开一个数组 DP[ i ][ j ][ x ] (X只取0或者1)表示从i到 j 需要的最少油量 0表示到区间i点停止,1表示到区间j点停止#includeusing namespace std;const in原创 2017-11-27 19:21:19 · 237 阅读 · 0 评论 -
HihoCoder - 1702 --矩阵迷宫
题目链接这道题猛一看是搜索,但是搜索的话一般会超时这里就用到了DP因为只有向下和向右两个方向这个和树形DP非常的像dpr[i][j][k] 表示到达i j点并拐弯K次且方向朝右的最小代价dpd[1][i][j][k]表示到达i j 点并拐弯K次且方向朝下的最小代价#include<stdio.h> #include<string.h> #define For(a...原创 2018-03-31 10:47:40 · 277 阅读 · 0 评论 -
UVA-CD
题目链接这道题就是01背包+记录路径01背包很好整,但是记录路径需要我们外开一个数组用来记录路径这是第一种方法第二种方法是dp的时候用二维数组如果那么找路径的时候,看没有加入该物品前,dp的最大值有没有改变,如果无改变,那么说明该物品没有被选上方法一:#include<cstdio>#include<cstring>#include<algorithm>u...原创 2018-04-03 16:41:06 · 373 阅读 · 0 评论 -
爬楼梯问题总结(持续更新)
爬楼梯问题总结(持续更新)因为最近做了几道爬楼梯问题,可自己还是不会做。因为我刚开始用的自己的方法,没有学习通用方法(简单方法)下面我还是来总结一下目前遇到的爬楼梯问题如果有更好的爬楼梯问题,请将链接发至评论,鄙人~将认真学习,总结来更新此博客先说一下方法思想,然后再给出具体例题有...原创 2017-04-02 17:13:29 · 13366 阅读 · 3 评论 -
HDU1059Dividing
题目大意:给你6种石头,包括每种石头的个数,求是否可以将这些石头平分.......................................这题很简单的多重背包!!!具体有多简单?一般的多重背包用暴力肯定超时!!!然而这道题用暴力稍微优化一点点不会超时!!!!!然而我超时!!!我用的多重背包超时了!!!exm??暴力AC代码:#include #原创 2017-07-11 15:23:23 · 259 阅读 · 0 评论 -
hoj第六届程序设计团体赛 D Game
GameTime Limit: 1000 MSMemory Limit: 100000 KTotal Submit: 100(25 users)Total Accepted: 35(22 users)Rating: Special Judge: NoDescriptionKim is原创 2016-12-12 21:03:28 · 227 阅读 · 0 评论 -
hdu -Monkey and Banana
Monkey and BananaProblem DescriptionA group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time,原创 2017-01-13 20:22:24 · 430 阅读 · 0 评论 -
HDU-2191 -悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 26825 Accepted Submission(s): 11302Problem Description急!原创 2017-01-14 17:33:34 · 258 阅读 · 0 评论 -
HDU-1003 Max sum
A - Max Sum 简单DP题主要就一思路,代码很好实现思路;(1)要记录开头和结尾,那么就开一个结构体,用来储存当前最大值和开头位置和结束位置(2)判断 如果加的数 temp 大于 temp 和前面的最大值 (即新加的数temp自己单独更大,而前面的最大值为负)刷新开头和结尾 (3)如果加的temp为正,而前面的最大值正(保证不与上面情况重复),那么说原创 2017-01-11 11:15:11 · 320 阅读 · 0 评论 -
HDU-1159 -Common Subsequence
G - Common Subsequence原创 2017-01-12 09:15:31 · 254 阅读 · 0 评论 -
四川省赛-E king's trouble II
Time Limit: 1000 MS Memory Limit: 131072 K DescriptionLong time ago, a king occupied a vast territory.Now there is a problem that he worried that he want to choose a largest square of原创 2017-03-20 10:27:41 · 267 阅读 · 0 评论 -
HDU-Bone Collector(背包问题中的小细节)
这道题完全就是一个01背包问题,一般同样的题我不写两边的,浪费时间,浪费精力,但是为什么这道题我就写了两遍?因为我发现一个问题是我以前所未发现的我首先按照以前的思路写的第一次#include#includeint m[1000],v[1000];int dp[1005][1005];int max(int a,int b){ if(a>=b) re原创 2017-01-11 15:41:11 · 295 阅读 · 0 评论 -
HDU-CRB and His Birthday(动态规划本质未认清)---01背包与完全背包的结合!
This problem will be judged on HDU. Original ID: 541064-bit integer IO format: %I64d Java class name: MainPrev Submit Status Statistics Discuss NextType: None原创 2017-03-15 19:47:55 · 348 阅读 · 0 评论 -
woj-Divide by Six (dp)(方法巧妙)
请以此题面为准无解时输出-1s而不是WTF数据可能有前导零Input file: standard inputOutput file: standard output Time limit: 1 secondMemory limit: 512 mebibytesA positive integer number n is written on a black原创 2017-04-19 20:12:43 · 497 阅读 · 0 评论 -
武大校赛-Your NP has been charged full
Your NP has been charged full(题目链接)题目大意:给你一个数N,表示有N回合,然后跟3*N个数表示每回合有3个buff,ai,bi,ci,这些buff可以提高伤害,并且可以持续3回合,伤害计算为(1+∑ai)*(1+∑bi)*(1+∑ci)求最高伤害动规题目,我刚开始的思路就是举出所有的情况找出其中的最优解!这个思路是正确的原创 2017-04-21 16:50:25 · 434 阅读 · 0 评论 -
两个数求不能组合成的最大数
在网上看到了类似的题目,本来觉得是一个益智类题目,于是好奇来做发现和2017年蓝桥杯的一道编程题很相似。于是拿来认真做一下题目意思:小明开商店,只有2种类型的糖果,第一种每包有5个,第二种每包有3个,小明发现,他可以用这两种糖组合成很多数目的糖果,如8 13 等。但是也有一些数目组合不了,如1 2 4 6 。那么问题来了,求最大的无法组合的数这原创 2017-05-04 19:32:49 · 5163 阅读 · 4 评论 -
hdu-5543-Pick The Sticks
Pick The Sticks(题目链接)这道题其实是01背包的变形。对,掐头去尾就是一个01背包所以这道题的处理方法其实和01背包很像!但是难点还在。就是如何处理头和尾我第一次是列举出所有的头,特殊处理wa了。自己还是没有理解背包。犯了同样的错误详情请点击链接对于头和尾,只有两个特殊情况,那么和上...原创 2017-04-26 20:48:09 · 450 阅读 · 1 评论 -
HDU-1978-How many ways
题目链接注意!机器人走到路径的终点不需要把能量全部消耗完思路:初始化dp【1】【1】为1每输入一个数,把能从这个点走到的点的值全部更新一下#include<iostream>#include<string.h>#include<stdio.h>using namespace std;int dp[205][205];int main(){ i...原创 2018-04-05 09:32:17 · 131 阅读 · 0 评论