--------动态规划--------
文章平均质量分 66
Faithfully__xly
这个作者很懒,什么都没留下…
展开
-
浅谈斜率优化dp
斜率优化dp的本质还是dp只是转移耗时太大,我们需要根据其转移方程优化两种常见的计算斜率的方法:1.作差比较法举个例子当前我们的dp转移方程为:(最后求f[n]f[n]f[n]的最小值)f[i]=f[j]+(sumt[i]+s)∗(sumc[i]−sumc[j])f[i]=f[j]+(sumt[i]+s)*(sumc[i]-sumc[j])f[i]=f[j]+(sumt[i]+s)∗(...原创 2019-10-27 17:59:56 · 200 阅读 · 0 评论 -
字符串dp - WOJ#1223 子串
传送门Analysis首先这个名字“字符串dp”就是我乱取的……反正在字符串上搞嘛第二次做,在知道这是dp的情况下,依旧没有分析出来。。在大致瞥了一眼定义后,仍旧没有转移对。菜是十大原罪之首考虑两个字符串一般都需要在状态中记录下当前分别在各个串的哪个位置那么前两维我们就定义出来了f[i][j]f[i][j]f[i][j]表示在A串中进行到前i位,B串进行到前j位等等,这样的定...原创 2019-10-25 17:39:11 · 239 阅读 · 0 评论 -
单调队列优化dp - WOJ#2735 跳房子
传送门Analysis当年考NOIP普及组的时候,还不会dp考场上看到这道题,直接果断弃时隔两年,我终于能看懂题了/笑显然是一个二分+dp判断合法定义f[i]f[i]f[i]表示到达i这个位置可以获得的最多分数显然f[i]=max(f[j])+score[i]f[i]=max(f[j])+score[i]f[i]=max(f[j])+score[i]jjj满足max(1,d−g)...原创 2019-10-25 10:34:28 · 168 阅读 · 0 评论 -
二维背包 - 潜水员(Codevs 5056)
潜水员描述潜水员为了潜水要使用特殊装备。他有一个带两种气体的气缸:一个为氮气,一个为氧气。让潜水员下潜的深度需要各种数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定的氧和氮。他完成工作所需气缸的总重最低限度是多少?例如:潜水员有5个气缸。每行有三个数字为:氧、氮的量(升)和气缸的重量:3 36 12010 25 1295 50 2501...原创 2018-11-09 18:18:01 · 256 阅读 · 0 评论 -
经典动态规划问题 - 垃圾陷阱
垃圾陷阱题目描述卡门——农夫约翰极其珍视的一条Holsteins奶牛——已经落了到“垃圾井”中。“垃圾井”是农夫们扔垃圾的地方,它的深度为 D(2<=D<=100)英尺。卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。假设卡门预先知道了每个垃圾扔下的时间 t(...原创 2018-11-09 14:47:37 · 514 阅读 · 0 评论 -
数位dp - 恨7不成妻(HDU4507)
恨7不成妻描述单身!依然单身!吉哥依然单身!DS 级码农吉哥依然单身!所以,他平生最恨情人节,不管是 214 还是 77 ,他都讨厌!吉哥观察了 214 和 77 这两个数,发现:2+1+4=77+7=7×277=7×11最终,他发现原来这一切归根到底都是因为和 7 有关!所以,他现在甚至讨厌一切和 7 有关的数!什么样的数和 7 有关呢?如果一个整数符合下面三个条件之一,...原创 2018-11-06 08:23:49 · 320 阅读 · 0 评论 -
状压dp入门 - 炮兵布阵(luogu 2704)
炮兵布阵,位运算&amp;dfs传送门原创 2018-10-29 14:43:49 · 136 阅读 · 0 评论 -
1023 - 简单0/1背包? - lzy的游戏
传送门分析这转化,真是够可以的首先我们需要得出一个结论:无论我们怎么选,最后肯定都有一种选法满足条件(证明的话,感性理解一下,假设我们现在知道最后打出去的牌是哪些,那我们一定可以调整打牌的顺序,使其满足条件)然后在此基础上我们就可以直接使用0/1背包将伤害值看做是原牌的价值,魔法值看做是原牌的体积代码#include<bits/stdc++.h>#define in r...原创 2018-10-23 23:19:04 · 162 阅读 · 0 评论 -
1020 - 多重背包可行性 - Coins(POJ1742)
传送门 分析虽然用朴素的多重背包加二进制拆分能卡过去,但时间复杂度应该是错误的我们还是来讲一下O(n*m)的算法由于这道题只要求了可行性(也就是面值能否被拼凑出来)那么我们分析一下,发现一个面值能被拼凑出来当前仅当前i-1种硬币已经拼出来 使用了第i种硬币,且j-a[i]已经拼凑出来了 代码 #include<cstdio>#includ...原创 2018-10-20 13:49:46 · 159 阅读 · 0 评论 -
NOIP前 基础动态规划模板
背包问题0/1背包,完全背包,多重背包,分组背包,二维背包,混合背包背包0/1背包(每个物品只能选择一个)for(i=1;i&lt;=n;++i){ w[i]=in;c[i]=in;}for(i=1;i&lt;=n;++i){ for(j=m;j&gt;=w[i];--j)//0/1背包要倒序!保证不会将同一个物品多次放入 f[j]=max(f[j-w[i]]...原创 2018-11-09 21:38:10 · 196 阅读 · 0 评论 -
拓扑序dp - 落忆枫音(BZOJ 4011 HNOI2015)
传送门Analysis莫名其妙地被题面虐了一把很好的一道结论题(?)由朱刘算法的推论可知,如果除根节点外每个点都选择一条入边,由于没有环,因此一定会形成一个树形图答案就是∏i=2ndegree[i]∏^n_{i=2}degree[i]∏i=2ndegree[i] 其中degree[i]表示第i个点的入度但是现在我们加入了一条边,图中就可能形成环我们需要做的就是,依然用上述式子算答...原创 2018-11-04 10:00:03 · 177 阅读 · 0 评论 -
棋盘型dp - 传纸条(NOIP2008提高组)
传送门Analysis考虑两条来回的不重合的路径等价于两条从左上角走到右下角不重合的路径如果只求一条从左上走到右下的路径,,使其路径权值和最大,这就是很基础的dp了f[i][j]=max(f[i−1][j],f[i][j−1])+a[i][j]f[i][j]=max(f[i-1][j],f[i][j-1])+a[i][j]f[i][j]=max(f[i−1][j],f[i][j−1])+...原创 2018-11-04 11:53:29 · 193 阅读 · 0 评论 -
斜率优化dp - Cats Transport
传送门Analysis斜率优化dp好题。对于第i只猫,显然如果管理员想从出发开始刚好接到它,需要在t[i]=h[i]−dist(1,i)t[i]=h[i]−dist(1,i)t[i]=h[i]−dist(1,i)的时候出发才行。这样的话,如果把第l~r只猫分成一组,那么当前分组需要的最小花费是t[r]−t[l]+t[r]−t[l+1]+t[r]−t[l+2]+...+t[r]−t[r]=...原创 2018-11-05 18:56:32 · 177 阅读 · 0 评论 -
矩阵快速幂优化dp -E. A Trance of Nightfall(CodeForces989)
传送门Analysis好题啊,不会做的都是好题,emmmdzyo说这道题不是一眼dp吗。。。。。(好吧好吧,那就假设我们知道这道题可以dp搞了,反正我不知道)由问题:“求连续移动mi步,最后到达ti的最大概率是多少” 可知我们可以定义状态Ai,u,vA_{i,u,v}Ai,u,v表示从 u 走 i 步到达 v 的概率是多少最后我们的目标就是max(Ami,x,ti)max (A_{...原创 2018-11-08 20:00:04 · 369 阅读 · 0 评论 -
DP - 统计序列
题目描述给你m个不同数字,然后用这些数字组成长度为n的序列,且保证至少有长度>=k的一段相同数字的方案数。输入3个整数N,M,K输出一行,输出的答案值MOD 109+7109+7样例输入3 2 2样例输出6提示【数据规模】70%:N,K<=1000N,K<=1000100%数据:1<=N,M,K<=106Analysis突然发现自己好毒...原创 2019-01-27 09:56:48 · 166 阅读 · 0 评论 -
#4378 【2018提高测试】玩具
今日份难得智商在线(居然在讲评的时候听懂了概率dp ~~o(≧v≦)o)这道题真的不错啊(当然大佬们一定觉得这是一道水题)Analysis预处理dp[i][j]表示i个点的森林,有j个点在第1棵树的概率,我们有状态转移方程 dp[i][j]=dp[i−1][j−1]∗(j−1)∗inv[i]+dp[i−1][j]∗(i−j)∗inv[i]dp[i][j]=dp[i−1][j−1]∗(j−...原创 2019-02-18 16:13:09 · 195 阅读 · 0 评论 -
斜率优化dp - 防御准备(BZOJ3156)
传送门Analysis比较裸的斜率优化1.推出转移方程定义f[i]f[i]f[i]表示在第i个位置上放守望塔的最小花费显然最后答案在f[n]f[n]f[n]中转移方程f[i]=minf[j]+(i−j)∗(i−j−1)/2+a[i](j<i)f[i]=min f[j]+(i-j)*(i-j-1)/2+a[i](j<i)f[i]=minf[j]+(i−j)∗...原创 2019-07-24 10:19:14 · 123 阅读 · 0 评论 -
1019 - 单调队列+dp - 烽火传递
题目描述烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情。在某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定的代价。为了使情报准确的传递,在 m 个烽火台中至少要有一个发出信号。现输入 n、m 和每个烽火台发出的信号的代价,请计算总共最少需要多少代价,才能使敌军来袭之时,情报能在这两座城市之间准...原创 2018-10-19 21:19:13 · 162 阅读 · 0 评论 -
1019 - 多重背包之二进制优化 - 宝物筛选(luogu 1776)
传送门 分析多重背包,就是在0/1背包的基础上,固定每个物品选的上限(最多选多少个)最简单的方法就是直接拆分将第i种物品看做独立的ci个物品,转化为0/1背包即可但这样显然不优,于是我们想到了二进制 把物品的件数C 用分解成若干个件数的集合,这里面数字可以组合成任意小于等于C的件数,而且不会重复,之所以叫二进制分解,是因为这样分解可以用数字的二进制形式来解释比如:7的二...原创 2018-10-19 20:06:37 · 266 阅读 · 0 评论 -
【2018/08/19】T1-数位dp(伪)-number
题目背景SOURCE:NOIP2015-SHY-10题目描述如果一个数能够表示成两两不同的 3 的幂次的和,就说这个数是好的。比如 13 是好的,因为 13 = 9 + 3 + 1 。又比如 90 是好的,因为 90 = 81 + 9 。现在我们用 a[i] 表示第 i 小的好数。比如 a[1] = 1, a[2] = 3, a[5] = 10 。给定 L,R,请求出 ...原创 2018-08-19 17:20:27 · 179 阅读 · 0 评论 -
【2018/08/19】T2-状压dp+二分答案-dp
题目背景SOURCE:NOIP2015-SHY-10题目描述一块土地有 n 个连续的部分,用 H[1],H[2],…,H[n] 表示每个部分的最初高度。有 n 种泥土可用,他们都能覆盖连续的 k 个部分,第 i 种泥土的价格为 C[i],可以使 i,i+1,…,i+k-1 部分的高度增加 E[i](如果 i+k>n,那就覆盖 i,…,n ),我们必须满足以下条件:1、每种泥土只...原创 2018-08-19 22:08:57 · 194 阅读 · 0 评论 -
【2018/08/29】T3-状压dp+贪心-movie(SDOJ 3729)
电影描述小石头喜欢看电影,选择有N部电影可供选择,每一部电影会在一天的不同时段播放。他希望连续看L分钟的电影。因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他不希望重复看一部电影,所以每部电影他最多看一次,也不能在看一部电影的时候,换到另一个正在播放一样电影的放映厅。请你帮助小石头让他重0到L连续不断的看电影,如果可以的话,计算出最少看几部电影。输入...原创 2018-08-29 16:14:59 · 174 阅读 · 0 评论 -
【2018/09/08】T2-状压dp-整数划分(WOJ 3922)
传送门分析好生优秀的一道题,暴力捞到90分???来谈谈正解吧我们很容易发现 n 分解出来的整数因为两两互质,所以他们的因数肯定也是互质的。所以若 n = p1^a1 * p2^a2 * ……*pk*ak,那么其分解出来的每一个整数n= x * y * z ,x要不就是囊括同一种的质因数的全部,要不就不含该种质因数。因为如果 x 含有几个p1,y含有几个p1,那么这两个数肯定不互质。...原创 2018-09-08 17:20:50 · 216 阅读 · 0 评论 -
【2018/10/01】T2 - 状态压缩 - 偷书
偷书 在L的书架上,有 N本精彩绝伦的书籍,每本书价值不菲。 M 是一个书籍爱好者,他对 L 的书籍早就垂涎三尺。最后他忍受不了诱惑,觉得去偷 L 的书,为了迅速完成这件事,同时他不希望 L 很快发现书籍少了,他决定偷书时,对于任意连续的 k 本书,他最多选 B 本,最少选 A 本。现在他想知道怎么选出来的书本最后使得偷的书籍的价值和,与剩下的书籍价值和,差值最大。 【 Input】 第一行四...原创 2018-10-01 16:04:40 · 141 阅读 · 0 评论 -
1011 - 区间dp - 合并石子(NOI 1995)&加强版
题目背景NOI1995试题题目描述在一个操场上一排地摆放着 N 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个程序,计算出将N堆石子合并成一堆的最小得分。输入格式输入文件第一行为一个正整数 N (2≤N≤100);以下 N 行,每行一个正整数,小于10000,分别表示第 i 堆石子的个数(1...原创 2018-10-12 07:36:06 · 719 阅读 · 0 评论 -
【2018/09/22】T2 - dp - 塔
塔(30/100)描述小A想搭一个体积不超过m的塔,他有各种大小的立方积木,比如边长为a的积木,体积为a^3,现在小A需要你给一个X,每次小A会用一个体积不超过X的最大积木,依次到搭好为止,现在他想最大化积木的个数,同时在积木个数最大的情况下使X最大输入一行一个数m输出一行两个数,最多积木数以及x样例输入48样例输出942提示【样例解释】 X=23...原创 2018-09-22 17:30:37 · 225 阅读 · 0 评论 -
1005 - 最长不上升子序列+贪心 - NOIP 1999 拦截导弹
题目背景NOIP1999 提高组试题题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于10000的正整数),计...原创 2018-10-05 21:50:47 · 249 阅读 · 0 评论 -
1005 - 最长不下降子序列 - n^2算法及 n logn 算法
~~~~涨知识啦~~~~概念设有一个正整数序列a[n]: a1,a2,...,an ,对于下标i1<i2<...<ih,若有ai1<ai2<...<aih, 则称序列a[n]含有一个长度为h的不下降子序列。 那么最长不下降子序列就是求 h 的最大值咯,这很好理解先来最最基础版本的 ...原创 2018-10-05 21:51:39 · 1083 阅读 · 0 评论 -
【2018/10/05】T2 - 状压dp - 上升序列
我好菜啊……好菜啊……好菜啊……上升序列描述给出一个长度为 m 的上升序列 A(1 ≤ A[i]≤ n), 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS.输入第一行两个整数 n,m.接下来一行 m 个整数, 表示 A.输出一行一个整数表示答案.【输入样例1】5 31 3 4【输出样例1】11【输入样例2】4 23 4【输出...原创 2018-10-06 12:20:04 · 231 阅读 · 0 评论 -
1007 - 最长公共子序列(输出该子序列及其长度)
有一天夜晚,我烧毁了所有的记忆,从此我的梦透明了;有一个早晨,我扔掉了所有的昨天,从此我的脚步就轻盈了。 ...原创 2018-10-07 10:51:51 · 5537 阅读 · 0 评论 -
1014 - 最长公共上升子序列 - Greatest Common Increasing Subsequence(HDU 1423)
传送门 分析好优秀的一道题啊……我学过最长公共子序列,也会最长上升子序列但mix在一起,我就糊涂了其实也还好我们相当于在最长公共子序列的基础上多一个条件:要求数值递增还记得最长公共子序列是怎么求的吗?定义:F[i,j]表示处理了A1~Ai,B1~Bj,此时最长的公共子序列的长度转移:目标:F[n][m] 现在我们增加一个条件定义 :F[i...原创 2018-10-14 21:38:27 · 265 阅读 · 0 评论 -
1015 - 最长公共上升子序列(输出路径) - ZOJ 2432
传送门 分析上一篇博客讲了怎么求最长公共上升子序列这篇呢,就来补一下锅讲一下怎么输出路径,我在网上找了好久,各位大佬可能觉得过于简单,都没有讲……直接贴的代码我就稍微扯一下我粗浅的认识吧由于我们转移的时候, i 都是从 i - 1 转移过来,所以不用记录但是 j 是可能从不同的地方转移而来,我们就拿一个数组来记录 pre[i][j] 表示 i,j 这个点是从哪个点转...原创 2018-10-15 08:07:37 · 930 阅读 · 0 评论 -
1018 - 数学期望 - 绿豆蛙的归宿(luogu 4316)
传送门 分析数学期望入门题数学期望:随机变量取值与概率的乘积之和线性性:就是可以各种相加求解,然后乱搞dp正经的,也就是说对于不相关的两个随机变量φ和ξ,E(φ±ξ)=E(φ)±E(ξ);E(φξ)=E(φ)E(ξ);E(φ/ξ)=E(φ)/E(ξ) 摘自洛谷___new2zy___ :根据题目要求,我们很自然的可以想到:设状态f[x]f[x]表示点x到终点...原创 2018-10-18 15:29:58 · 162 阅读 · 0 评论 -
1018 - 数学期望 - 骰子
骰子描述骰子是一个六面分别刻有一到六点的立方体,每次投掷骰子,理论上得到1到6的概率都是1/6有骰子一颗,连续投掷n次,问点数总和大于等于X的概率是多少输入输入一行2个证书,分别表示n,X,其中1<=N<=24,0<=X<150输出1行,一个分数,要求用最简的形式精确的表达投掷n次骰子,总数大于等于x的概率。如果是0/1,则输出0,如果1/1输出...原创 2018-10-18 16:02:57 · 1387 阅读 · 1 评论 -
1019 - 最大连续和【模板】
题目描述给出一串长度为 n 的数列,要求从中找出连续的一段来使得总和最大。输入格式第一行包含一个整数 n(1≤n≤100000),表示数列的长度。第二行包含 n 个整数来描述这个数列 a[i](i从1~n编号),每个整数的的绝对值不超过 1000。输出格式第一行输出一个整数,为最大的连续段总和。 第二行输出两个整数,分别表示最大的连续段的起始位置和终止位置。样例数据 1...原创 2018-10-19 07:47:58 · 662 阅读 · 0 评论 -
0818-数位DP-Game
题目背景SOURCE:NOIP2015-SHY4题目描述Alice 和 Bob 正在玩一个游戏,两个人从 1 轮流开始报数,如果遇到 7 的倍数或者遇到的这个数的十进制表示中含 7 ,则遇到的那个人需要喊“过”。例如: 1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 ……游戏过后,Bob 提出了一个问题:在区间 [L,R] 里有多少数...原创 2018-08-18 13:56:43 · 145 阅读 · 0 评论