![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
Fushicho_XF
对知识无比的向往,渴望打开新世界的大门~
展开
-
【牛客网】埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 L.K序列 (背包式滚动dp+模运算)
题目链接(背包式滚动dp+模运算)题意:给一个数组 a,长度为 n,若某个子序列中的和为 K 的倍数,那么这个序列被称为“K 序列”。现在要你 对数组 a 求出最长的子序列的长度,满足这个序列是 K 序列。 题解:考虑到是子序列可以不连续,所以不能直接记录前缀和维护双指针做(子串做法)(即使这次题目数据太水,比赛中很多人当作子串暴力过了)不过我这里还是讲解正规做法。首先可以先取走数...原创 2018-05-05 18:02:47 · 159 阅读 · 0 评论 -
HDU - 1520 Anniversary party (树形DP)
题目链接题目:某公司80年庆典宴会,给出一个n(n个员工),然后n行w[i],表示每个员工的受欢迎值,随后每行给出一个u,v(表示u是v的上司),直到u=v=0.要求出席员工的最大受欢迎值,且员工和其上司不能同时出现.题解:很明显是一道树形dp,父子结点不能同时选的贪心问题,那么我们只需要用sta标记2种状态,当sta==1时表示父结点选了,子结点不能选,当sta==0时子结点可选可不选,...原创 2018-08-18 17:05:36 · 117 阅读 · 0 评论 -
ZOJ - 1074 (DP之最大子矩阵O(N^3))
题目链接题意:给出一个N表示N阶方正,随后N行每行N列数字表示矩阵中每个格子的数值,问这个矩阵的最大子矩阵价值是多少?题解:数据比较小,直接O(N^3)过即可.代码如下:#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<...原创 2018-08-18 16:59:40 · 300 阅读 · 0 评论 -
DP之最长上升子序列模板O(nlogn) (最长上升子序列)
#define inf 0x3f3f3f3f#define ll long longconst int maxn = 1e4 + 500;const int mod = 1e9 + 7;const double esp = 1e-8;const double PI = acos(-1.0);//最长上升子序列问题)(nlogn)int dp[maxn];//dp[i]表示最优子序列...原创 2018-08-18 16:46:35 · 260 阅读 · 0 评论 -
HDU - 5115 Dire Wolf (区间DP)
题目链接题意:有一群狼,每头狼都有他的基本伤害--你打他他会反击你a[i],还有一个额外伤害,你打他身边的狼时会受到其伤害b[i],求最小收到的伤害可以消灭这群狼。题解:区间dp,状态转移: dp[i][j]--表示消灭i到j头狼所受到的最小伤害(p表示是之间最后杀死的狼) dp[i][i]=b[i-1]+b[i+1]; dp[i][j]=min(...原创 2018-08-18 16:41:27 · 156 阅读 · 0 评论 -
HihoCoder - 1636 Pangu and Stones (区间DP)
题目链接题意:给你n堆石头a[n]--每堆石头的数目,每次只能合并L~R堆石头,且每次合并需要消耗sum[i,j]的时间,求合并成一堆的最小时间。题解:很明显使用区间dp做,状态转移方程如下: dp[i][j][k]表示从i到j有k堆的最小时间 k==1,dp[i][j][1]=min(...,dp[i][p][k-1]+dp[p+1][j][1]+sum[i][j...原创 2018-08-18 16:37:11 · 140 阅读 · 0 评论 -
Gym - 100554D Domination (概率DP)
题目链接题意:给出一个t,表示t组数据,之后每组数据一个n,m表示棋盘的行数和列数,题目背景是一个人每次会随机向棋盘上一格放一个棋子,问每行每列都最少有一个棋子的数学期望是多少?//eg:2 // 1 3 =》 3.000000000000// 2 2 =》 2.666666666667题解: 概率...原创 2018-08-18 16:31:02 · 253 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第二场) H.travel (树形DP)
题目链接时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述White Cloud has a tree with n nodes.The root is a node with number 1. Each node has a value.White Rabbit wants t...原创 2018-07-25 13:52:13 · 1228 阅读 · 0 评论 -
CodeForces 449D Jzzhu and Numbers (DP+容斥)
题目链接题意:给出一个n,随后给出n个数a[i],问你这些数的非空子集所有元素&运算后等于0的集合个数(即ai1 & ai2 & ... & aik = 0 (1 ≤ k ≤ n)),结果对1e9取模。题解:对于这题的解法直接给出是dp+容斥,后面再说明为什么使用到容斥。定义:s[i]:若i的二进制中1的个数为奇数个时为1,反之为0 ...原创 2018-05-29 22:28:38 · 214 阅读 · 0 评论 -
CodeForces 985E Pencils and Boxes (线性DP+queue)
题目链接题意:给你N个数,现在需要你对他进行划分集合,要求每个集合的元素个数必须大于等于K,而且要求集合中的最大值减去最小值的差值要小于等于D,问你是否存在划分方法,存在就输出YES,否知输出NO.题解:定义dp[i]表示以i为结尾的前i个数是否都存在合法的集合. 队列q中存的数是可能作为当前下标左边界的下标,他们之间的下标差值一定满足大于等于K. ...原创 2018-05-24 21:57:18 · 322 阅读 · 0 评论 -
CodeForces ABBYY Cup 3.0 - Finals C The Great Julya Calendar (DFS+DP+思维)
题目链接题意:给出一个数n,每次操作可以减去这个数位数上的某一位,问你最小多少次操作可以将n减为0.分析:对于C1的弱数据直接O(1)实现即可(dp预处理出所有结果),C2和C3我是直接做C3的,对于n为1e18的情况,我们预处理肯定是不可能的,当是我们打表也可以发现在递减的过程中重复数据是很多的,因此可以使用map进行记忆化存储中间某些过程答案,使重复的操作只执行一次,之后O(logn)...原创 2018-06-03 15:53:27 · 691 阅读 · 3 评论 -
Codeforces 919D Substring (拓扑排序-队列优化+ DP)
题目链接题意:给出一个n和m,表示n个点m条边,再给出一个字符串s,s[i]表示第i个点的为小写字母c. 随后给出m行u,v表示单向边u->v. 求顺着任意路径走某个字母出现的次数的最大值,若存在环,则输出-1Eg:input:5 4abaca1 21 33 44 5output: 3 (即1->3->4->5...原创 2018-08-21 17:06:09 · 460 阅读 · 2 评论