
动态规划
星辰浩宇
路在脚下
展开
-
计蒜客 蒜头君的蜡笔
问题描述蒜头君收到了一个生日礼物——一盒精美的蜡笔,这可把他高兴坏了。蒜头君在完成一道图论的题目后,拿着蜡笔想给题目上的一个无向图进行填色。无向图上一共有 n 个点,编号从 0 到 n - 1,那么该图就会有 2^n - 1个非空子图。 蒜头君想给每 i 个子图进行填色,使得任意一条边连接的两个点的颜色不同,现在他想知道给第 i 个子图填色,最少需要多少种不同的颜色,记为 s i 。蒜头君...原创 2019-04-04 07:14:55 · 309 阅读 · 0 评论 -
计蒜客 删除最少的元素
问题描述给定有 n 个数的 A 序列:A1,A2,A3…An 。对于这个序列,我们想得到一个子序列 Ap1,Ap2⋯Api⋯Apm(1≤p1< p2<⋯pi<⋯< pm≤n),满足 Ap1≥Ap2≥⋯≥Api≤⋯≤Apm 。从 A 序列最少删除多少元素,可以得到我们想要的子序列。输入格式第一行输入一个整数 n,代表 A 序列中数字的个数。第二个输入 n 个整数,代...原创 2019-04-02 17:07:25 · 238 阅读 · 0 评论 -
计蒜客 最长公共子序列
问题描述这次我们的问题非常简单,蒜头君有两个字符串 a 和 b,蒜头想知道两个字符串的最长公共子序列的长度。输入格式第一行输入一个字符串。第二行输入一个字符串。(字符串只包含字母,每个字符串长度不超过 1000)输出格式输出二者的最长公共子序列的长度,占一行。样例输入computereducation样例输出2#include<bits/stdc++...原创 2019-04-02 17:17:12 · 274 阅读 · 0 评论 -
计蒜客 回文串
问题描述一个字符串如果从左往右读和从右往左读都一样,那么这个字符串是一个回文串。例如:”abcba”,”abccba”。蒜头君想通过添加字符把一个非回文字符串变成回文串。例如:”trit”,可以添加一个’i’ 变成回文串”tirit”。请你用程序计算出,对于一个给定的字符串,最少需要添加几个字符,才能变成回文串。输入格式输入一个长度为n(1≤n≤3000) 的字符串。(字符串只包含字...原创 2019-04-03 18:09:49 · 1168 阅读 · 0 评论 -
计蒜客 蒜头君的积木
问题描述蒜头君酷爱搭积木,他用积木搭了 n 辆重量为 wi的小车和一艘最大载重量为 W 的小船,他想用这艘小船将 n 辆小车运输过河。每次小船运载的小车重量不能超过 W。另外,小船在运载小车时,每辆小车会对小船有一个损坏值si,当多辆小车一起运载时,该趟运载对小船的损坏值为船上所有小车的最大损坏值。现在蒜头君想知道,如何用小船运载 n 辆小车,可以使得对小船造成的总损坏值最小。输入...原创 2019-04-03 18:09:03 · 378 阅读 · 0 评论 -
计蒜客 消除回文串
问题描述蒜头君喜欢中心对称的字符串,即回文字符串。现在蒜头君手里有一个字符串 SS,蒜头君每次都会进行这样的操作:从 SS 中挑选一个回文的子序列,将其从字符串 SS 中去除,剩下的字符重组成新的字符串 SS。 蒜头君想知道,最少可以进行多少次操作,可以消除整个字符串。输入格式 输入一行输入一个字符串 S(1≤length(S)≤16),字符串均由小写字母组成。输出格式输...原创 2019-04-03 18:27:25 · 659 阅读 · 1 评论 -
poj 2253 (方法二)dijkstra变形 路径最大边的最小值
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tourists' sun...原创 2019-07-18 16:27:59 · 312 阅读 · 0 评论 -
计蒜客-划分整数(动态规划)
划分整数蒜头君特别喜欢数学。今天,蒜头君突发奇想:如果想要把一个正整数 nnn 分解成不多于 kkk 个正整数相加的形式,那么一共有多少种分解的方式呢?蒜头君觉得这个问题实在是太难了,于是他想让你帮帮忙。输入格式共一行,包含两个整数 n(1≤n≤300)n(1 \leq n \leq 300)n(1≤n≤300) 和 k(1≤k≤300)k(1 \leq k \leq 300)...原创 2019-08-01 20:37:38 · 396 阅读 · 0 评论 -
计蒜客-数列求值(递推)
样例输出2-761.49解题思路:利用递推的思想,见下图满分代码如下:#include<bits/stdc++.h>using namespace std;const int N=1010;double c[N];int n;int main(){ scanf("%d",&n); double start,end; ci...原创 2019-08-02 06:52:34 · 227 阅读 · 0 评论 -
计蒜客-蒜头君王国(排列组合+dp)
解题思路:参考:即如下的公式:满分代码如下:#include<bits/stdc++.h>using namespace std;const int N=23;double dp[N];int n;double p;double pailie(int n,int k){ double val=1; for(int i=n,...原创 2019-08-02 08:24:36 · 353 阅读 · 1 评论 -
1068 Find More Coins-PAT甲级
题目描述Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. ...原创 2019-08-10 11:45:10 · 107 阅读 · 0 评论 -
最大连续子序列和
问题如下:给定一个数字序列A1,A2……An,求i,j(1<=i<=j<=n),使得A1+……+Ai最大,输出这个最大和方法如下:步骤1:令状态dp[i]表示以A[i]作为末尾的连续序列的最大和步骤2:因为dp[i]要求必须以A[i]作为末尾元素,那么只有两种情况(1)这个最大和的连续序列中只有一个元素,即以A[i]开始,以A[i]结尾(2)这个最大和的连续序...原创 2019-08-16 15:49:10 · 140 阅读 · 0 评论 -
计蒜客 蒜头君跳木桩
问题描述蒜头君面前有一排 n 个木桩,木桩的高度分别是h1,h2,h3…hn。蒜头第一步可以跳到任意一个木桩,接下来的每一步蒜头不能往回跳只能往前跳,并且跳下一个木桩的高度 不大于 当前木桩。蒜头君希望能踩到尽量多的木桩,请你帮蒜头计算,最多能踩到多少个木桩。输入格式第一行输入一个整数 n 代表木桩个数。第二行输入 n 个整数h1,h2,h3..hn,分别代表 n 个木桩的高度。(1≤n...原创 2019-04-02 16:50:14 · 175 阅读 · 0 评论 -
背包问题dp
代码如下:for (int i = 1; i <= N; ++i) { for (int j = 0; j <= V; ++j) { if(j >= w[i]) { dp[i][j] = max(dp[i - 1][j - w[i]] + v[i], dp[i - 1][j]); } ...原创 2019-04-02 14:32:14 · 184 阅读 · 0 评论 -
计蒜客 平分娃娃
问题描述蒜头君酷爱收集萌萌的娃娃。蒜头君收集了 6 种不同的娃娃,第 i 种娃娃的萌值为 i(1≤i≤6)。现在已知每种娃娃的数量 mi,蒜头君想知道,能不能把娃娃分成两组,使得每组的娃娃萌值之和相同。输入格式输入一行,输入 6 个整数,代表每种娃娃的数量 mi(0≤mi≤20,000)。输出格式输出一行。如果能把所有娃娃分成萌值之和相同的两组,请输出Can be divided....原创 2019-04-02 14:15:25 · 889 阅读 · 0 评论 -
计蒜客 圣诞树
问题描述圣诞节快到了,蒜头君准备做一棵大圣诞树。 这棵树被表示成一组被编号的结点和一些边的集合,树的结点从 1 到 n 编号,树的根永远是 1。每个结点都有一个自身特有的数值,称为它的权重,各个结点的权重可能不同。对于一棵做完的树来说,每条边都有一个价值 ve,若设这条边 e 连接结点 i 和结点 j,且 i 为 j的父结点(根是最老的祖先),则该边的价值ve=sj*we,sj表示结点 j 的...原创 2019-04-04 12:20:41 · 282 阅读 · 0 评论 -
计蒜客 墙壁涂色
问题描述蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 n 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。例如,当 n = 5时,下面就是一种合法方案。由于墙壁是一个环形,所以下面这个方案就是不合法的。输入格式一个整数 n,表示房间被划分成多少部分。(1≤...原创 2019-04-01 07:36:40 · 266 阅读 · 0 评论 -
计蒜客 杨辉三角
问题描述杨辉三角是二项式系数在三角形中的一种几何排列。它的每个数等于它上方两数之和,每行数字左右对称,由 1 开始逐渐变大。(优快云编辑器问题,三角形写在代码片里了) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5...原创 2019-04-01 09:23:43 · 146 阅读 · 0 评论 -
计蒜客 捡水果
问题描述蒜头在玩一款游戏,他在一个山顶,现在他要下山,山上有许多水果,蒜头每下一个高度就可以捡起一个水果,并且获得水果的能量。山的形状如图所示 3 1 26 2 33 5 4 11234这是一个高度为 4 的山,数字代表水果的能量。每次下一个高度,蒜头需要选择是往左下走,还是往右下走。例如:对于上图的情况,蒜头能获得的最大能量为,3+1+6+5=15。现在,蒜...原创 2019-04-01 14:44:28 · 185 阅读 · 0 评论 -
计蒜客 逃生dp
题目:蒜头君在玩一款逃生的游戏。在一个 n×m 的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。蒜头初始化有 v 点血量,他的血量上限是 c,任何时刻他的生命值都不能大于血量上限,如果血量为 0 则会死亡,不能...原创 2019-04-01 19:28:00 · 203 阅读 · 0 评论 -
计蒜客 蒜头君的新游戏
问题描述工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。玩了几轮之后,蒜头君想到一个问题:有多少种不同的方法,使得从同事 A 开始传娃娃,传了 m 次之后又回到了...原创 2019-04-01 20:22:54 · 205 阅读 · 0 评论 -
计蒜客 蒜头君的城堡之旅(dp)
问题描述蒜国地域是一个 n 行 m 列的矩阵,下标均从 1 开始。蒜国有个美丽的城堡,在坐标 (n,m) 上,蒜头君在坐标 (1,1) 的位置上。蒜头君打算出发去城堡游玩,游玩结束后返回到起点。在出发去城堡的路上,蒜头君只会选择往下或者往右走,而在返回的路上,蒜头君只会选择往上或者往左走,每次只能走一格。已知每个格子上都有一定数量的蒜味可乐,每个格子至多经过一次。现在蒜头君请你来帮他计算一...原创 2019-04-01 21:13:50 · 180 阅读 · 0 评论 -
knapsack模板
// 01 背包#include <iostream>#include <string.h>using namespace std;int dp[21][1010];int w[21],c[21];int main() { int N,V;//N为背包数目,V为容器体积 cin>>N>>V; for(int i...原创 2019-04-01 22:00:20 · 180 阅读 · 0 评论 -
计蒜客 蒜头君的购物袋1
题目:蒜头君去超市购物,他有一只容量为 V 的购物袋,同时他买了 n 件物品,已知每件物品的体积 vii。蒜头君想知道,挑选哪些物品放入购物袋中,可以使袋子剩余的空间最小。输入格式第一行输入一个整数 V(1≤V≤20,000),表示购物袋的容量。第二行输入一个整数 n(1≤n≤30),表示蒜头君购买的 n 件物品。接下来输入 n 行,每行输入一个整数 vii(1≤vi≤...原创 2019-04-02 10:39:54 · 192 阅读 · 0 评论 -
计蒜客 蒜头君的购物袋2
问题描述蒜头君去超市购物,他有一只容量为 V 的购物袋,同时他想买 n 件物品,已知每件物品的体积 vi和重要度 pi。蒜头君想知道,挑选哪些物品放入购物袋中,可以使得买到的物品重要度之和最大,且物品体积和不超过购物袋的容量。输入格式第一行输入两个整数 V(1≤V≤1000)和 n(1≤n≤100)。代表购物袋的总体积为 V,蒜头君一共想买 n 件物品。接下来输入 n 行,每行输入两个整...原创 2019-04-02 10:48:19 · 150 阅读 · 0 评论 -
计蒜客 蒜头君的购物袋3
问题描述蒜头君去超市购物,他有一只容量为 V 的购物袋,同时他想买 nn 种物品,已知每种物品的体积 vi和重要度 pi 。蒜头君想知道,怎么挑选物品放入购物袋中,可以使得买到的物品重要度之和最大,且物品体积和不超过购物袋的容量。注意超市中每种物品的数量无限多。输入格式第一行输入两个整数 n, V (1≤n≤1,000,1≤V≤10,000)。接下来输入 n 行,每行输入两个整数 v...原创 2019-04-02 11:15:55 · 199 阅读 · 0 评论 -
最长不下降子序列 (LIS)
最长不下降子序列是这样一个问题:在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降(非递减)的。令dp[i]表示以A[i]结尾的最长不下降子序列的长度,这样对A[i]来说就会有两种情况。(1)如果存在A[i]之前的元素A[j](j<i),使得A[j]<=A[i]且dp[j]+1>dp[i](2)它前面的元素均比它大,则dp[i]=1;...原创 2019-08-16 16:18:18 · 248 阅读 · 0 评论