动态规划
文章平均质量分 59
zwzwzwh
Lonely God
展开
-
动态规划基础学习(一)线性
动态规划一直是个大问题。 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法(俗称DP)。 动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。 1, 线性动规: 拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等原创 2013-07-27 16:33:56 · 1081 阅读 · 0 评论 -
UVA 10618 - Tango Tango Insurrection【DP】
题目大意 Sample Input Sample Output 思路 代码 Hit题目大意传送门描述 跳舞机的踏板上有四个箭头:上下左右。当舞曲开始的时候,你需要在箭头移动到踏板上的时候,你需要在踏板上踩下相同的箭头。 不需要踩箭头的时候,踩箭头不会受到惩罚,当时需要踩箭头的时候,必须踩一下 踩箭头需要消耗能量,写一个程序来帮助选择轻松的踩踏方式,使得消耗的能量最少。消耗能量: 如果这个脚上个原创 2017-11-20 23:03:58 · 353 阅读 · 0 评论 -
RMQ和LCA问题
RMQ问题RMQ问题就是Range max/min Query。 A数列为:3 2 4 5 6 8 1 2 9 7 对于数列A,回答查询RMQ(A,i,j)的最大/小值:返回在数组A中下标在i和j之间的最小/最大值。 最容易想到的问题是O(n)O(n)的查询,当查询数量过多的时候,时间花费可能很多。ST算法可以在O(nlogn)O(nlogn)的时间内预处理完成后,O(1)O(1)的时间内原创 2017-11-22 20:51:28 · 287 阅读 · 0 评论 -
uva 1626 - Brackets sequence【DP】
题目大意 思路 代码 Hit题目大意传送门定义如下正规括号序列: - 空序列是正规括号序列 - 如果S是正规括号序列,那么[S]和(S)也是正规括号序列 - 如果A和B都是正规括号序列,那么AB也是正规括号序列现在给出一个括号序列,问最少向里面添加多少字符可以变成正规括号序列。思路设dp[i][j]为串S[i]~S[j]至少需要增加的括号数目。 括号序列有两种转换方式 1. 若 dp[i原创 2017-11-06 15:43:55 · 288 阅读 · 0 评论 -
树型DP基础题目总结
树的最大独立集树的重心 树的重心被定义为:对于一棵n个结点的无根树,找到一个点,使得把树变成以该点为根的有根树的时候,最大子树的结点数最小。 输入数据: 结点数N 无向边N-1条 输出数据: 重心为哪个点 最大子树的结点数 对无根树进行DFS,求取每个结点对应的最大子树的节点数,最后使整个值最小即可。#include <cstdio> #include <cstdlib> #include <c原创 2017-11-08 15:26:56 · 311 阅读 · 0 评论 -
uva1627 - Team them up!【dp】
题目大意 思路 代码 Hit题目大意传送门有n个人,把他们分成非空的两组,使得每个人都被分到一组,并且同组的人要相互认识。要求两组的人数要尽量接近。多解的时候输出任意方案,无解时候输出No Solution。思路组的编号为0和1。因为同组的人必须相互认识,如果已知某个人在组0,那么不认识此人的就必须在组1。让不认识关系组成一张图。例如: 1 认识 2 3 5 2 认识 1 3 4 5 3原创 2017-11-28 22:40:31 · 271 阅读 · 0 评论 -
UVA 10003 - Cutting Sticks【DP】
题目大意 思路 代码 Hit题目大意传送门有一根长度为L的木根,还有n个切割的起点(按照从小到大的顺序排列),你的任务是在这些切割点的位置将木根切成n+1部分,使得总切割费用最小。每次切割的费用等于被切割的木根的长度。思路设dp[i][j]为切割木根i~j的最优费用,则dp[i][j] = min{dp[i][k] + dp[k][j]|i<k<j} + a[j] - a[i]; a[j] - a[原创 2017-11-03 15:31:59 · 248 阅读 · 0 评论 -
1347 - Tour 【DP】
题目大意 样例 input output 思路 代码 Hit题目大意传送门 给出平面上n(n<=1000)个点的坐标,按照x递增的顺序给出。 任务为设计一条线路,从最左边的点出发,走到最右边的点然后返回,要求除了最左和最右的点,别的点都被访问一次。转化为两个人同时从最左点出发,沿着两条不同的路径走,最后走到终点。 使用d[i][j]来表示两个人的位置,第一个人在位置i,第二个人在位置j,距离终原创 2017-08-07 20:45:50 · 214 阅读 · 0 评论 -
UVA 1625 - Color Length【DP】
题目大意 思路 代码 Hit题目大意传送门输入两个长度分别为n和m的颜色序列,要求按顺序合并为一个序列,要求每次把序列开头的颜色方法新序列的尾部。 现在有一个衡量标准L(c),L(c)表示的是颜色c的跨度:最大位置和最小位置之差。对于字符串GBBYGBBY和字符串YRRGBYRRGB来说: 当合并为YRRGGBBYBYRRGGBBYB的时候,其L(c)分别为 color G原创 2017-10-24 16:16:29 · 189 阅读 · 0 评论 -
UVA 11584 - Partitioning by Palindromes【DP】
题目大意 思路 代码 Hit题目大意传送门一个由小写字母组成的字符串,要把它分割为尽量少的回文串。思路judge[i][j] 代表i~j之间的字符串是不是回文串。if(judge[j+1][i]==1) dp[i] = min (dp[i],dp[j]+1);判断是不是回文的话,可以预处理: O(n2)O(n^2)的时间内可以处理完成。 处理方法为枚举每一个i,同时向左向右来扩展。代码原创 2017-10-14 18:14:51 · 204 阅读 · 0 评论 -
UVA 11400 Lighting System Design 【贪心】【DP】
题目大意 思路 代码 Hit题目大意传送门思路在本题中,需要理解的一点在于:这些给出的灯泡你必须要用完,也就是说,你可以使用不同的电源来接多个灯泡,但是灯泡必须要用完。代码#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct Lamps { i原创 2017-10-12 11:51:47 · 180 阅读 · 0 评论 -
1025 A Spy in the metro 【DP】
题目大意 样例 input output 解释 思路 代码 Hit题目大意传送门 输入数据:int n;//车站数 int T;//到T时刻到车站n int t[Train_Num];//车站i到i+1之间的行驶时间 int M1;//第一站向右开的列车的数目 int d1[Train_Num];//M1个列车开的时间 int M2;//第n站向左开的列车的数目 int d2[Train_Num]原创 2017-08-07 13:43:59 · 222 阅读 · 0 评论 -
12563 - Jin Ge Jin Qu hao 【DP】
题目大意 样例 input output 解释 思路 代码 Hit题目大意传送门输入n,t(n首歌,剩余t秒)和每首歌的长度。 输出可以唱的最多的总歌曲数目 以及 唱歌的时间长度。样例input23 100 60 70 803 100 30 69 70outputCase 1: 2 758 Case 2: 3 777解释第一个样例中,两首歌:80 + 678 = 758 第二个样例中原创 2017-08-11 10:58:23 · 395 阅读 · 0 评论 -
116 - Unidirectional TSP 【DP】
题目大意 样例 input output 解释 思路 代码 Hit题目大意传送门 样例input5 6 3 4 1 2 8 6 6 1 8 2 7 4 5 9 3 9 9 5 8 4 1 3 2 6 3 7 2 8 6 4 5 6 3 4 1 2 8 6 6 1 8 2 7 4 5 9 3 9 9原创 2017-08-08 17:26:56 · 243 阅读 · 0 评论 -
HDU 4815 Little Tiger vs. Deep Monkey
Little Tiger vs. Deep Monkey Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 419 Accepted Submission(s): 149 Problem Description原创 2014-07-21 22:26:51 · 864 阅读 · 0 评论 -
UVALive6661 Equal Sum Sets
题目链接:https://icpcarchive.ecs.baylor.edu/external/66/6661.pdf 题目大意:在给出的nsk原创 2014-07-19 15:50:46 · 680 阅读 · 0 评论 -
多米诺骨牌问题 概率DP
题目描述 准备一个m行n列的二维多米诺骨牌进行游戏。 游戏的目标是让二维的多米诺骨牌全部倒下。一个多米诺骨牌倒下的时候,有P的概率往下一列倒,有Q的概率往下一行倒,并触碰该方向上与其相邻的骨牌。 当一个倒下完成的时候,需要从第1行的第1列开始检查,然后检查第1行的第2列,… ,第m行的第1列,第m行的第2列…当检查到有一块骨牌没有倒下,就需要触碰当前骨牌。 问总共触碰骨牌的期望值。 ...原创 2018-09-08 15:38:06 · 903 阅读 · 0 评论