动态规划小结

现在做一下动态规划的小结 1.背包问题 这是一类超级经典很基础的动态规划,好多动态规划题目都能用背包的方法写出或者是背包的变形. 这些在背包九讲中说的很清楚:链接(这是网上我随便找的一个讲的比较全的博客),这些背包问题给我的一个启发就是:转换,通过一系列的操作,转换为01背包 背包给我的感受:很大...

2015-09-10 20:57:21

阅读数:289

评论数:0

HDU3951_Coin Game

Coin Game Problem Description 一堆n个硬币围成一圈,两个人轮流拿走连续k个硬币,拿走最后一堆的人获胜 问你第一个人获胜还是第二个 思路: 这是NIM游戏改编版本 但是道理都一样,俗称模仿游戏 这里有一个特例,k==1的时候输赢已经确认了,因为此时,他...

2015-09-10 03:59:15

阅读数:162

评论数:0

UVA1442_Cave

Cave 大致题意: 一个洞穴,已经i位置地面高度和顶的高度,要求在这个洞穴里面储蓄尽可能多的燃料,而且任何位置燃料不能碰到顶点 思路: 先从左往右扫描一下得出每一个点燃料能达到的最大高度,然后右边一样扫一遍,两个取最小值,然后累加 看起来很简单,可是实践起来很麻烦,需要讨论好不同条件下...

2015-09-10 03:46:07

阅读数:385

评论数:0

UVA1608_Non-boring sequences

Non-boring sequences 大致题意: 给你一个字符串,问你他的任一子串是否都包含一个唯一的字符 思路: 看似简单,实际一丁点思路都没有 后面看汝佳的讲解都看了好长时间 大概思路就是,先找一个唯一字符,然后递归这个字符左右两边的字符串,看他们是否满足,知道只含一个元素.但...

2015-09-10 03:15:08

阅读数:232

评论数:0

UVA12174_Shuffle

Shuffle大致题意:你有一个随机播放的播放器,有s首歌,在这s首播放完之前不会重新打乱顺序,现在给出一段只含有1~s的n长度序列,现在问你下次随机排序发生的时间有多少种可能其实就是问你这个播放记录的起点有多少种可能思路:先暴力枚举一下开头s个字符分别为起点,然后验证这样是否合法这样关注的焦点就...

2015-09-10 03:10:00

阅读数:317

评论数:0

UVA10271_Chopsticks

Chopsticks 大致就是有一堆筷子,知道了他们的长度,现在选长度为abc的三个筷子a 思路: 第一次看到这个题目,人太弱完全没思路,因为之前状态转移都会有一个明显的子局面或者可以根据新增的i+1变量就行状态转移,可是这一题,一直想不出来如何转移,以为新增的筷子可以是a或b或c,但后面看...

2015-09-10 02:36:28

阅读数:214

评论数:0

UVA1629_Cake slicing

Cake slicing 给你一个矩形大小,和每个樱桃的坐标,现在让你去切使得切之后的小矩形包含一个樱桃,每次切的代价是切痕的长度,问你最小代价是多少 思路: 首先要明白一点,不能切除一个不含樱桃的矩形,因为那样完全没必要切,只是在浪费代价,那么就需要递归求解这个问题了,把这个问题扔给子局面...

2015-09-10 02:01:38

阅读数:152

评论数:0

HDU3461_Code Lock

Description 一排可以转动的密码锁,现在给你很多个区间,你可以操作同时转动这个区间内的密码锁,能够通过转动使之一样的密码锁为一种密码 如可以操作2~4这个区间:那么ABBB 和AAAA是一个密码 问你这个密码锁总共有多少种不同的密码 思路: 如果这题没有转动限制的话,那么答案很...

2015-09-10 00:57:27

阅读数:157

评论数:0

HDU3449_Consumer

这个是一个背包的变形题,很值得仔细体味 大致题意: 这个比普通背包多一个限制:再选每一类物品之前必须要先购买一个篮子来装,篮子有一定的价格,其他就和背包是一样的了 思路: 为了能够体现篮子的价值,我们可以多加一维表示当前买第i个篮子和不买的情况 dp[i][j][0]...

2015-09-10 00:25:43

阅读数:145

评论数:0

UVA12589_Learning Vector

大致题意: 有n个向量要你选k个,把这k个向量连起来,画出来的与x轴围成的面积最大 思路: 这个是斜率dp,让斜率大的排在前面,记忆化搜索的时候要加入一个当前高的信息,因为这个向量形成面积不仅和斜率有关还有当前高有关 #include #include #include #include ...

2015-09-09 17:20:00

阅读数:122

评论数:0

UVA1632_Alibaba

