DP
-Dong
本博客转载或复制的内容只作为自己复习回顾用,无意触犯原出处。
展开
-
01背包问题
01背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?Type 1:解决办法:声明一个 大小为 dp[n][c] 的二维数组,表示从第1个到第i个物品中挑选出总重量不超过j的物品时总价值的最大值,那么我们可以很容易找出 它的状态转移方程:dp[ i ] [ j ]= max(dp[i-...原创 2018-04-10 15:12:07 · 203 阅读 · 0 评论 -
哈理工第八届程序设计竞赛同步赛(高年级) F —小乐乐下象棋 (简单dp)
题目链接:https://ac.nowcoder.com/acm/contest/301/F题解:就是个简单dp,比赛时没去看这道题,其实这道题比B题还好做,B题因为时原题,所以很多人直接交个编程上去就A了,导致我以为B题更容易,从这次也总结了一点,对于过题数差那么几十题的,都应该去看看。代码:#include<cstdio>#include<algorithm&...原创 2018-12-02 14:04:12 · 280 阅读 · 1 评论 -
poj 2411 Mondriaan's Dream (状态压缩dp)
题目链接:哆啦A梦传送门题意:给出n*m的方块,让你用1*2的方块去填满它,问:有多少种不同的方案?题解:参考链接:https://blog.csdn.net/u014634338/article/details/50015825看完题解,大概就这几个核心点。1,我们用二进制来表示横放和竖放,如图所示:2,我们已经知道横放和竖放的规则,那么我们只需枚举二进制,判断第i+...原创 2018-12-04 22:05:43 · 211 阅读 · 0 评论 -
(树形dp入门)
题目一:Anniversary party 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题意:有n个客人,每个客人有一个开心值,然后客人K是客人L的主管,客人K和客人L不能一起被邀请参加party,问:邀请人的最大开心值是多少?题解:显然这是道树形dp 的题,我们定义 dp[i][1]表示邀请客人i,dp[i][0]表示不邀请客...原创 2018-12-20 14:30:15 · 308 阅读 · 0 评论 -
poj 2378 Tree Cutting (树形dp,记忆化搜索)
题目链接:http://poj.org/problem?id=2378参考链接:http://www.cnblogs.com/seaupnice/p/9471700.html题意:给你n个节点,然后n-1条边,让你从中移除一个点,使得每一个联通快中的节点数不大于n/2。题解:其实这就是个记忆化搜索,访问每个node,维护两个值:1,所有子树的结点数的最大值childmax,...原创 2018-12-20 17:15:31 · 280 阅读 · 0 评论 -
C. Colorful Bricks (组合数学或dp)
题目链接:https://codeforces.com/contest/1081/problem/C题意:给n,m,k,用m中颜色给1*n的方块涂色,满足有k个小方块与其左边是不同的(除开第一个),求出涂色方案数。题解:参考官方题解。 解法一:我们可以在n-1块方块选择k个方块,来涂色,满足其与左边不同,即是,我们来解释下,先选出k个,然后首先第一个可以取m种颜色,相对应的...原创 2018-12-17 21:02:08 · 583 阅读 · 0 评论 -
F. Tree with Maximum Cost (换根+树形dp)
题目链接:https://codeforces.com/contest/1092/problem/F题意:给你n个节点的值,再给n-1条边构出一颗数,让你找出一个节点v,使其为根,并计算的最大值,dist(i,v)表示节点i到节点v的深度。题解:参考链接:神犇 这题题解,换根。我们先设sum[u] 等于 以u为根的子树的,再计算以1为根的贡献值res。这时我们要从父亲节...原创 2018-12-25 00:02:14 · 489 阅读 · 0 评论 -
Trapped in the Well (01背包变形)
题目链接:oj22858题意:给一个井的深度,再给你G个垃圾,每个垃圾有其到达时间,吃掉这垃圾能延长寿命时间或者用这个垃圾来垒成梯子,人初始时间为10。问:最快什么时间能逃离,要是不能逃离,存活最晚的时间是多少? 题解:01背包变形。参考集训队大佬帅辉的思路,牛逼。代码:#include<cstdio>#include<algorithm>#inc...原创 2019-01-16 20:14:50 · 337 阅读 · 0 评论 -
多校3 hdu 6321 Problem C. Dynamic Graph Matching (状态dp)(注意取模函数超时)
题目链接:哆啦A梦传送门题意:给n个点,m个操作,每次为 + u v或者 - u v,+ 表示点u与点v之间连一条边,反之 - 亦然。每次操作完成后,输出n/2个数,分别表示当前选出1条无公共端点的边,2条无公共端点的边,3条.....n/2条无公共端点边时分别有多少种不同的选择。 题解:参考博客:https://blog.csdn.net/paradise_tht/article/d...原创 2019-02-18 14:31:16 · 208 阅读 · 0 评论 -
hdu 4389 X mod f(x) (数位dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4389题解:数位dp。此时我们枚举模数,因为范围最大为1e9,故模数最大为81。#include <bits/stdc++.h>using namespace std;typedef long long LL;int dp[12][100][100][100...原创 2019-04-03 23:12:22 · 171 阅读 · 0 评论 -
hdu 4734 F(x) (数位dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734题解:数位dp。#include <bits/stdc++.h>using namespace std;typedef long long LL;int dp[12][100000],n;int l,r;int a[12];int dfs(int po...原创 2019-04-04 22:19:24 · 164 阅读 · 0 评论 -
D—Match Stick Game (dp)2019南昌网络赛
题目链接:哆啦A梦传送门题意:给出 0~9 十个数字,每个数字都由一些数量的火柴棒构出,现在给你一个表达式,你可以移动一些火柴棒使得这个表达式的值最大,但是要保证新的表达式的操作符与每个数字的位数要和原来的一模一样,最后输出最大表达式的值。题解:参考博客:神犇我只是加了点注释,方便自己以后回顾。先预处理:val[i][j][0] 表示位数为i,火柴棒为j的最小值v...转载 2019-04-22 21:26:22 · 210 阅读 · 0 评论 -
F. Shovels Shop (贪心+dp)
题目链接:哆啦A梦传送门题意:有n个商品,每个商品有一个价格,现在有m中满减优惠 (x,y)表示买满x件,最便宜的y件免费,现在要买k件商品,问:最少花费多少钱?题解:参考官方解释。1,我们只需在最便宜的k件商品中,利用满减活动,尽可能的减少花费。2,我们把选出来k件最便宜的商品中,从小到大排个序,此时满减最优惠的就是在相邻的商品中使用,因为它每次只能减掉最便宜的,此时这样的...原创 2019-04-18 16:37:12 · 303 阅读 · 0 评论 -
Codeforces Round #519 by Botan Investments F. Make It One (组合数学+dp)
题目链接:F题意:给一串数字,让你从中找出最少的数字,使得它们的最大公约数为1。 参考链接:https://blog.csdn.net/Link_Ray/article/details/83627570 题解:由2 * 3 * 5 * 7 * 11 * 13 * 17 > 3e5 ,我们可以知道,最多不超过7个,假设有7个数字,要想每个数字都互质,每个数字必须包含6个质因...原创 2018-11-06 09:56:30 · 312 阅读 · 0 评论 -
E. Segment Sum (数位dp)Educational Codeforces Round 53 (Rated for Div. 2)
题目链接:http://codeforces.com/contest/1073/problem/E参考链接:https://blog.csdn.net/qq_38677814/article/details/83415782题意:给出l,r,k,在范围 [ l , r ] 内找出数字(满足每个数字的数位只能有k个不同)的总和,例如:k=2,那么101满足只有两种不同的数字。 题解:...原创 2018-10-31 12:34:21 · 153 阅读 · 0 评论 -
01背包问题之寻找路径
http://blog.csdn.net/xp731574722/article/details/707668040-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 分析一波,面对每个物品,我们只有选择拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入同一物品多次。 解...转载 2018-04-10 15:25:20 · 1361 阅读 · 0 评论 -
DP之凑硬币并找面值
Dp:题1,凑硬币:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? 状态转移方程:d(i)=min{d(i-vj)+1 },其中i-vj >=0,vj表示第j个硬币的面值;i 最小硬币数 取得硬币面值(上一级的i)比如,从上面的图我们可以看出,最终结果d(11)=d(10)+1(面值为1),而d(10)=d(5)+1(面值为5),最后d(5)=d(0)+1...原创 2018-04-10 15:39:19 · 765 阅读 · 1 评论 -
DP之最长上升子序列并找序列的值
最长上升子序列:一个序列有N个数:A[1],A[2],…,A[N],求出最长非降子序列的长度。我们定义d(i),表示前i个数中以A[i]结尾的最长非降子序列的长度。如果我们已经求出了d(1)到d(i-1),那么d(i)可以用下面的状态转移方程得到:d(i) = max{1, d(j)+1},其中j<i,A[j]<=A[i] 如果我们要求的这N个数的序列是:5,3,4,8,6,7///...原创 2018-04-10 16:04:35 · 393 阅读 · 0 评论 -
DP之完全背包问题
完全背包:Such as:设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。 对于这个问题,啊,还是直接上代码吧,在代码中理解,解一:只需在01背包上稍稍改善以下就行 #include<cstdio>#include<algorith...原创 2018-04-10 22:28:25 · 320 阅读 · 0 评论 -
01背包与完全背包一维数组的对比
01背包与完全背包一维数组的对比:在这我就废话少说,直接贴上代码供我们来比较一下啊。代码一:声明一个 大小为 dp[ c ] 的二维数组,表示面对于前i个物品,能获得的最大容量(也可以看成从前往后推),那么我们可以很容易找出它的状态转移方程:dp[ c ] = max(dp[ c ],dp [j-w[ i ]]+v[ i]) (j>=w[ i ]) for(int i=1;i<=...原创 2018-04-11 18:41:30 · 498 阅读 · 1 评论 -
DP之状态压缩
https://www.cnblogs.com/liwenchi/p/5849124.htmlCorn Fields在这个链接写得不错,先说说地图,地图上每一行的01代表一个状态,比如输入样例中的111、010,表示第一行的三个位置都可以种稻子,第二行中间的位置可以种稻子,然后,不能种稻子的地方一定不能种稻子(废话...)可以种稻子的地方可以选择种也可以选择不种,然后有一个前提条件,就是上下左右相...转载 2018-05-22 16:06:52 · 152 阅读 · 0 评论 -
F. Rain and Umbrellas——codeforces
参考出处:https://blog.csdn.net/haipai1998/article/details/80552571外加自己的补充。前人栽树,后人乘凉。Polycarp lives on a coordinate line at the point x=0x=0. He goes to his friend that lives at the point x=ax=a. Polycarp ...原创 2018-06-03 23:18:17 · 543 阅读 · 0 评论 -
DP之多重背包
Description给定N种物品和一个容量为C的背包,第i种物品最多有 Mi 件可用,每件的重量是Wi,价值是Vi。问:将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。Input输入的第一行为测试样例的个数T,接下来有T个测试样例。每个测试样例的第一行是物品种数N(1 ≤ N ≤ 100)和背包容量C(C ≤ 10000)。接下来N行,每行三个正整数,Wi ,Vi 和 M...原创 2018-05-24 23:34:13 · 454 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第一场)---E Removal
本文章参考:https://www.cnblogs.com/Fy1999/p/9354155.html主要还是搬人家的,我这也是修修补补。 链接:https://www.nowcoder.com/acm/contest/139/E来源:牛客网 题目描述Bobo has a sequence of integers s1, s2, ..., sn where 1 ≤ si ≤...原创 2018-07-25 10:43:08 · 303 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第三场)A 01背包+路径
PACM Team链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 题目描述Eddy was a contestant participating in ACM ICPC contests. ACM is short for Algorithm, Coding, Math. Since in the ACM contest...原创 2018-07-27 10:30:34 · 224 阅读 · 0 评论 -
数位dp
参考链接:https://blog.csdn.net/wust_zzwh/article/details/52100392数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦! 之所以要引入数位的概念完...原创 2018-08-24 10:02:55 · 237 阅读 · 0 评论 -
hdu 5898 odd-even number 数位dp
题目链接:hdu 5898题意:给出范围 [l , r ] ,对于范围内的数字,如果连续奇数位的长度是偶数并且连续偶数位的长度是奇数,我们将其称为奇偶数,问有多少个奇偶数?参考博客:https://blog.csdn.net/qq_33951440/article/details/77685485 #include <map>#include <set>...原创 2018-09-03 18:34:09 · 222 阅读 · 0 评论 -
G—subsequence 1 2019牛客第五场 (组合数+dp)
题目链接:题意:给出两个数字串s,t,找出s的子序列,满足大于t的方案数?题解:参考博客:组合数学+dp。对于长度大于t的s的子序列,都满足。现在考虑长度等于t的s子序列。dp[i][j]表示s的前i为,t的前j位满足的条件数。转移方程见标程。#include<bits/stdc++.h>using namespace std; typede...原创 2019-08-20 13:52:44 · 215 阅读 · 0 评论