动态规划
文章平均质量分 75
_Wilbert
这个作者很懒,什么都没留下…
展开
-
UVAlive-4643 Twenty Questions
题目大意:有m个问题,n个人,给出这n个人对这m个问题的回答,只有“Yes”和“No”这两种回答,所以用1表示yes,0表示no,然后问你最少用几次询问问题能分别出所有人。一个例子,比如3 4001011100000用两次即可,先问第3个问题,如果是1则问第2个问题,如果是0则为第1个问题,得到的答案是2而不是3!解题思路:状态压缩动态规划+记忆化搜索原创 2016-08-27 20:56:45 · 693 阅读 · 0 评论 -
Codeforces-713C Sonya and Problem Wihtout a Legend
题目大意:给你一个序列,让你把它变成一个严格递增的序列。对每个数字,无论+1或者-1都消耗1,问你把它变成严格递增的序列的最小cost解题思路:DP首先根据题目,a[i+1] >= a[i] + 1,两边同时减去i+1,就得到a[i+1] - (i + 1) >= a[i] - i设b[i] = a[i] - i,则b序列是不降序列,那么问题就变成了将序列变成一个不降序列所原创 2016-10-10 21:05:20 · 477 阅读 · 0 评论 -
POJ-2955 Brackets
题目大意:给你一个只由'('、')'、'['、']'组成的字符串,问你这个字符串的子串能够匹配的最长长度是多少。能够匹配的意思是这样的:1.如果s是个空串,那么它是匹配的。2.如果子串是(s)或者[s],那么它也是匹配的,其中s是匹配的3.如果s是匹配的,s'也是匹配的,那么ss'也是匹配的解题思路:标准的区间DP直接按照上面3个定义来考虑区间DP就好。代码:原创 2016-09-07 11:26:19 · 680 阅读 · 0 评论 -
HDU-5900 QSC and Master
题目大意:有n对二元组(key, value),两个相邻的元组间如果key的不互质,那么可以被移除,并获得两个元组的value值之和的分数,问你最多能有多少分数。解题思路:区间DP按照最裸的区间DP模型用记忆化搜索写是要超时的...本题的模型可以参考POJ-2955 Brackets题解这里有~设dp[i][j]表示区间[i, j]能获得的最大分数状态转移就可以写成dp原创 2016-09-19 18:25:33 · 687 阅读 · 0 评论 -
HDU-1074-Doing Homework
Problem DescriptionIgnatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in原创 2015-08-23 20:06:06 · 453 阅读 · 0 评论 -
Codeforces-687C The Values You Can Make
Pari wants to buy an expensive chocolate from Arya. She has n coins, the value of the i-th coin is ci. The price of the chocolate is k, so Pari will take a subset of her coins with sum equal to k原创 2016-07-01 13:07:21 · 1439 阅读 · 0 评论 -
Codeforces-698A Vacations
Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the following information about each of this n days: whether that gym opened and whether a contest was原创 2016-07-20 14:55:07 · 598 阅读 · 0 评论 -
AOJ-190 乘积最大问题
题目大意:设有一个长度为N的数字串,要求使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1部分的乘积能够为最大。其中n 解题思路:动态规划dp[i][j]表示当i个乘号在第j位的时候,前面的最大值。这样状态转移方程就得到为:dp[i][j] = max(dp[i][j], dp[i-1][k] * subString(s, k, j)); 其中k为[i-1,原创 2016-08-12 10:09:36 · 801 阅读 · 0 评论 -
UVA-10817 Headmaster's Headache
题目大意:有s个学科,现在在学校有n个教师在教书,这些教师必须要被雇佣,现在还有m个教师正在应聘。现在给出这n个在职教师的工资和能教的科目,给出m个应聘教师的工资和能教的科目,现在希望这s个科目,每个都有至少两个教师教授,问你最少需要支付的工资是多少。解题思路:动态规划。状压DP。dp[i]表示i这个状态需要支付的最少工资。因为每个科目至少两个教师,且最多只有8个科目,所以很明显状原创 2016-08-24 11:47:26 · 556 阅读 · 0 评论 -
Codeforces-710E Generate a String
题目大意:有三个操作,插入删除和复制。其中插入和删除均耗费x时间来插入或删除一个字符,复制耗费y时间将当前文件内所有字符复制并粘贴(就是字符*2),现在需要生成n个字符,问你最少需要的时间。解题思路:DPdp[i]表示生成i个字符需要的最少时间,那么状态转移方程就是dp[i] = min(dp[i-1] + x, dp[i+1] + x, dp[i / 2] + y);代码原创 2016-08-23 13:06:44 · 860 阅读 · 0 评论 -
BZOJ-1177 [Apio2009]Oil
解题思路:一种非常神奇的枚举策略...不过这种枚举策略...是需要DP来完成的嘛...这种神奇的题目我独立肯定是做不来的...所以我是看着这篇博客写的...传送门嘛...这篇博客好就好在...你必须要想通了你才知道这个代码是怎么回事...太可怕了%%%首先,因为题目说了, 必须要是三个k*k的矩形,那么其实相对来说比较容易的想法就是一个个去枚举,但是肯定会超时。那么考虑一个问题原创 2016-09-04 14:37:41 · 624 阅读 · 0 评论 -
BZOJ-1010 [HNOI2008]玩具装箱toy
解题思路:斜率优化DP这道题= =嘛算是斜率优化的入门题目了。还是非常经典的感觉。首先考虑,这道题目有经验的小伙子一眼就可以想出来状态转移方程是什么。显然是 dp[i] = min(dp[i], dp[j] + pow(sum[i] - sum[j] + i - j - 1 - L, 2));但是想出来之后,想都不用想就知道这个题目,显然是不会是这么简单就能解决的了。因为n原创 2016-09-13 12:39:42 · 578 阅读 · 0 评论 -
UVAlive-3363 String Compression
题目大意:给你一个字符串,让你把它压缩,比如gogogo可以压缩成3(go),letsgogogoletsgogogo可以压缩成2(lets3(go)),然后问你压缩后的最短长度。解题思路:区间DP。一开始我以为是个基础的DP。没想到在第二个样例过不去,才发现这不是个基础的DP,也不是...这应该算是基础的区间DP吧。首先设dp[i][j]表示从i到j这个区间内的字符串能压缩的原创 2016-08-27 21:12:24 · 645 阅读 · 0 评论 -
入门动态规划问题
hihocoder这周欠了三题,于是今天一波结束了。然后发现这三个题目似乎都很简单,并且还是一类问题里面的。所有就写成一次的吧。动态规划问题,说起来,理论上是每个搞ACM的人都会学的,而且应该是最开始就学的。因为动态规划问题是各种各样比赛的宠儿啊,几乎每次比赛必出动态规划。楼教主的“男人八题”里面就有几个动态规划问题,是需要结合数据结构和动态规划才能解决的问题。不过不在这次范围内。原创 2016-12-18 15:38:21 · 501 阅读 · 1 评论