动态规划专题
动态规划算法
qq_45349225
这个作者很懒,什么都没留下…
展开
-
Vijos-p1369 难解的问题(LIS优化代码)
难解的问题描述在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可能想不出来= _ =||)(WS这人说的=。=)问题是这样的:给定一个序列<a1,a2,...,an>.求最长上升子序列(lis)p1<p2<...<pw满足a[p1]<a[p2]<...<a[pw]例如65 158 170 299 300 155 20原创 2020-11-14 16:50:18 · 192 阅读 · 0 评论 -
Vijos-p1332最大的括号(区间dp + 贪心)
最大的括号描述给出一个式子,含有N项,1<=N<=10。例如:1 + 4 - 2 - 1 + 10 - 6不同的加括号方式可以得到不同的值,求可以得到的最大值。格式输入格式第一行是N。接下来的N行,每行个整数,绝对值不超过100。正数表示前面的符号为“+”,负数表示前面的符号为“-”。输出格式输出:可以得到的最大值。样例1样例输入1614-2-110-6样例输出120限制1 second提示1 + 4 - (2 - (1 + 10) - 6)原创 2020-11-10 21:43:12 · 210 阅读 · 0 评论 -
Vijos-p1355 车队过桥问题(动态规划+ dp)
车队过桥问题描述现有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过。另外,由于小桥建造的时间已经很久,只能承受有限的重量,记为Max(吨)。管理员将N辆车按初始的顺序分组,每次让一个组过桥,并且只有在一个组的车辆全部过桥后,下一组车辆才能上桥。每辆车的重量和最大速度是已知的,而每组车的过桥时间由该组中速度最慢的那辆车决定。请你帮管理员编一个程序,将这N辆车分组,使得全部车辆通过小桥的时间最短。格式输入格式文件的第一行有3个数字,分别为Max(吨),Len(桥的长度,单位km)原创 2020-11-09 10:20:39 · 474 阅读 · 0 评论 -
Vijos-p1232核电站问题(动态规划+递推)
核电站问题描述一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。现在,请你计算:对于给定的N和M,求不发生爆炸的放置核物质的方案总数。格式输入格式输入文件只有一行,两个正整数N,M。输出格式输出文件只有一个正整数,表示方案总数。样例1样例输入14 3 样例输出113限制1s提示全部数据n<=50,m<=5解题方案一考虑每一种情况// dp[i][j] 表示第i个坑已经放置j个连原创 2020-11-08 16:42:40 · 401 阅读 · 0 评论 -
Vijos-p1143三取方格数(动态规划 多进程dp)
背景JerryZhou同学经常改编习题给自己做。这天,他又改编了一题。。。。。描述设有N*N的方格图,我们将其中的某些方格填入正整数,而其他的方格中放入0。某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角。在走过的路上,他取走了方格中的数。(取走后方格中数字变为0)此人从左上角到右下角共走3次,试找出3条路径,使得取得的数总和最大。格式输入格式第一行:N (4<=N<=20)接下来一个N*N的矩阵,矩阵中每个元素不超过80,不小于0输出格式一行,表示最大原创 2020-11-07 22:34:04 · 233 阅读 · 0 评论 -
Vijos-p1150(动态规划+区间dp)
关路灯描述某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每次关灯时也都是尽快地去关,但是老张不知道怎样去关灯才能够最节省电。他每天都是在天亮时首先关掉自己所处位置的路灯,然后可以向左也可以向右去关灯。开始他以为先算一下左边路灯的总功率再算一下右边路灯的总功率,然后选择先关掉功率大的一边,再回过头来关掉另一边的路灯,原创 2020-11-07 20:06:23 · 218 阅读 · 0 评论 -
动态规划 - (最长不降序列2例题)
合唱队形描述N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<…Ti+1>…>TK(1<=i<=K)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。格式输入格式输入的第一行是一个整数N(2<=N<=100),表示同学的总数。第一行有n个原创 2020-11-01 00:29:36 · 104 阅读 · 0 评论 -
动态规划-4-Hanoi-Tower
描述“汉诺塔”,是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有4根柱子, 而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢?为了编程方便,您只需要输出这个结果mod 10000的值。格式输入格式一个正整数n。(0<n<=50000)输出格式一个正整数,表示把n个盘子从第1根柱子移动到第4根柱子需要的最少移动次数mod 10000的值。样例1样例输入12样例输出13解题设三根柱子时,n个盘子最小移动次数为d原创 2020-10-31 20:18:56 · 512 阅读 · 0 评论 -
动态规划-(最长不下降子序列)
参考:https://oi-wiki.org/dp/basic/O(n^2)算法每一次从头扫描找出最佳答案。int a[MAXN], d[MAXN];int dp() { d[1] = 1; int ans = 1; for (int i = 2; i <= n; i++) { for (int j = 1; j < i; j++) if (a[j] <= a[i]) { d[i] = max(d[i], d[j] + 1);原创 2020-10-31 17:01:35 · 425 阅读 · 0 评论