线性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 · 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 评论 -
DP - 统计序列
题目描述 给你m个不同数字,然后用这些数字组成长度为n的序列,且保证至少有长度>=k的一段相同数字的方案数。 输入 3个整数N,M,K 输出 一行,输出的答案值MOD 109+7109+7 样例输入 3 2 2 样例输出 6 提示 【数据规模】 70%:N,K<=1000N,K<=1000 100%数据:1<=N,M,K<=106 Analysis 突然发现自己好毒...原创 2019-01-27 09:56:48 · 166 阅读 · 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 · 773 阅读 · 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 评论 -
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 评论 -
1019 - 最大连续和【模板】
题目描述 给出一串长度为 n 的数列,要求从中找出连续的一段来使得总和最大。 输入格式 第一行包含一个整数 n(1≤n≤100000),表示数列的长度。 第二行包含 n 个整数来描述这个数列 a[i](i从1~n编号),每个整数的的绝对值不超过 1000。 输出格式 第一行输出一个整数,为最大的连续段总和。 第二行输出两个整数,分别表示最大的连续段的起始位置和终止位置。 样例数据 1...原创 2018-10-19 07:47:58 · 662 阅读 · 0 评论 -
1010 - 线性dp - 除虫药水
除虫药水 描述 在十年前,除虫是十分艰苦的工作。那时,使用普通药水进行除虫的效果极差,在一片苹果 林中使用后除掉的虫仅为极小一部分。 比如说,Bugs 镇共有 N 片苹果林,对第i 片使用普通药水可以除掉 ai 吨虫。xxx的任务是对这 N 片苹果林中的每一片进行除虫,并且他必 须按照 1 到 N 的顺序依次处理。 xxx另有一种高级药水,其除虫能力为普通药水的 K 倍, 也就是说,在第i ...原创 2018-10-10 08:00:05 · 118 阅读 · 0 评论 -
1015 - 最长公共上升子序列(输出路径) - ZOJ 2432
传送门 分析 上一篇博客讲了怎么求最长公共上升子序列 这篇呢,就来补一下锅 讲一下怎么输出路径,我在网上找了好久,各位大佬可能觉得过于简单,都没有讲……直接贴的代码 我就稍微扯一下我粗浅的认识吧 由于我们转移的时候, i 都是从 i - 1 转移过来,所以不用记录 但是 j 是可能从不同的地方转移而来,我们就拿一个数组来记录 pre[i][j] 表示 i,j 这个点是从哪个点转...原创 2018-10-15 08:07:37 · 930 阅读 · 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 评论