线性dp
文章平均质量分 57
Faithfully__xly
这个作者很懒,什么都没留下…
展开
-
字符串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 · 251 阅读 · 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 · 178 阅读 · 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 · 171 阅读 · 0 评论 -
NOIP2017提高组DAY1T3 - 逛公园(超详细&两种做法)
传送门Analysis首先看到这道题,暴力30分很好打针对k=0k=0k=0的情况,我们直接最短路计数就可以了然后还是从k入手,发现k最多只有50,是个突破口我们可以试着每次枚举k,限制路径长度然后计数,最后相加如果令f[u][j]f[u][j]f[u][j]表示当前在u这个点,与 u 到 1 的最短路相差 j 的路径条数那么怎么更新这个状态呢?令 v 能够到 u 那么可以得到:...原创 2018-11-03 21:46:26 · 782 阅读 · 0 评论 -
1023 - 简单0/1背包? - lzy的游戏
传送门分析这转化,真是够可以的首先我们需要得出一个结论:无论我们怎么选,最后肯定都有一种选法满足条件(证明的话,感性理解一下,假设我们现在知道最后打出去的牌是哪些,那我们一定可以调整打牌的顺序,使其满足条件)然后在此基础上我们就可以直接使用0/1背包将伤害值看做是原牌的价值,魔法值看做是原牌的体积代码#include<bits/stdc++.h>#define in r...原创 2018-10-23 23:19:04 · 170 阅读 · 0 评论 -
1020 - 多重背包可行性 - Coins(POJ1742)
传送门 分析虽然用朴素的多重背包加二进制拆分能卡过去,但时间复杂度应该是错误的我们还是来讲一下O(n*m)的算法由于这道题只要求了可行性(也就是面值能否被拼凑出来)那么我们分析一下,发现一个面值能被拼凑出来当前仅当前i-1种硬币已经拼出来 使用了第i种硬币,且j-a[i]已经拼凑出来了 代码 #include<cstdio>#includ...原创 2018-10-20 13:49:46 · 170 阅读 · 0 评论 -
1019 - 单调队列+dp - 烽火传递
题目描述烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情。在某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定的代价。为了使情报准确的传递,在 m 个烽火台中至少要有一个发出信号。现输入 n、m 和每个烽火台发出的信号的代价,请计算总共最少需要多少代价,才能使敌军来袭之时,情报能在这两座城市之间准...原创 2018-10-19 21:19:13 · 170 阅读 · 0 评论 -
1019 - 多重背包之二进制优化 - 宝物筛选(luogu 1776)
传送门 分析多重背包,就是在0/1背包的基础上,固定每个物品选的上限(最多选多少个)最简单的方法就是直接拆分将第i种物品看做独立的ci个物品,转化为0/1背包即可但这样显然不优,于是我们想到了二进制 把物品的件数C 用分解成若干个件数的集合,这里面数字可以组合成任意小于等于C的件数,而且不会重复,之所以叫二进制分解,是因为这样分解可以用数字的二进制形式来解释比如:7的二...原创 2018-10-19 20:06:37 · 277 阅读 · 0 评论 -
1019 - 最大连续和【模板】
题目描述给出一串长度为 n 的数列,要求从中找出连续的一段来使得总和最大。输入格式第一行包含一个整数 n(1≤n≤100000),表示数列的长度。第二行包含 n 个整数来描述这个数列 a[i](i从1~n编号),每个整数的的绝对值不超过 1000。输出格式第一行输出一个整数,为最大的连续段总和。 第二行输出两个整数,分别表示最大的连续段的起始位置和终止位置。样例数据 1...原创 2018-10-19 07:47:58 · 676 阅读 · 0 评论 -
1010 - 线性dp - 除虫药水
除虫药水描述在十年前,除虫是十分艰苦的工作。那时,使用普通药水进行除虫的效果极差,在一片苹果 林中使用后除掉的虫仅为极小一部分。比如说,Bugs 镇共有 N 片苹果林,对第i 片使用普通药水可以除掉 ai 吨虫。xxx的任务是对这 N 片苹果林中的每一片进行除虫,并且他必 须按照 1 到 N 的顺序依次处理。 xxx另有一种高级药水,其除虫能力为普通药水的 K 倍, 也就是说,在第i ...原创 2018-10-10 08:00:05 · 125 阅读 · 0 评论 -
1015 - 最长公共上升子序列(输出路径) - ZOJ 2432
传送门 分析上一篇博客讲了怎么求最长公共上升子序列这篇呢,就来补一下锅讲一下怎么输出路径,我在网上找了好久,各位大佬可能觉得过于简单,都没有讲……直接贴的代码我就稍微扯一下我粗浅的认识吧由于我们转移的时候, i 都是从 i - 1 转移过来,所以不用记录但是 j 是可能从不同的地方转移而来,我们就拿一个数组来记录 pre[i][j] 表示 i,j 这个点是从哪个点转...原创 2018-10-15 08:07:37 · 940 阅读 · 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 · 272 阅读 · 0 评论