ACM_DP
yiqzq
人生如此复杂,机会多得像稠密图,我们没理由认输。尽管我们走不了最短路,但图仍是连通图,TLE之前,没有一个节点叫失败。
展开
-
HDU2196 Computer(树形dp+换根)
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2196题意:求一棵树中距离每一个节点的最大路径权值和。思路:假如固定了起点,那么我们通过一遍dfsdfsdfs就可以得到距离根节点中最远的点的路径权值和,但是这题需要输出nnn个点的答案,显然对每一个点的跑一遍dfsdfsdfs是不可行的。所以需要进行优化。可以使用一种换根的技巧,在预处理之后可以...原创 2019-08-14 22:04:57 · 283 阅读 · 0 评论 -
ZOJ 3735 Josephina and RPG (概率dp)
原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5081题意;给定C(m,3)支队伍之间对战获胜的概率,再给定一个序列存放队伍的编号,每次获胜之后可以选择和当前战胜的对手换队伍或者不换。求挑战胜利的最大概率。思路:概率dp,令dp[i][j]dp[i][j]dp[i][j]表示打败前iii个队,当前阵容是第jjj个...原创 2018-10-13 16:27:28 · 167 阅读 · 0 评论 -
Educational Codeforces Round 51 (Rated for Div. 2) D - Bicolorings (状压dp)
原题地址:http://codeforces.com/contest/1051/problem/D题意:对2×n2×n2×n格子着色,仅能着黑色或白色,问色块数为kkk的着色方案有多少种。色块定义如下,若两个格子颜色相同且相邻,则属于同一色块;若两个格子颜色相同且所属色块相邻,则属于同一色块;否则属于不同色块。思路:这题的矩阵很有特点,是2×n2×n2×n,那么就可以很容易的想到是利用状态压缩...原创 2018-09-26 13:03:24 · 185 阅读 · 0 评论 -
POJ 1050 最大子矩阵和
原题地址:http://poj.org/problem?id=1050题意:有一个包含正数和负数的二维数组。一个子矩阵是指在该二维数组里,任意相邻的下标是1×1或更大的子数组。一个子矩阵的和是指该子矩阵中所有元素的和。 思路:首先需要会一维的最大子序列和把该问题转化为最大连续子串和问题,即二维转化为一维。假设求出的最大子矩阵为从x行到y行,从第c列到第r列,则该矩阵转化为一维即是从第1...原创 2018-09-15 11:23:32 · 764 阅读 · 0 评论 -
HDU 1231 /POJ 2479 简单DP之最大字段和
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1231 算法核心: 动态规划, 数组为vec[]vec[]vec[],设dp[i]dp[i]dp[i] 是以vec[i]vec[i]vec[i]结尾的子数组的最大和,对于元素vec[i+1],vec[i+1],vec[i+1], 它有两种选择:a、vec[i+1]a、vec[i+1]a、vec[i+...原创 2018-09-13 20:36:37 · 215 阅读 · 0 评论 -
牛客小白月赛7 D .明七暗七(数位dp+二分)
原题地址:https://www.nowcoder.com/acm/contest/190/D思路:我们观察数据范围是1e121e121e^{12},那么枚举显然是不合适的,因此我们可以想到数位dpdpdp.这题我们可以利用数位dpdpdp求出[1,n][1,n][1,n]内有几个符合要求的数字,但是并不能求出数字是多少.因此我们需要使用二分去判断合法的数字.所以只需要二分数值xxx,判断...原创 2018-09-17 11:21:16 · 1350 阅读 · 0 评论 -
牛客小白月赛7 J 方格填色(矩阵快速幂优化)
原题地址:https://www.nowcoder.com/acm/contest/190/J思路:我们可以观察数据范围发现,nnn和mmm的差距特别大.然后mmm最大只有555并且我们经过递推可以发现当前列的状态只与前一列有关,所以这题很显然可以用状压dpdpdp来写.但是nnn又特别大,所以可以考虑使用矩阵快速幂来加快递推.具体方法是先构造出递推的矩阵,然后讨一个矩阵快速幂的板子,最后...原创 2018-09-16 01:38:58 · 368 阅读 · 0 评论 -
CCF 201312-4 有趣的数 (DP)
原题地址: http://118.190.20.162/view.page?gpid=T2思路:考虑dp,状态转移及定义详见代码#include <bits/stdc++.h>#define eps 1e-8#define INF 0x3f3f3f3f#define PI acos(-1)#define lson l,mid,rt<<1#define rs...原创 2018-09-03 20:06:24 · 154 阅读 · 0 评论 -
POJ 1065 Wooden Sticks (DP,最长反链)
原题地址:http://poj.org/problem?id=1065题意:要处理n个长为li,宽为wi的木棍,若处理完(li, wi)后接着处理(li’, wi’)且满足li’ &amp;gt;= li, wi’ &amp;gt;= wi 则不花费时间,否则花费1单位时间,问处理完n根木棍最少花费多长时间。思路;这题用dp来求解的话涉及到了离散中偏序集的知识,具体内容参考这篇博客具体内容看代码:...原创 2018-08-25 23:43:31 · 179 阅读 · 0 评论 -
Codeforces 934C - A Twisty Movement (dp)
原题地址:http://codeforces.com/contest/934/problem/C题意:给定一个长度不超过2000的由1和2组成的字符串SSS,可以选定一个区间[l,r][l,r][l, r],将S的子串Si...SjSi...SjSi...Sj做一次reversereversereverse操作(变成Sj..SiSj..SiSj..Si),问怎么选定区间,使得的到的新串的最长非...原创 2018-08-21 22:46:23 · 234 阅读 · 0 评论 -
ZOJ 3949 Edge to the Root (树形DP)
原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5568题意:给出一个棵树,每条边权都为1,要求在点1和点x之间连一条边,使得连边之后,点1到所有点的路径长度之和最小。 输出最小长度之和。 思路:我们可以先进行一遍dfs求出每个节点的子节点数,然后,再用于一个dfs进行状态祝转移. 状态转移解释具体看代码...原创 2018-08-27 21:59:51 · 181 阅读 · 0 评论 -
Gym - 101652W I - Grid Coloring (dp)
原题地址:http://codeforces.com/gym/101652/attachments参考博客:https://blog.csdn.net/Shili_Xu/article/details/79701749#include <bits/stdc++.h>#define eps 1e-8#define INF 0x3f3f3f3f#define PI acos...原创 2018-08-16 22:25:45 · 381 阅读 · 0 评论 -
Gym - 101853E E. Maximum Sum (状压DP)
原题地址:https://codeforces.com/gym/101853/problem/E题意:给出一个n*n的矩阵,矩阵中每一个格子都有一个权值,选择一个格子就能拿到当前的权值,但是同时就不能选择这个格子四周的八个格子.现在询问你获得的最大权值是多少.思路:状压dp.预处理出所有每一行合法的状态,然后dp处理就行了#include <bits/stdc++.h>...原创 2018-08-15 21:04:24 · 935 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome (dp)
原题地址:http://poj.org/problem?id=3280题意:题对一个字符串进行插入删除等操作使其变成一个回文串,但是对于每个字符的操作消耗是不同的。求最小消耗。思路:我们定义为区间 到变成回文的最小代价。那么对于有三种情况首先:对于一个串如果,那么其次:如果是回文串,那么;最后,如果是回文串,那么;#include <cmath>#include...原创 2018-08-14 21:51:24 · 120 阅读 · 0 评论 -
hdu 3001 Travelling (三进制状压dp)
贴一篇大牛博客:http://www.cnblogs.com/martinue/p/5490432.html思路:因为题目中要求一个点只能经过两次,所以我们就需要一个数组来保存在每一个状态中每一位的数值是多少。我们只需要判断你去的城市的到达次数<2就行了。 具体看代码解释:#include <bits/stdc++.h>#include <iostrea...原创 2018-07-22 09:59:40 · 208 阅读 · 0 评论 -
POJ 2411 Mondriaan's Dream (状压DP)
原题地址:http://poj.org/problem?id=2411题意:给一个n*m的矩形,你有若干1*2的小矩形,问你有多少种家那个这个矩形填满的方法。思路:主要参考了大佬的博客; 定义01状态:定义横放的砖块为11,竖放的砖块01 dp状态:定义dp[i][j]表示第i行状态为j的方案数 状态转移:dp[i][j]+=Σdp[i−1][k],k是合法的状态Σdp[i−1][k...原创 2018-07-21 14:38:35 · 115 阅读 · 0 评论 -
hdu 4734 F(x) (数位DP,memset优化,变加为减)
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=4734先贴两个讲的比较好的博客:http://www.cnblogs.com/dilthey/p/8545485.html https://blog.csdn.net/wust_zzwh/article/details/52100392#t2说一下这题的坑点。 由于时限只给了500ms,然后...原创 2018-07-20 17:47:43 · 268 阅读 · 0 评论 -
BZOJ 1026: [SCOI2009]windy数 (数位dp dfs版本)
原题地址:https://www.lydsy.com/JudgeOnline/problem.php?id=1026 思路:这题要求不能有前导0,所以需要再加一维lead来控制前导0#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long long ll;const int maxn = 1e6 + 4;cons...原创 2018-07-20 10:44:03 · 301 阅读 · 0 评论 -
矩阵快速幂的构造
参考博客:https://blog.csdn.net/Akatsuki__Itachi/article/details/80443939a[i]=a[i-1]+b[i-1]+1,b[i]=2*a[i-1]-5 ;a[1]=1,b[1]=1,问a[x]=?,b[x]=?很简单的递推,一步步推即可,但是,如果x是10^9,如何推?思维:递推式可以化为矩阵乘积那么,矩阵A[i]=A[i-1]B;...转载 2018-10-10 11:04:21 · 219 阅读 · 0 评论 -
uva1025(dp)
题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短,也就是尽量多坐车,最后输出最少等待时间。 总共有三种状态: 决策一: d[i][j] = d[i + 1][j] + 1; 决策二:有往右行驶的车 d[i][j] = min(d[i][j], d[i + t[j]][j]; 决策三:有往左行驶的车 d[...原创 2018-03-17 21:41:32 · 224 阅读 · 0 评论 -
ZOJ - 3469 Food Delivery (区间dp)
原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3469题意:在xxx轴上有nnn个客人,每个客人每秒增加的愤怒值不同。给出客人和餐厅的位置,以及客人每分钟增加的愤怒值,和送餐行走一公里需要的时间,问送完nnn个客人的外卖最小愤怒值思路:由于你每到一个点,你都要考虑接下来是向左还是向右走,并且你当前走的每一步都...原创 2019-07-17 16:59:54 · 187 阅读 · 0 评论 -
Codeforces Round #106 (Div. 2) D. Coloring Brackets(区间dp)
原题地址:https://codeforces.com/contest/149/problem/D题意:给一个给定括号序列,给该括号上色,上色有三个要求1、只有三种上色方案,不上色,上红色,上蓝色2、每对括号必须只能给其中的一个上色3、相邻的两个不能上同色,可以都不上色求0-len-1这一区间内有多少种上色方案思路:区间dp求方案数.定义dp[l][r][p][q]dp[l][r]...原创 2019-07-16 22:40:19 · 113 阅读 · 0 评论 -
牛客多校一 E.ABBA
原题地址:https://ac.nowcoder.com/acm/contest/881/E思路:定义原创 2019-07-18 21:58:18 · 231 阅读 · 0 评论 -
Codeforces Round #568 (Div. 2) G1. Playlist for Polycarp (easy version) (状压dp)
原题地址:https://codeforces.com/contest/1185/problem/G1题意:n首歌,每首歌有一个时长和类型,现在要求选出一些歌曲的排列,使得总时长等于T,并且在歌单种类型相同的歌曲不能连续播放的方案数。思路:由于n只有15,很明显可以由状压来求解。这里就有两种办法,一个是状压dp计算出所有状态,然后再去判断总时长为T,还有一种是先判断总时长为T,再去计算合法的...原创 2019-07-11 09:22:29 · 191 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3) H. Subsequences (hard version)
原题地址:https://codeforces.com/contest/1183/problem/H题意:给出一个字符串,你可以得到关于这个字符串的子序列,得到每一个子序列的代价是删除的字符个数,现在需要k个不同的子序列,问最小的代价,其实这题和一道天梯赛的题比较像 L3-020 至多删三个字符思路:使用dpdpdp求解,定义dp[i][j]dp[i][j]dp[i][j]表示前iii个字符...原创 2019-07-10 14:44:24 · 114 阅读 · 0 评论 -
HDU 1024 Max Sum Plus Plus(最大m字段和+滚动数组)
政大佬也太巨了吧!!!政大佬也太巨了吧!!!政大佬也太巨了吧!!!原创 2019-07-13 23:52:14 · 119 阅读 · 0 评论 -
Educational Codeforces Round 67 (Rated for Div. 2) E. Tree Painting(树形DP+换根法)
原题地址:https://codeforces.com/contest/1187/problem/E题意:给出一棵树,每次可以选择一个与黑色节点相邻的白色节点将其染黑,每当染黑一个节点的时候,你可以获得一个权值,权值为与该点联通的白色节点数量。最后询问最大的权值和。思路:我们可以发现题目的答案只由第一次染黑的节点决定,与染色的顺序是没有关系的。我们可以由树形DP得到以某一个节点为起点(即...原创 2019-07-09 22:14:05 · 153 阅读 · 0 评论 -
2019西安邀请赛 D. Miku and Generals(二分图染色+背包)
原题地址:https://nanti.jisuanke.com/t/39271题意:给出n个物品,每个物品有一个权值,要求分成两份,使得两份的权值和最接近,并且有些物品之间有关系,表示不能在同一份中,问你最后两份中较大的那份是权值和.思路:由于限制条件,所以我们可以确定有些物品总是对立的,那么我们可以dfs出对立的两份,和自由的物品放在一起,只用01背包即可.#include <bi...原创 2019-05-27 12:54:24 · 267 阅读 · 2 评论 -
GYM-100801 Journey to the "The World's Start"(二分+dp+单调队列)
原题地址:https://codeforces.com/gym/100801/attachments题意:给出n−1n-1n−1张不同的票,票价分别为pip_ipi,每张票每次最多可以坐 rrr 个站(1<=r<n)(1<=r<n)(1<=r<n),并且票是可以无限用并且只能买一张,如果坐到限定的距离了,要出站再重新进站,这里...原创 2019-05-19 21:52:47 · 135 阅读 · 0 评论 -
CodeForces - 1106E Lunar New Year and Red Envelopes(优先队列+dp)
原题地址:http://codeforces.com/problemset/problem/1106/E题意:给你长度为nnn的时间线,女儿可以捣乱的时间长度,红包的个数,接下来是kkk个红包可以领取的起始时间,终止时间,和领取这个红包之后他至少要等到di+1d_{i+1}di+1的时间才能领取下一个红包的did_idi,和这个红包里面有多少钱。如果能领红包他会领金额最大的,多个会领did_...原创 2019-04-18 22:05:06 · 327 阅读 · 0 评论 -
CF 597C - Subsequences(树状数组+DP)
原题地址:http://codeforces.com/problemset/problem/597/C题意:给定包含了 nnn个不同元素的序列,找出含有 R+1R+1R+1 个元素的递增子序列有多少个.数据保证:答案不超过 8∗10188*10^{18}8∗1018 。思路:定义dp[i][j]dp[i][j]dp[i][j]表示以数字i为结尾,上升子序列长度为j的方案数.所以可以O(N2...原创 2019-04-17 22:24:50 · 257 阅读 · 0 评论 -
CSU2310 count-partitions(DP)
原题地址:http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2310题意:给出一个nnn,然后求由nnn块砖构成的对称图形的方案数,对称图形的要求是以y=xy=xy=x为对称轴.思路:分析样例,对于17,那么我们可以先枚举左下角的正方形的边长,然后再确定方案数.所以左下角可以有12,321^2,3^212,32两种.对于121...原创 2019-04-22 19:15:16 · 258 阅读 · 0 评论 -
CF 629D Babaei and Birthday Cake(线段树优化dp)
原题地址:http://codeforces.com/contest/629/problem/D题意:现有nnn个蛋糕,蛋糕的形状是圆柱体,每个蛋糕的体积就是圆柱体的体积,每个蛋糕的编号是1−n1-n1−n,可以把蛋糕 iii 放到蛋糕 jjj上面,前提是 j<ij<ij<i 并且 Vj<ViVj<ViVj<Vi最后求最大的体积...原创 2019-04-17 15:25:10 · 203 阅读 · 0 评论 -
CF 711C Coloring Trees(三维dp)
原题地址: https://codeforces.com/problemset/problem/711/C题意:有nnn棵树,mmm种颜色,让你分成kkk段,数字000代表该树没没有进行染色,需要你从mmm种颜色中选择一个为其染色,染色的过程中需要消耗代价,求最小代价(已有颜色不必再染色)思路:三维dpdpdp,定义状态dp[i][j][k]dp[i][j][k]dp[i][j][k]表示前i...原创 2019-04-13 22:06:20 · 261 阅读 · 0 评论 -
Gym - 10198 D - Count The Bits (数位dp)
原题地址:http://codeforces.com/gym/101982/attachments题意:统计[0,2b−1][0,2^b -1][0,2b−1] 之间这些数中,能整除kkk的数,的二进制位上111的个数·?思路:好久没写过数位dpdpdp了,没看出来是个数位dpdpdp。这题主要需要维护两个东西,一个是维护当前数字 %k\%k%k的值,一个是维护当前数字二进制表示形式中11...原创 2019-04-08 22:10:03 · 211 阅读 · 0 评论 -
Gym - 101982 C - Contest Setting(dp)
原题地址:http://codeforces.com/gym/101982/attachments题意:有n个题目,每个题目有一个难度系数,现在要用其中k个题目组成一套卷子,要求卷子中每一道题的难度系数不同,问最后的方案数。思路:一开始以为是组合数,但是发现不会写。后来考虑用dpdpdp来写。定义dp[i][j]dp[i][j]dp[i][j]表示选用前iii种难度的题目,选出jjj个题目的...原创 2019-04-07 17:48:53 · 339 阅读 · 0 评论 -
HDU 4507 吉哥系列故事——恨7不成妻(数位DP,细节好多)
贴几篇讲的比较好的博客 https://blog.csdn.net/qq_34374664/article/details/53128417 https://www.cnblogs.com/kuangbin/archive/2013/05/01/3053233.html//http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid...原创 2018-07-20 01:28:48 · 160 阅读 · 0 评论 -
csu 2069 Saruman‘s Level Up (数位dp)
原题地址:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2069 题意:让你求出在[0,n]这范围内,有多少数字的二进制形式中1的数量是3的倍数。思路:这题很普通的数位dp不一样。平常的都是对10进行除法,但是由于在这题中求的是二进制,所以是对2进行除法。#include <iostream>#include <...原创 2018-07-19 21:34:00 · 185 阅读 · 0 评论 -
hdu 2126 Buy the souvenirs(01背包求最优解的数量)
题意:给你n种物品,有m块钱,然后给出n种物品的花费,问物品个数最多时的组合种数有多少。思路:背包九讲上提过如何求解方案数的方法,一开始还是没怎么懂。dp[i][j]表示使用i元钱购买j件物品的方案数。 那么由01背包可以知道对应一种物品,要么选,要么不选,再加上这里用的是滚动数组(实际上是三维dp,这里优化到了二维),所以对于前i件物品花费j元选用k件物品的方案数=dp[j][k] (...原创 2018-05-26 13:00:29 · 268 阅读 · 0 评论 -
hdu2844 Coins(多重背包板子题)
题意:给出一个最大面额m,再给出若干硬币价值和硬币数量,问你在面额m的范围内可以有多少种不同的组合方法(组成相同价格算一种)。#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>using namespace std;int n, ...原创 2018-05-22 11:22:46 · 255 阅读 · 0 评论