dp
明日可7
SDUST_SE_17_QiuPeng
Coding my youth
展开
-
UVA 10534 Wavio Sequence (最长上升子序列)
Wavio Sequence Input: Standard InputOutput: Standard OutputTime Limit: 2 SecondsWavio is a sequence of integers. It has some interesting properties.· Wavio is of odd length i.e. L = 2*n + 1.· The firs...原创 2018-04-30 20:15:00 · 229 阅读 · 0 评论 -
UVA 10285 Longest Run on a Snowboard(记忆化搜索)
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <map>#include <vector>#define FRER() freopen("原创 2019-01-16 19:06:29 · 140 阅读 · 0 评论 -
UVA 1025 A Spy in the Metro (dp)
题意:紫书分析:三种决策转移一下,时间逆向。代码:#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <map>#include <vector>原创 2019-01-27 22:35:14 · 146 阅读 · 0 评论 -
UVA 437 The Tower of Babylon (记忆化搜dp)
题意:有集中长方体,将其摞在一起,上面的底面面积要严格小于下面,每种长方体可以无限次使用,问最高可以摆放多高分析:DAG最长路算法,将一个长方体当成3个长方体使用,不用建边,转移的时候判断一下大小关系即可,最后dfs代码:#include <iostream>#include <cstdio>#include <cstring>#includ...原创 2019-01-27 22:39:01 · 153 阅读 · 0 评论 -
UVA 1347 Tour (记忆化搜索dp)
题意:见紫书分析:可以看成两个人一起走,dp[i][j]表示已经走过了max(i,j)个点还剩多长距离到达最后的点,规定i走在j前面,走的时候只往下走max(i,j)+1的那个点即可,最后的状态就是一个人在第n-1个点,求出另一个人在其他点时的最后所剩距离,然后dfs代码:#include <iostream>#include <cstdio>#inclu...原创 2019-01-27 22:43:26 · 133 阅读 · 0 评论 -
UVA 116 Unidirectional TSP (dp)
题意:给定一个n*m的矩阵,要求从第一列的任何一行出发,每次沿右或右下或右上到达后面一列,最后到第m列任何一行整个路程的最小值,并且要求是字典序最小的。、分析:正推不好做,选择逆推,同时记录路径代码:#include <iostream>#include <cstdio>#include <cstring>#include <cmath...原创 2019-01-27 22:47:07 · 206 阅读 · 0 评论 -
UVA 12186 Another Crisis (树状dp)
题意:有一家公司,有一个老板和n个员工,老板标号为0,每个员工都有它的上级,工人(最底层)想联名给老板上书,但是一个员工只有它的下级超过t%时它才会递给它的上级,求接下来要想传递信息给老板,至少需要多少个员工签字。分析:入门树状dp,算下这个人u如果要同意,那么dp[u] = 前c=(K*T - 1)/100 + 1的人的dp[v]相加;状态转移:dp[u]=sum{ dp [ son[...原创 2019-01-28 17:30:25 · 200 阅读 · 0 评论 -
UVA 1220 Party at Hali-Bula (树形dp)
紫书P282 9-13#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <map>#include <vector>#include <原创 2019-01-28 17:43:55 · 198 阅读 · 1 评论 -
UVA 1218 Perfect Service (树形dp)
题意:给出一个图,每个点如果不是服务器,那么他必定和一个且只能和一个服务器相连,问最少有多少个服务器分析:dp[u][0] : u是服务器 dp[u][1] : u不是服务器,但是u的父亲是服务器 dp[u][2] : u不是服务器,且u的父亲也不是服务器状态转移:当前节点为u,子节点为v dp[u][0] = sum{...原创 2019-01-28 17:56:07 · 163 阅读 · 0 评论 -
UVA 10817 Headmaster's Headache (状压dp+记忆化搜索)
题意:这间学校开设S门课,给出校长已经有的师资n,然后再给出m个应聘者,每门课至少有两名任课老师,求最少需要的雇佣工资。分析:一开始没什么头绪,看到网上说01背包,一想是那么回事。还有一个技巧是把2*s位的二进制数表示状态,假设有两门课,那么1100表示两门课都有两个以上老师,0011表示这两门课都只有一个老师。根据现有老师算出初始状态,然后转移,转移终点是到达1100的状态(假设有两门课)。...原创 2019-01-29 17:40:07 · 203 阅读 · 0 评论 -
UVA Sum of Different Primes (数论+dp)
题意:给出一个数,用k个不同的素数组成他,素数不能重复,求有多少种方法分析:首先打一个表,然后用类似01背包的方法来写dp[i][j]表示的是数字i用j个数字来组成的方法数,状态转移方程如下dp[i][j] = sum{dp[i-prime][k-1]};for(int i=0;i<tot;i++){ for(int j=maxn-1;j>=prime...原创 2019-02-06 23:04:24 · 183 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge (状压dp or 爆搜)
题目链接:https://nanti.jisuanke.com/t/30994分析:场上ltx用dfs爆过去了,学习之后发现和状压dp的思想一致dfs:类似topo_sort的思想,选择度为0的点进行dfs,不断更新最大值,这里和状压dp类似的地方就是使用了一个state变量。状压dp:对每一种状态进行二进制枚举,枚举到一种状态时,判断这个状态里的顺序是否符合题意,符合的话更新dp数组...原创 2018-09-03 13:09:51 · 210 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 B BE, GE or NE
题目链接:https://nanti.jisuanke.com/t/31454分析: dfs + 记忆化搜索 , 0 表示 Bad , 1 表示 Normal , 2 表示Good代码:#include <map>#include <set>#include <list>#include <cmath>#include <...原创 2018-09-11 15:14:21 · 186 阅读 · 0 评论 -
HDU 6447 YJJ's Salesman (dp+树状数组+莫干山算法)
题意:一个 1e9*1e9的方格,从(0,0)走到(1e9,1e9),有个方格有价值,特殊的经过方格可获得价值,每次只能向右、下、右下走,只有右下走到方格的才能获得价值,问最大获得的价值是多少官方题解:莫干山算法(逃个人理解:先把各个村庄离散化,然后按照从上到下,从右到左的顺序排序,以上下为主,左右为次,之后我们更新这个 f [ j ] ,由于每一列的最大值只能由上一行影响,所以更...原创 2018-08-25 22:20:31 · 417 阅读 · 0 评论 -
动态规划入门——背包问题(01 完全 多重)
一 背包问题(1)01 背包 : 给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。 问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 分析:对于每个物品,我们都有两种选择,取和不取。 我们可以定义一个二维数组dp[i][j],表示有i件物品,背包容量为j时获得的最大价值。 对于dp[i][j],当w[i...原创 2018-05-09 23:10:34 · 551 阅读 · 2 评论 -
动态规划入门——子序列问题
一 最长上升子序列(LIS)【题目描述】给定N个数,求这N个数的最长上升子序列的长度。【样例输入】72 5 3 4 1 7 6【样例输出】4分析:维护一个子序列,遍历母序列,子序列的第一个元素是母序列的第一个元素,然后依次比较母序列的每个元素A和子序列的最后一个元素B的大小关系,如果A>B,那么将A放在子序列的后面,否则,在子序列中找到第一个大于或等于A的元素,将其更换为A(这里用的是二分查...原创 2018-05-10 18:47:26 · 194 阅读 · 0 评论 -
HDU 3591 The trouble of Xiaoqian (完全背包+多重背包)
The trouble of XiaoqianTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2783 Accepted Submission(s): 967Problem DescriptionIn the country of A...原创 2018-05-14 22:32:28 · 188 阅读 · 0 评论 -
UVA 11400 Lighting System Design(dp)
题意:有一个照明系统需要用到n种灯,每种灯的电压为V,电源费用K,每个灯泡费用为C,需要该灯的数量为L。注意到,电压相同的灯泡只需要共享一个对应的电源即可,还有电压低的灯泡可以被电压高的灯泡替代。为了节约成本,你将设计一种系统,使之最便宜。分析:由于只能用大电压换小电压的,所以先对每种灯泡按照电压大小排序,每种灯泡有两种状态:全换与全不换,先求出前i种灯泡的数量总和,用dp[i]表示前i种灯泡的最...原创 2018-05-22 21:02:12 · 137 阅读 · 0 评论 -
UVA 1626 Brackets sequence (dp)
题意:给一个括号序列,最少添加几个括号使该序列成为正规括号序列按照RujiaLiu的代码写的:设串至少要增加dp[S]个括号,转移如下:1)如果S形如(S')或者[S'],转移到dp[S']。2)如果S至少有两个字符,则可以分成两个部分AB,转移到dp[A]+dp[B]。注意枚举次序#include <map>#include <set>#include <cma...原创 2018-06-03 21:29:42 · 137 阅读 · 0 评论 -
UVA 11584 Partitioning by Palindromes (简单dp)
题意:给一个字符串, 要求把它分割成若干个子串,使得每个子串都是回文串。问最少可以分割成多少个。分析:dp[i] 为字符0~i划分的最小回文串的个数,则dp[i]=min(dp[i],dp[j]+1|s[j+1~i]为回文串)。代码:#include <map>#include <set>#include <cmath>#include <queue...原创 2018-05-23 19:52:53 · 150 阅读 · 0 评论 -
UVA 10003 Cutting Sticks (区间dp)
题意: 给你一根木块,让你在n个点切块(不能改变顺序),使得总花费最小,看拿来切的那根木棍的长度。 代码:#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <cstdio>#include <...原创 2018-05-28 21:01:43 · 173 阅读 · 0 评论 -
POJ 2955 Brackets (区间dp)
题意:给出一串括号字符,求最多的匹配个数。代码:#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <cstdio>#include <vector>#include <原创 2018-05-28 21:49:43 · 114 阅读 · 0 评论 -
UVA 1331 Minimax Triangulation (dp)
题意:给一个m边形,将其分割成m-2个三角形,求使得最大的三角形的面积最小的分割方案中这个最大的三角形的面积是多少分析:本题和三角形剖分类似,设dp[i][j]为从点i到j中最大的三角形面积,可得状态转移方程dp[i][j] = min(dp[i][j],max(area(i,j,k),max(dp[i][k],dp[k][j])))在进行状态转移之前还需要判断是否这三个点能否构成三角形,即这个三...原创 2018-07-02 10:18:50 · 138 阅读 · 0 评论 -
HDU 6446 Tree and Permutation (dp)
题意:给出一颗树,按节点进行全排列,给你一棵树,以全排列的第一个树为根节点,求出根节点到其他点的最短路径之和,把这些和在相加,求最后结果分析:对于每一条边都经过了 2*(n-1)!次,用dp算出这棵树上任意两点的最短距离之后乘上次数就是最后结果。例如:1 2 3 4 这几个数,若以1为根节点,那么有下列排列1 2 3 41 2 4 31 3 2 41 3 4 21...原创 2018-08-25 19:29:57 · 955 阅读 · 0 评论 -
UVA 1633 Dyslexic Gollum (状压dp)
分析:dp[i][j]表示当前为i长度,长度为k的后缀状态,有多少个串。考虑一下k和k+1长度的串是否为回文串即可代码:#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include &...原创 2019-02-25 21:53:48 · 200 阅读 · 0 评论