![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM____动态规划
文章平均质量分 62
Xingw-Xiong
明天的你一定会感谢现在拼命努力的自己...
展开
-
Poj 2479 Maximum sum【双向DP/最大连续和】
题意:给定一个长度为N的数组,求两个连续的子序列,使得两个连续子序列的和最大。分析:乍一看,跟最大连续和有点类似,但是,又有区别,因为对于这个题,考虑第i项两个连续子序列的最大和,不能仅仅由前i-1项递推得出,第i项两个连续子序列的最大和,与前i项和i以后的之间是存在关系的,因此这个题目是一个双向dp。假如给定的序列为a0, a1, a2, a3, a4, ...... ,an,那么,对于原创 2015-07-26 09:49:23 · 1621 阅读 · 0 评论 -
[FZU 2142 Center of a Tree] 树形DP
FZU 2142 Center of a Tree [树形DP]题目链接:[FZU 2142 Center of a Tree]题意描述:一个顶点是一棵树的中心 当且仅当 从该点出发到树上其他节点距离最大的值最小, 可以证明中心最多不会超过两个。然后给定一个N个顶点的一棵树, 1 解题思路:首先,求出中心点。求出树上每个点到树上其他节点的最大距离,然后就可以求出中心点。 这里可以用两次原创 2016-08-13 23:31:09 · 484 阅读 · 0 评论 -
[CSU 1804 有向无环图] DP+拓扑排序
[CSU 1804 有向无环图] DP+拓扑排序题目链接:[CSU 1804 有向无环图] 题目描述:Bobo 有一个nn个点,mm条边的有向无环图(即对于任意点vv,不存在从点vv开始、点vv结束的路径)。 为了方便,点用 1,2,…,n1,2,\ldots,n 编号。设count(x,y)count(x,y)表示点 xx 到点 yy 不同的路径数量(规定 count(x,x)=0count原创 2016-09-05 20:09:38 · 1111 阅读 · 0 评论 -
[SPOJ BALNUM - Balanced Numbers]数位DP
[SPOJ BALNUM - Balanced Numbers]数位DP题目链接:[SPOJ BALNUM - Balanced Numbers] 题意描述:求区间[L,R][L, R]中有多少个数字xx满足xx的十进制形式中的所有出现的数字中,奇数出现偶数次,偶数出现奇数次。1≤L≤R≤10191 \le L \le R \le 10^{19}. 解题思路: 裸的数位DP,状态转移中需要维原创 2016-09-19 12:53:49 · 629 阅读 · 0 评论 -
[hdu 5898 odd-even number] 数位DP
[hdu 5898 odd-even number] 数位DP题目链接:[hdu 5898 odd-even number] 题意描述:求区间[L,R][L, R]中有多少个数字xx,满足十进制展开形式的连续个奇数的长度为偶数,连续个偶数的长度为奇数。(1≤L≤R≤9∗1018)(1\le L\le R\le 9*10^{18}). 解题思路:裸的数位DP。 只要记录好当前位的奇偶性以及当前连原创 2016-09-19 20:43:11 · 780 阅读 · 0 评论 -
[hdu 5945 Fxx and game] dp+单调队列
[hdu 5945 Fxx and game] dp+单调队列题目链接:[hdu 5945 Fxx and game] 题意描述:请看BestCoder中文题面…传松门 青年理论计算机科学家Fxx给的学生设计了一款数字游戏。 一开始你将会得到一个数XX,每次游戏将给定两个参数k,tk,t, 任意时刻你可以对你的数执行下面两个步骤之一:X=X−i(1<=i<=t);X = X - i(1 <原创 2016-10-30 01:23:12 · 847 阅读 · 0 评论 -
[SPOJ PUTNIK]区间DP
[SPOJ PUTNIK]区间DP知识点:dynamic programing uncommon TSP1. 题目链接[SPOJ PUTNIK]2. 题意描述旅行商问题TSP( Travelling Salesman Problem)概都清楚,经典的NP难问题之一。这个题目是一个变式的TSP问题。 经典的TSP问题是指:城市与城市之间有边权,求经过所有城市有且仅有一次,最小边权之和。 这个题目增原创 2017-01-04 01:06:09 · 656 阅读 · 0 评论 -
[ifrog 1074 Pick Up Coins] 区间DP
[ifrog 1074 Pick Up Coins] 区间DP1. 题目链接[ifrog 1074 Pick Up Coins] 2. 题意描述nn个硬币,第ii个价值为viv_i,从中取出第ii个硬币,你将获得价值vi−1∗vi∗vi+1v_{i-1}*v_i*v_{i+1}。求将nn个硬币全部取出来的能获得的最大价值。 假定v0=vn+1=1v_0=v_{n+1}=1.原创 2016-12-25 22:38:57 · 529 阅读 · 0 评论 -
[ifrog 1066 - Buy Candy] 四边形优化的石子合并
[ifrog 1066 - Buy Candy] 四边形优化的石子合并1. 题目链接[ifrog 1066 - Buy Candy]2. 题意描述给定NN组人,现在需要将这NN组人合并为11组人。每次只能合并相邻的两组人,且合并的代价为f(t)f(t),tt表示的是两组人数之和,函数f(x)f(x)的表示如下: f(x)=∑i=0m(ai∗xi);【ai是系数】f(x)=\sum_{i=0}^{m原创 2016-12-19 17:29:04 · 738 阅读 · 0 评论 -
[CSP 201612-4 压缩编码] 石子合并+四边形优化
[CSP 201612-4 压缩编码] 石子合并+四边形优化1. 题目链接[CSP 201612-4 压缩编码]2. 题意描述问题描述 给定一段文字,已知单词a1,a2,…,ana_1, a_2, \dots, a_n出现的频率分别t1,t2,…,tnt_1, t_2, \dots, t_n。可以用01串给这些单词编码,即将每个单词与一个01串对应,使得任何一个单词的编码(对应的01串)不是另原创 2016-12-19 18:46:45 · 1708 阅读 · 0 评论 -
[Codeforces 147B Smile House] DP+倍增+二分
[Codeforces 147B Smile House] DP+倍增+二分1. 题目链接[Codeforces 147B Smile House]2. 题意描述给定顶点数为nn,边数mm的有向图,求最小的正权环的大小。(最小指的环中顶点数最少)。 (1≤n≤300,0≤m≤n∗(n−1)2,−104≤边长aij≤104)(1\le n \le 300, 0\le m \le \frac{n*(n原创 2016-12-20 21:19:32 · 970 阅读 · 0 评论 -
[Codeforces 607B Zuma]区间DP
[Codeforces 607B Zuma]区间DP分类:区间DP 1. 题目链接[Codeforces 607B Zuma]2. 题意描述给出一个长度为n的序列c[i],每次操作可以删去一个回文子串,求将整个序列删除完需要的最少操作数。 (1 ≤ n ≤500,1≤ci≤n)(1 \le n \le500, 1\le c_i\le n)3. 解题思路比较直观的区间DP,dp[i][j]表示从i到原创 2017-01-13 22:05:13 · 547 阅读 · 0 评论 -
[Codeforces 484D Kindergarten] DP
[Codeforces 484D Kindergarten] DP知识点:dynamic programming greedy1. 题目链接[Codeforces 484D Kindergarten]2. 题意描述给定一个包含nn个元素的数组,我们可以把位置连续的数分为一组,每组至少包含一个元素。(1≤n≤1000000)(1\le n\le 1000000) 每组对答案的贡献是这个组内最大的数和原创 2017-01-10 20:20:27 · 462 阅读 · 0 评论 -
[POJ 3168 Treats for the Cows]区间dp
[POJ 3168 Treats for the Cows]区间dp分类:区间dp1. 题目链接[POJ 3168 Treats for the Cows]2. 题意描述有nn个美味排成一列,编号为1,2,...,n1,2,...,n,第ii个美味价值为viv_i。每次只能挑选两端的美味,第aa次挑选到第ii个美味,可获得价值vi∗av_i*a。求可以获得的最大的价值。3. 解题思路最简单的区间dp原创 2017-01-23 00:17:28 · 420 阅读 · 0 评论 -
[CSU 1818 Crusher's Code Submit]记忆化递推
[CSU 1818 Crusher’s Code Submit]记忆化递推分类:递推1. 题目链接[CSU 1818 Crusher’s Code Submit]2. 题意描述有两种随机排序的算法伪代码。现在给你一个长度为NN的序列,分别用两种算法进行升序排序。求两种算法的迭代的次数的数学期望,精确到小数点后6位。2≤N≤82\le N\le83. 解题思路首先,因为题目给定的状态转移是单向的,也就原创 2017-03-06 23:48:41 · 633 阅读 · 0 评论 -
[CSU 1833 Lab] 概率+递推
[CSU 1833 Lab] 概率+递推分类:math probabilities 递推1. 题目链接[CSU 1833 Lab] 2. 题意描述有NN天,领导在第ii天来视察的概率为pip_i。Susan 每工作一天需要休息至少两天。Susan希望能够选择某些天来工作,使得这些天概率之和最大,求最大的概率之和。 (数据组数0<T<=20,0<n<=1000)(数据组数0 < T <= 20,0原创 2017-03-14 23:02:44 · 406 阅读 · 0 评论 -
[CSU 1915 John and his farm]树形DP+LCA
[CSU 1915 John and his farm]树形DP+LCA分类:Tree DP LCA1. 题目链接[CSU 1915 John and his farm]2. 题意描述有一棵NN个节点的树,树上每条边长度为1。 现在需要等概率地随机地在两个顶点之间加一条边。 MM次询问。 每次查询给定两个顶点u,vu,v。求增加一条边,保证顶点u,vu,v在一个环内的条件下,求环的长度的数学期原创 2017-05-09 01:06:52 · 591 阅读 · 0 评论 -
[51nod 1051 最大子矩阵和]前缀和+dp
[51nod 1051 最大子矩阵和]前缀和+dp分类:前缀和 dp 水题1. 题目链接[51nod 1051 最大子矩阵和]2. 题意描述一个M∗NM*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。 例如:3*3的矩阵:-1 3 -1 2 -1 3 -3 1 2和最大的子矩阵是:3 -1 -1 3 1 23. 解题思路首先,预处理出二维前缀和。然后原创 2017-08-21 15:41:23 · 658 阅读 · 0 评论 -
[玲珑学院 1031 Bob and Alice are eating food]DP+矩阵快速幂
[玲珑学院 1031 Bob and Alice are eating food]DP+矩阵快速幂题目链接:[玲珑学院 1031 Bob and Alice are eating food] 题意描述:有apples,pears,peaches,bananas, oranges and lemons.六种水果。每种水果数量可以看成无限多。吃K个水果,要保证吃的apples,pears 是偶数(0也原创 2016-09-04 22:55:29 · 737 阅读 · 0 评论 -
[SGU - 149 Computer Network] 树形DP 求带权树上每个节点的最长路长度
[SGU - 149 Computer Network] 树形DP题意链接:[SGU - 149 Computer Network] 题意描述:给定N个顶点的一棵带权树,求树上每个节点的最长路长度。N解题思路:很不错的一道树形DP!对根节点 rt 来一次DFS肯定是可以求出根节点的树上最长路。但是,并不能求出所有的答案。假如树上任意一个节点 u, 求它的一个子节点 v 的树上最原创 2016-08-06 01:22:20 · 1636 阅读 · 0 评论 -
[Codeforces Round #369 (Div. 2) C. Coloring Trees] DP
[Codeforces Round #369 (Div. 2) C. Coloring Trees] DP题目链接:[Codeforces Round #369 (Div. 2) C. Coloring Trees] 题意描述:给定N棵树,有M种颜料,每个树最初的颜色分别是c1,c2,…,cnc_1, c_2,\ldots, c_n(0≤ci≤M)(0\le c_i\le M),cic_i 为0原创 2016-08-30 16:06:45 · 593 阅读 · 0 评论 -
POJ 3071 Football 【概率DP】
FootballFootballTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 3734 Accepted: 1908DescriptionConsider a single-elimination football tournamen原创 2015-07-27 00:23:38 · 2117 阅读 · 2 评论 -
hdu 3033 I love sneakers!【详剖 DP 之 分组背包 】
hdu 3033 I love sneakers!【详剖 DP 之 分组背包 】题意: Iserlohn 有M元钱,现在有N双鞋子,鞋子有K个品牌,每双鞋都有三个参数品牌a,标价b,还有一个价值c,问Iserlohn 是否可以把每种品牌的鞋子至少买一双,如果不可以,输出“impossible·”,可以输出可以获得鞋子的最大价值和。分析: 首先看一下什么是分组背包。 有N件物品和一个容量为V的背包。第i件物品的费用是Ci,价值是Wi。这些物品被划分为K组,每组中的物品互相冲突,最多选一件。求解将哪些原创 2015-07-29 17:25:45 · 1661 阅读 · 0 评论 -
POJ 1014 Dividing 【DP 之 多重背包 / 二进制优化】
Language:DefaultDividingTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 63647 Accepted: 16488DescriptionMarsha and Bill own a collection of marble原创 2015-07-29 19:15:38 · 1612 阅读 · 0 评论 -
2010辽宁省赛 NBUT 1222 English Game【字典树+DP】
[1222] English Game时间限制: 1000 ms 内存限制: 131072 K链接:Click Here!问题描述This English game is a simple English words connection game.The rules are as follows: there are N English words原创 2015-08-18 22:06:13 · 2534 阅读 · 0 评论 -
51Nod 1174 求区间最大的数 RMQ
51Nod 1174 求区间最大的数 RMQ题目链接:51Nod 1174在很多情况下, 我们求区间最大最小值都是用朴素的遍历算法,其复杂度是O(N), 当存在多次区间最大最小查询时,若查询次数为Q, 那么算法负责度就是O(Q*N) 。 当查询次数 Q 很大时,我们就需要对算法进行优化了。常见的优化方法有: 使用树状数组或者线段树,或者是使用专门的RMQ算法。RMQ是一种专门用原创 2016-07-15 18:21:19 · 1011 阅读 · 0 评论 -
51Nod 1006 最长公共子序列LCS DP水题
题目链接:51 Nod 1006 题意: 求A,B的最长公共子序列并输出。 分析:先求出最长公共子序列的长度,然后再根据最长公共子序列的长度逆序求出最长公共子序列。#include <cmath>#include <queue>#include <vector>#include <cstdio>#include <string>#include <cstring>#include <原创 2016-07-16 17:10:54 · 1263 阅读 · 0 评论 -
UVA 11401 Triangle Counting [递推]
UVA 11401 Triangle Counting [递推]题目链接:VJudge 题意:给定N条边,边长分别为1~N,从这N条边中,选出三条边,问能构成三角形的情况有多少种。 思路:dp[i]表示i条边的情况,dp[i]包含了dp[i-1]与最长边为i这两类情况构成。当最长边为i时,另外两条边范围是[2, i-1],我们假定这两条边为a,b。满足条件1#include <cmath>#i原创 2016-07-16 21:17:00 · 642 阅读 · 0 评论 -
51Nod 1007 正整数分组 01背包
51Nod 1007 正整数分组 01背包题目链接:51Nod 1007 正整数分组。 思路:假定2组分别为集合A,集合B,并且集合A的和SUM(A)小于或等于集合B的和SUM(B)。对于每个数组,只有在A集合和不在A集合(或者是在B集合)的情况。然后可以将题目转化为01背包模型:在[SUM(A)+SUM(B)]/2【PS:这里是整数除法】的容量下,所能取得的最大价值,每个物品的价值和体积都是a[原创 2016-07-16 21:48:14 · 754 阅读 · 0 评论 -
51 Nod 1134 最长递增子序列 LIS NlogN 写法
51 Nod 1134 最长递增子序列 LIS NlogN 写法题目链接:51Nod 1134 最长递增子序列 思路:相对N^2的DP 算法, NlogN是对内层循环进行优化。代码中国B数组保存的是A[0]~A[i-1]去重过后的有序的序列。然后通过二分查找进行的优化。#include <cmath>#include <queue>#include <vector>#include <cs原创 2016-07-16 22:46:54 · 774 阅读 · 0 评论 -
51Nod 编辑距离 DP+滚动数组
51Nod 编辑距离 DP题目链接:51Nod编辑距离思路:令dp[i][j] 表示 A字符串前i个字符,与B字符串的前j个字符的最小编辑距离。那么有,i = 0 && j == 0 时,dp[i][j] = 0;i = 0 && 0 dp[i][j] = j; j = 0 && 0 dp[i][j] = i;0 if (A[i] == B[j])d原创 2016-07-18 17:41:09 · 686 阅读 · 0 评论 -
hdu 5773 The All-purpose Zero 思维转化+nlogn LIS
hdu 5773 The All-purpose Zero 思维转化+nlogn LIS题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5773题意:给定一个长度为N的序列S,(0 0可以变成任意数字(包括负数),求最长上升子序列长度。分析:0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,原创 2016-07-30 01:43:06 · 851 阅读 · 0 评论 -
[hdu 5410 CRB and His Birthday] 完全背包变形
[hdu 5410 CRB and His Birthday] 完全背包变形题目链接:[hdu 5410 CRB and His Birthday] 题意:你有M元钱到商店中买糖果,商店中有N种糖果,每 i 种糖果价格为 Wi 元每个。买 第 i 种糖果 x个, 他将最后获得 Ai * x + Bi 个糖果。 问, 你能获得的糖果数最多为多少。分析:这是一个很好的题目。 方法也很多,w原创 2016-08-03 15:36:41 · 572 阅读 · 0 评论 -
[OpenJ_Bailian - 4124 海贼王之伟大航路] DFS+二进制状态压缩 / 状压DP
[OpenJudge4124 海贼王之伟大航路] 二进制状态压缩+记忆化DFS/ 状压DP题目链接:[OpenJ_Bailian - 4124 海贼王之伟大航路]题意:N个顶点之间构成无向图。求遍历所有顶点一次的情况下,从1~N的最短路长度。(2 < N ≤ 16)分析:思路一 记忆化DFS:直接暴力DFS肯定不行,时间复杂度是(N - 2)! 。然后就想利用状态剪...原创 2016-08-04 12:03:58 · 1285 阅读 · 7 评论 -
POJ 2955 Brackets 区间DP
POJ 2955 Brackets 区间DP题目链接:POJ 2955 Brackets 题意:求字符串中匹配的括号数*2,字符串长度分析:区间DP入门题,dp[i][j] 表示区间[i, j]匹配数 *2写出状态方程:if(i, j匹配) dp[i][j] = dp[i + 1][j - 1] + 2;dp[i][j] = max(dp[i][j], dp原创 2016-08-01 15:32:58 · 473 阅读 · 0 评论 -
[hihocoder#1050 : 树中的最长路] 两种树形DP方法求树的最长路
[hihocoder#1050 : 树中的最长路] 两种树形DP方法求树的最长路题目链接:[hihocoder#1050 : 树中的最长路]解题思路:类似博文《 [POJ 2631/UVA 10308 Roads in the North] DFS求树上的最长路》方法一:以树上任意一个节点为根节点出发求出他子树的最长距离,那么距离最大的那个节点就必然是最长路的一个端点。然后以这个端点为原创 2016-08-17 02:54:41 · 1990 阅读 · 0 评论 -
hdu 5256 序列变换 LIS 变型 思维转化
hdu 5256 序列变换 LIS 变型题目链接: hdu 5256 序列变换题意:有一个数列A1,A2...An,要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。输出最少需要修改多少个元素。 N(1≤N≤10^5)分析:题目乍一看跟LIS很像,确实是的。只是不过多了个限制,严格递增,a[i]-a[j]>=i-j,i>j,a[i],a[j原创 2016-08-02 01:58:48 · 831 阅读 · 0 评论 -
Gym100820G/UVALive7374 Racing Gems 二维LIS 思维题
Gym100820G/UVALive7374 Racing Gems 二维LIS 思维题题目链接: Vjudge题意:赛车在宽为W,高度为H的跑道上捡金币。假设赛车垂直速度为V0,水平速度为V1,有 -V0/R这就是今年的校赛的母题啊!牢骚:神奇的思维。前几天做过了一个二维LIS,今天做这个题目依旧还是没有与二维的LIS联系起来。唉!分析:分析(x0, y0)这个位置上的原创 2016-08-02 19:59:27 · 803 阅读 · 0 评论 -
[LeeCode 887. 鸡蛋掉落] DP+二分
[LeeCode 887. 鸡蛋掉落] DP+二分分类: 动态规划 二分1. 题目链接[LeeCode 887. 鸡蛋掉落]2. 题目描述3. 解题思路首先,令dp[i][j]dp[i][j]dp[i][j]表示有iii个鸡蛋,建筑物为 jjj层时的答案. 那么, 我们容易想到下面的DP的状态转移方程: dp[i][j]=min{max(dp[i−1][j...原创 2018-09-02 17:40:14 · 1404 阅读 · 0 评论