![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 76
尉水风
这个作者很懒,什么都没留下…
展开
-
蓝桥-ALGO-4 结点选择
算法训练 结点选择 时间限制:1.0s 内存限制:256.0MB 锦囊1使用树型动态规划。锦囊2用F[i]表示从子树i中选择结点,且结点i必须被选择的最大值,用G[i]表示从子树i中选择结点,且结点i必须不被选择的最大值。则F[i]=a[i]+\sum(G[j]),其中a[i]表示结点i的权值,j是i的子结点。G[i]=\sum(max(F[j], G[j])),其中j是i的子...原创 2018-05-22 17:11:01 · 226 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping!
最长上升子序列Problem DescriptionNowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I int原创 2017-08-31 10:31:17 · 267 阅读 · 0 评论 -
Arpa's weak amphitheater and Mehrdad's valuable Hoses
背包问题?!+并查集一组朋友之中最多只能有一个人去,所以需要在写0-1背包时需要调整for循环的顺序错解:for(int i=1;i<=n;i++) { sum_b=0,sum_w=0; if(pre[i]==i) { for(int j=0;j<vn[i].size();j++) { sum_b+=bn[vn[i][j]]; sum_w+=w原创 2017-09-15 17:20:38 · 346 阅读 · 0 评论 -
货币系统
题解:点击打开链接http://blog.csdn.net/tsaid/article/details/7802951问题 C: 货币系统时间限制: 1 Sec 内存限制: 128 MB题目描述母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。[In their own rebellious way],,他们对货币的数值感到好奇。原创 2017-08-22 18:30:39 · 675 阅读 · 0 评论 -
Cash Machine
这道题会卡普通多重背包的时间,所以需要进行优化,我用的是二进制优化的多重背包,这种方法的主要思想是把多重背包变为01背包,比如,k个大小为w价值为v的物品,照着最简单的方法,就是1*w,1*v为一类,2*w,2*v为一类,……k*w,k*v为一类但是这样的时间效率和之前多重背包的并没有区别,然而你可能发现似乎并不需要这么多类的物品,比如,3*w,3*v可以由1*w,1*v和2*w,2*v相加得到,原创 2017-08-15 18:36:35 · 333 阅读 · 0 评论 -
采药
问题 B: 采药时间限制: 1 Sec 内存限制: 128 MB题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医 师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时原创 2017-08-22 16:56:04 · 368 阅读 · 0 评论 -
滑雪
这道题目单纯的用深搜会超时,所以用记忆化搜索来减少搜索的次数,在找递推公式时感觉和求最长递增子序列比较相似,即在任意一个点以它为末端的递增序列取决于它四周(上下左右)的点,深搜的同时更新dp数组的值,若遇到dp数组某点的的值是已经更新过的就直接使用这个值而不是多次重复操作Michael喜欢滑雪这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你原创 2017-08-15 16:15:23 · 394 阅读 · 0 评论 -
【字符串】最长回文子串
本来是做动态规划找到这道题的,然而这道题用动态规划并不好做,最暴力的方法就是枚举端点i j,判断这个范围内的字符串是否为回文,不过时间复杂度是O(n^3),不太理想;另外一种方法就是,枚举每一个点,看它两端的点是否相同,若相同则证明这三个字符是回文,接着扩大范围判断这五个字符是不是回文……但是这样只能判断奇数长度的回文,所以还要判断偶数长度的回文,同样枚举每一个点,判断这个字符能否和它右端的字原创 2017-08-21 21:59:47 · 561 阅读 · 0 评论 -
装箱问题
问题 A: 装箱问题时间限制: 1 Sec 内存限制: 128 MB题目描述【问题描述】 有一个箱子的容量为V(V为正整数,且满足0≤V≤20000),同时有n件物品(0的体积值为正整数。 要求从n件物品中,选取若干装入箱内,使箱子的剩余空间最小。 输入:1行整数,第1个数表示箱子的容量,第2个数表示有n件物品,后面n个数分别表示这n件 物品各自的体积。原创 2017-08-22 09:25:56 · 477 阅读 · 0 评论 -
超级楼梯
斐波那契数列+记忆化搜索有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?Input输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1Output对于每个测试实例,请输出不同走法的数量Sample Input223Sample Output12#include原创 2017-08-31 21:46:05 · 249 阅读 · 0 评论 -
核反应堆
在时间允许的情况下,可以使用cin cout来避免长整型(long long和__int64)的输出问题某核反应堆有两类事件发生: 高能质点碰击核子时,质点被吸收,放出3个高能质点和1个低能质点; 低能质点碰击核子时,质点被吸收,放出2个高能质点和1个低能质点。 假定开始的时候(0微秒)只有一个高能质点射入核反应堆,每一微秒引起一个事件发生(对于一个事件,当前存在的所有质点原创 2017-09-01 20:37:58 · 484 阅读 · 0 评论 -
蓝桥-ALGO-124 数字三角形
算法训练 数字三角形 问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; . (图3.1-1)输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形输出格式 最大总和(整数...原创 2018-04-26 18:47:08 · 135 阅读 · 0 评论 -
树状数组 背包 模板
//树状数组#define lowbit(x) ((x)&(-x))#define maxn ???int an[maxn];int getsum(int x){ int sum=0; for(int i=x;i>0;i-=lowbit(i)) sum+=an[x]; return sum;}void update(int x,i...原创 2018-03-30 22:14:12 · 174 阅读 · 0 评论 -
计数dp
对于上文所述的递推关系(注意这里是对j的i划分):我们这时讨论j>i的情况,可以假设有一个大小为i的集合,dp[i][j-i]是对j-i的i划分,dp[i][j]的状态就可以从前者转移而来,即前者划分所对应的大小为i集合所有元素+1之后得到的新集合,可以保证这个新集合所有的元素都>0;(也就可以说,原集合存在0并没有什么影响,即使原集合的大小比i小也无影响,可以向集合中添加0去增加个数...原创 2018-03-30 14:31:13 · 1735 阅读 · 0 评论 -
L2-014. 列车调度
L2-014. 列车调度由Dilworth定理(最小反链划分 == 最长链)可知最少的下降序列个数就等于整个序列最长上升子序列的长度火车站的列车调度铁轨的结构如下图所示。Figure两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7...原创 2018-03-17 17:58:08 · 229 阅读 · 0 评论 -
石子合并
石子合并(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。输入有多组测试数据,输入到文件结束。每组测试数据第一行有一个整原创 2018-03-16 18:24:29 · 374 阅读 · 0 评论 -
蓝桥—ALGO-3 K好数
算法训练 K好数 问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。原创 2018-01-27 18:30:37 · 215 阅读 · 0 评论 -
最少拦截系统
两种方法:1.动态规划点击打开链接http://www.cnblogs.com/dongsheng/archive/2012/07/23/2604777.html2.贪心点击打开链接http://www.cnblogs.com/kuangbin/archive/2012/08/03/2621110.html某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是原创 2017-08-16 20:59:18 · 204 阅读 · 0 评论 -
Neighbor House
The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They've also decided that no two neighboring houses will be painted the same color. The neighbors of house i a原创 2017-09-01 20:41:05 · 517 阅读 · 0 评论 -
Longest Ordered Subsequence
A numeric sequence of ai is ordered if a1 a2 aN. Let the subsequence of the given numeric sequence ( a1, a2, ..., aN) be any sequence ( ai1, ai2, ..., aiK), where 1 i1 i2 iK N. For example, sequen原创 2017-08-14 21:47:47 · 228 阅读 · 0 评论 -
Common Subsequence
子串:对于一个字符串变量,例如"adereegfbw",它的子串就是像"ader"这样可以从中找到的连续的字符串。字符串"adereegfbw"本身也属于它本身最长的子串。(摘自百度百科)子序列:在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列。(摘自维基百科)DescriptionA subsequenc原创 2017-08-14 21:20:42 · 269 阅读 · 0 评论 -
Bone Collector
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave … The bone collecto原创 2017-08-14 19:46:19 · 173 阅读 · 0 评论 -
The Values You Can Make
对于一个集合它的子集的个数为2^n(对于一个有n个元素的集合,一个元素存在和不存在子集中就有2种不同的子集,所以n个元素就是2^n个不同子集)dp[i][j] i表示现在的金额,j表示构成现在金额的钱的一个子集dp[i][j+a]表示a这个元素在这个金额i的子集中反之,dp[i][j]表示a这个元素不在这个金额i的子集中题解:点击打开链接http://blog.csdn.n原创 2017-08-19 17:17:46 · 374 阅读 · 0 评论 -
Buns
Lavrenty, a baker, is going to make several buns with stuffings and sell them.Lavrenty has n grams of dough as well as m different stuffing types. The stuffing types are numerated from 1 to m. Lavre原创 2017-08-18 19:04:28 · 745 阅读 · 0 评论 -
Piggy-Bank
完全背包的题目,但是有一个难点就是要把背包装满 for(int i=1;i<=n;i++) { for(int j=vol[i];j<=w;j++) { if(dp[j-vol[i]]!=inf) dp[j]=min(dp[j],dp[j-vol[i]]+val[i]); } }关键就是里面的的if语句这就能保证背包能装满,另外需要对dp数组进行初原创 2017-08-18 10:34:19 · 187 阅读 · 0 评论 -
Vacations
题解:点击打开链接http://www.cnblogs.com/hsd-/p/5687750.html这位博主的动态规划写得略复杂一些Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya knows the following information原创 2017-08-17 21:09:00 · 186 阅读 · 0 评论 -
Bing it
对于每一个点可以有两种状态转移到它:1.由前面和它相同的数字转移到它 2.由它左侧的数字转移给它DescriptionI guess most of you played cards on the trip to Harbin, but I‘m sure you have never played the following card game. This card game has N roun...原创 2017-08-17 19:46:55 · 268 阅读 · 0 评论 -
Help Jimmy
题解:1.动态规划点击打开链接http://blog.csdn.net/alalalalalqp/article/details/92062992.dijkstra点击打开链接http://www.cnblogs.com/chenxiwenruo/p/3529252.html分析一下代码1.先对所有的平台排序,把起点也看做为平台加入排序(从大到小)2.对于经过的平台的两个端点都原创 2017-08-17 17:43:59 · 252 阅读 · 0 评论 -
免费馅饼
这是道数塔的题目,纠结了我好久,具体步骤是:先记录每个时刻每个点的馅饼个数,然后从底部向上更新分析一下样例(行表示时间,列表示位置):都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身原创 2017-08-16 13:44:33 · 197 阅读 · 0 评论 -
数塔
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗?Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 Output对于每个测试实例,输出可能得到的最大和,每个原创 2017-08-16 10:56:53 · 276 阅读 · 0 评论 -
Elimination
完全背包的题目,代码实现并不难,但是要理解题意,英语是硬伤~题意(人工翻译):赢得其中一场淘汰赛的选手将会入围2214年的"Russian Code Cup"比赛淘汰赛的赛制分为初赛和复赛,每场初赛都有c道问题,初赛的获胜者是排名前n位的选手,每场复赛的都有d道题目,复赛的获胜者只有一名,另外,在过去的决赛获胜的k名选手直接被邀请参加决赛而不用淘汰赛在所有的的淘汰赛结束之后应该有不原创 2017-08-19 20:12:47 · 433 阅读 · 0 评论 -
Monkey and Banana
求最大高度,而且要保证上一个物体的底面边长要小于下一个物体的底面边长dp的题关键就是找到递推公式,这道题很像求最大上升子序列(如果没有限制条件的话),我是从塔顶向下计算就是求一个递增的面积的子序列,要保证高度最大详细题解(这位博主写的很棒):点击打开链接http://blog.csdn.net/lishuhuakai/article/details/8060529A g原创 2017-08-19 21:43:16 · 294 阅读 · 0 评论 -
饭卡
注意一下m电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。 某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 Input多组数据。对于每原创 2017-08-14 16:45:43 · 251 阅读 · 0 评论 -
Big Event in HDU
Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't know that Computer College had ever been split into Computer College and Software College in 2002.原创 2017-08-14 17:58:52 · 463 阅读 · 0 评论 -
最长公共子序列
问题 A: 最长公共子序列时间限制: 1 Sec 内存限制: 32 MB题目描述给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就把Z叫做X的子序列。例如:Z=是序列X=的一个子序列,Z中的元素在X中的下标序列为。现给你两个序列X和Y,请问它们的最长公共子序列的长度是多少?输入输入包含多组测试数据。原创 2017-08-21 20:29:43 · 268 阅读 · 0 评论 -
最长上升子序列
问题 A: 最长上升子序列时间限制: 2 Sec 内存限制: 64 MB题目描述一个数列ai如果满足条件a1 a2 aN,那么它是一个有序的上升数列。我们取数列(a1, a2, ...,aN)的任一子序列(ai1, ai2, ..., aiK)使得1 i1 i2 iK N。例如,数列(1, 7, 3, 5, 9, 4, 8)的有序上升子序列,像(1, 7), (3, 4,原创 2017-08-20 21:48:15 · 402 阅读 · 0 评论 -
最大连续子序列
问题 A: 最大连续子序列时间限制: 1 Sec 内存限制: 32 MB题目描述给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 输入测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( K= 10000 ),第2行给出K个整数,中间用空格分隔,每个数的原创 2017-08-20 21:36:34 · 244 阅读 · 0 评论 -
Fibonacci
这道题目异常诡异用记忆化搜索做的问题 A: Fibonacci时间限制: 1 Sec 内存限制: 32 MB题目描述The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} are defined by the recurrence: F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2 Writ原创 2017-08-20 21:16:01 · 403 阅读 · 0 评论 -
不要62
正解应该是用数位dp来做,但是用暴力也能过(需要打表)杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号原创 2017-08-20 18:34:06 · 426 阅读 · 0 评论 -
Max Sum Plus Plus
这道题目是求m个不相交子串,使得这些子串的和最大,对于我来说这道题目挺难的,大体说一下思路吧,假设在前面已经有了i-1个子串(iNow I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more diffi原创 2017-08-20 18:05:28 · 323 阅读 · 0 评论