题目链接 大致题意:直线上面有n个点,第i个点坐标为xi,它会在di时间消失,你可以选择从任何位置出发,求访问完所有点的最短时间,无解输出no solution 思路:这有一个难点就是,不知道状态该怎么转移,其实仔细想想之后会发现我们在走的时候一定是一个区间的慢慢扩大,假设第k次之前做的都是完...

2015-09-09 16:57:37

阅读数:610

评论数:0

Uva10817_Headmaster's Headache

大致题意就是: 一个学校招聘人,自带老师m个,n个求职的人,需要讲授s个课程,已经知道了每个人工资,问怎么才能让各科至少有两个老师(自带的必须要) 这题刚看的时候大概知道是要状态转移,可问题是,状态转移有点复杂,不知道应该怎么转移,后面看了题解之后,发现这个又是一个神奇的一道题目,dp状态压缩+记...

2015-09-09 16:24:16

阅读数:273

评论数:0

HDU3450_Counting Sequences

题意:让你从所给的序列中找到他的子序列,使他们相邻之间差距不超过d,问有多少个转移的子序列分析:这题第一眼大概就知道是状态转移,sum[i]表示以前i个中有多少个,那么sum[i+1]比sum[i]多了一个以第i+1为结尾的子序列,那么只需要知道前面当中以x(x与第i+1距离不超过d)结尾的子序列...

2015-09-09 13:19:43

阅读数:187

评论数:0

UVA11572_Unique Snowflakes

超级经典的题目,扫描区间,滑动窗口对这题目的最大感受就是,单独看这个题目,其实不难,但是很多我感觉挺难或者没做出来的题目,都是由这些若干个经典的算法组合而成的滑动窗口便是一个典型的例子!!!!遇到过好几道用到滑动窗口的题目而本题则赤裸裸的滑动窗口题意:输入一个长度为n的序列A,找一个尽可能长的子序...

2015-09-09 02:10:11

阅读数:480

评论数:0

UVA11054_Wine trading in Gergovia

大致题意: 直线上有n个村庄,要么买酒要么卖酒,运酒到隔壁村庄需要这个酒的权值个劳动力 问你至少需要多少劳动力 题目保证了所有权值和为0!!!!!!!!!!!!这个意义重大,表示这是一个封闭的群体 这是一个隐藏条件,他表明只要前i个村子不能自卖自买,那么一定会出口或者进口的 最少需要多少...

2015-09-09 02:02:26

阅读数:176

评论数:0

UVA11134_Fabled Rooks

大概题意: 在n*n的棋盘上面放n个车,能否使他们互相不攻击(即不能在同一行一列),并且第i个车必须落在第i的矩形范围(xl,yl, xr,yr)之内 xy互相并不干扰,所以就可以把这个二维问题压缩成一维的,即在x轴能否让第i个点落在第i个区间内,如果x或y轴不存在这样放法,那么二维肯定也不可...

2015-09-09 01:26:22

阅读数:563

评论数:0

UVA1152_4 Values whose Sum is 0

中途相遇法,这题目总结后我感觉和第一篇博客很像,他们都取了中间,也许这就是二分的魅力吧这题题意就是从ABCD四个集合中选四个元素使他们的和为0题意很简单,但是实现起来很容易超时,不能一个一个枚举然后就想到了枚举两个,那么新生成EF两个集合大小为n方,然后如何查找?最容易想到的就是用map标记,但汝...

2015-09-09 01:21:59

阅读数:177

评论数:0

CF_127E reader Display

这道题其实找到规律之后其实不难,和破损的键盘一样,都有点递推转移的感觉 题意: 你可以进行这样一次操作:选一个点,然后把这个点横切竖切直到正对角线上面的点,全部翻转过来,问你要进行多少次操作才能把所有的点都翻转过来 思路: 多次模拟之后可以发现最右上方的点仅能是...

2015-09-09 00:39:54

阅读数:166

评论数:0

UVA1595_Symmetry

给出平面上n个点,问你能不能找到一个竖线让他们对称 这道题后面发现真的不难,又不止一种方法 我当时写的很挫,死脑筋的就找一个点的对称点存不存在,用结构体存点信息,在排序用find找,,然后不知道一堆wa 后面发现排序之后,如果位置i和n-i-1这两个点不对称就一定不存在!!!! 可以用反证...

2015-09-08 23:59:33

阅读数:158

评论数:0

UVA_548Tree

这是一个很经典的建树,然而当时不会!!!! 给你一个中序和后序 先建一个二叉树,然后找最优解(最优解就是一个叶子节点到根节点权值最小, 同时本身权值最小) //生成一棵树 int build(int L1, int R1, int L2, int R2) { //表示1为中序,2为后序 ...

2015-09-08 23:42:24

阅读数:147

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