
dp
ACM_Nestling
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake
题意:有几个蛋糕,要求把他们按照这样的方式堆起来: 下面的编号比上面的小;下面的体积比上面的小。 求把这些蛋糕堆起来能得到的最大体积是多少。原创 2016-02-27 17:07:33 · 447 阅读 · 1 评论 -
hdu 1260——Tickets
题意:买票可以两个人一起买,也可以一个人买。问买票最短的时间。原创 2015-04-04 16:05:59 · 430 阅读 · 0 评论 -
hdu 1160——FatMouse's Speed
题意:找出一堆老鼠中,体重逐渐增加,但是速度逐渐下降的最长的数量。 思路:先将老鼠按照体重升序排序,体重一样的将速度降序排序。然后dp就可以了。原创 2015-04-04 16:48:42 · 548 阅读 · 0 评论 -
hdu 1176——免费馅饼
最开始的时候从前向后算的,写的很麻烦,而且一直没找到错误在哪。。 从后往前算很容易 代码如下:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[11][100005];int main(){// freopen("data.txt","原创 2015-04-04 15:39:50 · 449 阅读 · 0 评论 -
hdu 1074——Doing Homework
题意:每个作业有最后期限和写这个作业要花费的时间。每超过最后期限一个单位时间就会减掉一分。求最少减掉多少分。 思路:状态压缩。最多15个科目。最多就15位就够了。 当这一位是1的时候就表示这个作业已经完成了。全1代表全部完成。动态规划方程: dp(sta)=min{ dp(from) + (timeused(sta) - deadline(i) ) } 其中dp(sta)代表了在i状态的时候原创 2015-04-02 10:19:11 · 348 阅读 · 0 评论 -
HDU 1024——Max Sum Plus Plus
题意:一个数列分成m个子数列,求这m个子数列的最大和。 思路:动态规划。划分子问题: 要分成m个子数列,首先考虑分成m-1个子数列。再增加一个子数列的时候,可以考虑从这m-1个子数列里面找一个最大的,然后加进去一些数字。具体加数字的方案有两种。一种是在m-1个子数列的基础上新增加一个子数列。另一种是若已有了m个子数列,那么新增加的一个数字加到原有的数列中。 dp(i,m)表示分成m个子数列,将原创 2015-03-31 20:21:45 · 431 阅读 · 0 评论 -
hdu 5045——Contest
题意:ACM比赛过程中有n个人,m题,给出每人做出每道题的概率,原创 2014-10-02 16:39:18 · 494 阅读 · 0 评论 -
poj1185 炮兵阵地 (DP状态压缩)
第一次接触状态压缩的动态规划,参考了别人的博客。开始写的时候一直找不到哪里错了,总觉得自己跟别人除了变量名不一样其他的都一样。后来把map数组全部输出来以后发现原来读map数组的时候就读错了,开始用的scanf,后来发现原来scanf 会把空格一起读进去,就导致了错误。将scanf改成cin以后就过了。方法是将地图中的每种状态用二进制进行编码,存在map数组中,编码以后原本需要用二位数组才能存原创 2014-01-24 17:05:00 · 692 阅读 · 0 评论 -
hdu 5067——Harry And Dig Machine
题意:地图上有不超过10个土堆,原创 2014-10-19 15:41:03 · 494 阅读 · 0 评论 -
uvaoj 11324 - The Largest Clique
题意:找图中一个最大的单向连通图代码如下:原创 2014-10-17 15:44:40 · 432 阅读 · 0 评论 -
hdu 5074——Hatsune Miku
题意:要用一些片段组成一首歌,歌曲的原创 2014-11-14 22:16:05 · 597 阅读 · 0 评论 -
ZOJ - 2315 New Year Bonus Grant
题意:微软公司要给员工发钱。公司员工是严格的树形结构。规定一个人要么接收上级的钱,要么给下级发钱,两者不能都有。问所有员工最多可以拿到多少钱原创 2015-04-20 20:37:41 · 587 阅读 · 0 评论 -
hdu 4284——Travel
题意:一个国家有最多200个城市。一个人住在城市1,他想去其中15个城市打工。每次打工先要交手续费,然后才能挣一些钱。从一个城市到另一个城市需要花一定路费。问这个人能否从1城市出发把他所有想打工的城市都打一遍工,然后回到1.原创 2015-07-25 19:40:08 · 464 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2) Problem C——Famil Door and Brackets
题意:有一串由m个括号组成的字符串(设为s)。要在这个字符串前面和后面加上若干个括号,使得:1.字符总数为n;2.左括号跟右括号总量相等;3.任意一个前缀,他的左括号数量大于等于右括号数量。求共有多少中加的方法原创 2016-02-27 16:16:20 · 389 阅读 · 0 评论 -
hdu 4734——F(x)
题意:给了一个函数f(a),要求从0到b之间有多少个数x满足f(x)<=f(a)原创 2015-08-06 15:49:44 · 379 阅读 · 0 评论 -
ZOJ - 3611——Ice Valley
题意:找到一个地图中尽量多的宝藏并在尽可能短的时间内走到指定地点。原创 2015-08-05 16:04:30 · 401 阅读 · 0 评论 -
hdu 4278——Faulty Odometer
题意:找出小于等于一个数的所有不含3和8的数有多少个。原创 2015-07-24 15:07:47 · 421 阅读 · 0 评论 -
HDU 4745——Two Rabbits
题意:两只兔子在一圈石头上跳。每个石头有自己的值。要求两只兔子在任意时刻站的石头的值必须一样。一只兔子顺时针跳,一只兔子逆时针跳。两只兔子都不能跳到越过自己已经跳过的石头。问两只兔子最多能一起跳几次。原创 2015-07-23 19:27:43 · 418 阅读 · 0 评论 -
hdu 4739——Zhuge Liang's Mines
题意:诸葛亮在坐标系里面埋了一些雷。只有当四个雷组成一个正方形的时候,才能将这四个雷排掉。只考虑跟坐标轴平行的正方形。问最多能排掉多少雷。原创 2015-07-22 19:28:55 · 478 阅读 · 0 评论 -
ZOJ - 3620——Escape Time II
题意:一个人要从房间里逃出来并且拿尽量多的珠宝。问最多可以拿多少 思路:先把房间两两距离求出来,然后状态压缩原创 2015-08-03 17:41:01 · 415 阅读 · 0 评论 -
hdu 4906——Our happy ending
题意:数组长度是n,最大元素是L,且数组中存在几个元素的和是T。求有多少个这样的数组。原创 2015-07-31 18:44:35 · 468 阅读 · 0 评论 -
poj 2411——Mondriaan's Dream
题意:用1*2的长方形铺去将一个h*w的长方形铺满,求一共有多少种可以的铺法 思路:状态压缩原创 2015-07-20 17:27:04 · 470 阅读 · 0 评论 -
hdu 4901——The Romantic Hero
题意:求一个数组左边一些数亦或的结果等于右边一些数与的结果的总和。原创 2015-07-31 13:42:33 · 413 阅读 · 0 评论 -
hdu 5064——Find Sequence
题意:要找出一个数组原创 2014-10-12 19:57:29 · 598 阅读 · 0 评论 -
hdu 5025——Saving Tang Monk
题意:孙悟空要去救唐僧,原创 2014-09-24 09:24:13 · 724 阅读 · 0 评论 -
HDU 3496——Watch The Movie
这道题是一个二维的背包问题,和0-1背包问题极其类似,只不过多了一个维度而已。第一遍做的时候错误,是因为没有分清楚数组每一维的含义。在这里,dp(i,j,g)的i表示取到第i个物品的时候,j表示到达时刻j的时候,g表示取得的物品的数目。最开始把j有时候当做小于等于时刻j的时候,有时候当做正好时刻k的时候,导致了开始的错误。改正了这个错误以后,提交还是一直不对。发现在ans比较的时候出问题了原创 2014-03-06 09:44:38 · 585 阅读 · 0 评论 -
HDU 2191 1171(DP,多重背包问题)
这道题是多重背包问题的模板,代码如下:#includeusing namespace std;int cost[500];int w[500];int dp[100];int main(){// freopen("data.txt","r",stdin); ios::sync_with_stdio(false); int C; cin>>C; while(C--){ i原创 2014-02-25 17:10:39 · 625 阅读 · 0 评论 -
背包九讲--各种背包问题
原文地址:http://blog.sina.com.cn/s/blog_8cf6e8d90100zldn.htmlP01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或转载 2014-02-19 17:15:29 · 496 阅读 · 0 评论 -
HDU 4571——Travel in time(dp)
Bob厌倦了游戏,离开了Alice,独自一人去长沙,Yuelu山,世界之窗等是Bob想要游览的地方。但是他的时间很有限,他不能浏览它们全部。假设长沙有N个景点,Bob给每一个景点Si定义了一个满意值。如果他游览了这个经典,他的总满意值就会增加Si。Bob希望在有限的时间T里,他可以从景点S开始,选择性的游览一些景点,最终到达景点E,使得总满意值可以达到尽可能的最大。很明显游览一个景点同样需要一些时原创 2014-02-16 19:02:01 · 621 阅读 · 0 评论 -
HDU 4529 郑厂长系列故事——N骑士问题(dp,状态压缩)
这道题相当于是poj的炮兵阵地问题的变形。基本模仿炮兵阵地问题就做出来了。将棋盘用二进制形式保存在数组中,有皇后的地方保存为1,其余为0。刚开始做的时候一直是第一组数据正确的,第二组数据差了几十,然后以为是哪里没有限制好。后来只测试第二组数据的时候竟然是对的。感觉到可能是哪里数组没有初始化。后来把保存棋盘的数组初始化了就对了。也给了以后做题的一个小经验,测试数据的时候,刚开始最好把样例一组原创 2014-01-26 06:49:42 · 1305 阅读 · 0 评论 -
ZOJ 3735——Josephina and RPG(dp)
给出一个矩阵,说明两个队伍之间打架时胜利的概率,然后给出AI所用的队伍,要求求出玩家可以获胜的最大概率。我的方法是将概率矩阵存放在二维数组Matrix中,将电脑所用的队伍存放在数组AI中。动态规划方程是dp(j,k)=max{dp(j,k),dp(p,k-1)*Matrix(p,AI(k))};dp(j,k)表示在打完第k层以后,玩家所拥有的队伍为j。当然还要进行一些处理,保证dp(j,k原创 2014-02-19 09:52:10 · 1002 阅读 · 0 评论 -
HDU 1114 1248(DP,完全背包)
这道题是直接套用完全背包问题的一道题目。刚开始做的时候给数组dp赋初值是-1,但是这道题是一道求最小值的问题,所以初值不能赋-1。本来思路是-1作为一个标记,如果是-1就进行特殊处理,可是真正在dp中间,还是存在很大问题。所以dp的初值还是赋成最大比较方便。代码如下:#includeusing namespace std;const int maxn=100000000;__int64原创 2014-02-24 22:27:41 · 601 阅读 · 0 评论 -
HDU 2602 1203 2955
HDU 2602第一种没有优化空间的代码:#include#includeusing namespace std;const int maxn=1005;int value[maxn];int vol[maxn];int dp[maxn][maxn];int main(){// freopen("data.txt","r",stdin); ios::sync_with原创 2014-02-23 11:50:52 · 597 阅读 · 0 评论 -
UVaOJ 10003 - Cutting Sticks(dp)
题目大意是要对一段木头按照要求进行切割。切割的成本按照切割木头的长度进行计算。比如切割一段长10的木头就要花费10的钱。给定一段木头的长度,再给出要对木头切割几次,然后输入一串数字,表示从木头的一头数,长度为几的地方要进行切割。要求计算出切割这段木头最低的成本。声明一个二维数组dp,dp(i,j)表示了从位置i到位置j时切割所需要的最少价值。写出状态转移方程dp(i,j)=min{dp(i原创 2014-01-20 13:12:30 · 684 阅读 · 0 评论 -
UVaOJ 674 - Coin Change
这道题也算是一道模板题吧。入门经典上面的硬币问题是要求到达一个特定的数值的最少或者最多的硬币数量,这道题要求的是求出到达一个特定的数值的方法总数。刚开始想的是用跟入门经典上面一样的方法(假设总数用tot数组保存),声明一个一维数组,然后tot[ i ]=sigma{ tot[ i - val[ t ] ] }后来发现这样做会产生很多重复,比如面值是6的情况,会1,5跟5,1就会重复计数。那原创 2014-01-16 08:40:49 · 752 阅读 · 0 评论 -
HDU 3652——B-number(数位DP)
这道题参考了百度文库中的课件http://wenku.baidu.com/link?url=zZWAUhUwQPzg1s6s4N1AAi-hv3hHaVf83-Wxp4zCWGBeerEHOddF1V1miCLNrZnVvARM2vTBaWAkKqgZXx26h8SHw82-rB7wxa3rDSskZjW题意是找到从1到n中间包含“13”以及可以被13整除的数字的个数。dfs(len,原创 2014-03-16 14:49:41 · 678 阅读 · 0 评论 -
HDU 2089——不要62(数位DP)
题目要求就是求出从n到m之间所有不包含4跟62的数目的个数。参考了别人的文章以后用dfs写的动态规划。http://blog.youkuaiyun.com/dgq8211/article/details/9296953在dfs过程中加入记忆化搜索。dp(len,top)表示剩余len位的时候最高位是否为6(top==1为是)时,可以有的数字的个数。dfs(len,top,flag)中len表示剩余原创 2014-03-14 10:31:58 · 554 阅读 · 0 评论 -
hdu 5000——Clone
题意:一堆克隆人,每个人有N个维度,如果有一个人的所有维度都不大于原创 2014-09-14 22:16:21 · 567 阅读 · 0 评论 -
Codeforces Round #263 Appleman and Tree(树形DP)
题意:一棵树节点被染成白色和黑色,问有多少种切割方法使得原创 2014-08-30 17:21:42 · 657 阅读 · 0 评论 -
Codeforces #264 div.2 D. Gargari and Permutations
题意:给出k个数组,要求原创 2014-09-08 18:03:55 · 534 阅读 · 0 评论