![](https://img-blog.csdnimg.cn/20210920122753499.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
DP - 线性DP
文章平均质量分 95
DP -
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
-
BZOJ 1592. Making the Grade (Gold)(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
【BZOJ计划 #25】1592. Making the Grade [Usaco2008 Feb]原创 2021-10-31 19:54:38 · 819 阅读 · 0 评论 -
BZOJ 2131 免费的馅饼(DP,二维偏序问题 / 旋转坐标轴转化问题)【BZOJ 修复工程】
【BZOJ修复计划 #1】BZOJ 2131 免费的馅饼【国家集训队】原创 2021-09-02 21:53:04 · 382 阅读 · 0 评论 -
0x51.动态规划 - 线性DP(习题详解 × 10)
目录本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记, 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络 ,由我个人整理总结。部分内容由我个人编写而成,如果想要有更好的学习体验或者希望学习到更全面的知识,请于京东搜索购买正版图书:《算法竞赛进阶指南》——作者李煜东,强烈安利,好书不火系列,谢谢配合。下方链接为学习笔记目录链接原创 2021-08-15 21:03:33 · 1181 阅读 · 1 评论 -
洛谷 P4463 [集训队互测 2012] calc(拉格朗日插值优化DP)
P4463 [集训队互测 2012] calc(拉格朗日插值优化DP)原创 2021-05-02 16:12:30 · 409 阅读 · 0 评论 -
Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~
整理的算法模板合集: ACM模板点我看算法全家桶系列!!!实际上是一个全新的精炼模板整合计划E - Sorting Books一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_iai,你可以每次将一本书移动到书架的最右端,如果书架上的书,颜色相同的书都排到了一块,我们就认为他是漂亮的,请问将这个书架通过上面的那一种操作排成漂亮的书架,最少需要几次操作?Solution其实是超级简单的一道题 ~首先根据题意,先不考虑最优解,我们直接全部往右乱扔就一定能满足,但是不一定是最优原创 2021-02-06 14:08:36 · 814 阅读 · 2 评论 -
(2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第八题包子凑数)
第八题题目标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有3种蒸笼,分别能放4、5和6个包子。而转载 2020-11-07 23:53:48 · 501 阅读 · 0 评论 -
UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)
依旧是线性DP我们使用闫氏DP分析法总体DP转移的时间复杂度为O(n2)O(n^2)O(n2)。但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回文串,普通的判断为O(n)O(n)O(n),那么组合到一块循环的话总体的时间复杂度就变成了O(n3)O(n^3)O(n3),这是我们不能接受的,所以考虑使用DP预处理字符串S中任意两点i到j之间是否为回文串,可以用一个 bool\tt boolbool 型的数组f[i][j]表示 i\tt ii 到 j\tt jj 之间是否为回文串。最.原创 2020-10-15 17:48:11 · 272 阅读 · 0 评论 -
Codeforces 1408 D. Searchlights(优化DP、思维)
传送门DP的思想,因为题目中有两个维度,数据达到了1e6,所以我们直接开二维数组显然不太恰当,而且我们的答案不好选取,我们可以使用一个技巧,开一维数组,用DP的下标表示一个维度(x),循环一个维度(x)的大小,取 max\tt maxmax 维护另一个维度(y)的权值。定义 f[i]\tt f[i]f[i] 表示的是,若x\tt xx 轴坐标移动 ≤i≤i≤i的距离, 则 y\tt yy 坐标至少需要移动 f[i]\tt f[i]f[i] 大小。才能使得所有的海盗都不会被探照灯所照射到(他们全部都在探原创 2020-10-15 16:50:13 · 288 阅读 · 0 评论 -
UVA11400 照明系统设计 Lighting System Design(线性DP)
因为只能被电压更高的灯泡替换,所以我们按照电压排序,相当于是一个上升子序列,或者说找一个上升子序列每一种灯泡都有一个需求量,相当于用这个灯泡就需要买这么全部的相同的灯泡。f[j] + (s[i] - s[j]) * a[i].c + a[i].k实际上就相等于购买了s[i] - s[j]个第i种的灯泡,跟前面的s[i] - s[j]个灯泡替换。让我们求最少的花费。#include<cstdio>#include<cstring>#include<algorithm&g.原创 2020-10-14 22:22:49 · 277 阅读 · 0 评论 -
【动态规划】硬币问题
问题描述有n种硬币,面值分别为V1,V2,V3,.....VnV _1,V_2,V_3,.....V_nV1,V2,V3,.....Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值。1<=n>=100, 0<=S<=10000,1<=Vi<=S.硬币问题,实际上就是一个完全背包问题,但是要记录最优子结构并输出路径。1.DFS输出方案一个小trick就是我们使用记忆化搜索的时候可以用引用变量表示原创 2020-10-13 19:39:43 · 537 阅读 · 0 评论 -
【动态规划】矩阵嵌套问题
题意:有n个矩阵,每个矩阵可以用两个整数a、b描述,表示它的长和宽。矩阵X(a,b)可以嵌套在矩形Y(c,d)中,当且仅当a<c,b<d,或者b<c,a<d。输出最多嵌套的矩阵个数。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define x first#define y secondusing namespace std;原创 2020-10-13 10:30:22 · 782 阅读 · 0 评论 -
CF1407D Discrete Centrifugal Jumps(单调队列+DP)
第二个方式维护单减第三个方式维护单增while(utop && a[i] <= a[stk_up[utop]]) { if(a[i] != a[stk_up[utop]])f[i] = min(f[i], f[stk_up[utop - 1]] + 1); utop -- ;}#include<cstdio>#include<cstring>#include<iostream>#include<algori.原创 2020-10-06 22:22:44 · 256 阅读 · 0 评论 -
模板 - DP动态规划
一:【背包】1.【01背包】#include<algorithm>#include<cstdio>int T,n,i,j,v[110],w[110],f[1010];int main(){ scanf("%d%d",&T,&n); for(i=1;i<=n;i++)scanf("%d%d",&v[i],&w[i]); for(i=1;i<=n;i++) for(j=T;j>=v[i];转载 2020-10-04 09:59:41 · 858 阅读 · 0 评论 -
2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)
三段题面,只有第三段是有用的…前两段又长单词又难懂,就是在讲故事。。。不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句话有好几个生词没见过让我怀疑这是不是英语 )题目大意就是一个n*m的矩阵,每一个格子上都有一个数字,我们可以从任意的点出发,每次向上下左右四个方向走,只能到有公共边的格子上去,求一共有多少条完整路径。其中完整路径的定义是整条路上数字从1连续地走到n,其中如果到n了以后他的四个方向都没有n+1也就是不能继续往下走了才算到终点。(还有一个要求就是路径的长.原创 2020-10-08 21:55:44 · 273 阅读 · 0 评论 -
解题报告:luogu P1688 新单词接龙问题【trie树、dfs、DP递推】
单词的变化有三种:1删掉一个字母,2:插入一个字符,3:将一个字符变成另外一个字符dig→fig→fin→fine→winedig→fig→fin→fine→winedig→fig→fin→fine→wine要求保证字典序从小到大,那么我们在变换的时候直接对于一个字符串的当前字母,从a到z遍历根据题意变换,那么所有能连接上(变成完全一样的字符串)的顺序就是按照字典序升序的。假设我们已经知道了从第 i+1i+1i+1 (1<=i+1<=n)(1 <= i+1 <= n)(1&l.原创 2020-08-05 22:36:32 · 293 阅读 · 0 评论 -
团队暑期集训 - 基础DP练习
目录D - 做作业(状态压缩)E - Super Jumping! Jumping! Jumping!I - 最少拦截系统(最长上升子序列模板)团队暑期集训的题,都比较基础。D - 做作业(状态压缩)有n个任务,每个任务有一个截止时间,超过截止时间一天,要扣一个分。求如何安排任务,使得扣的分数最少。Input有多组测试数据。第一行一个整数表示测试数据的组数第一行一个整数n(1<=n<=15)接下来n行,每行一个字符串(长度不超过100)表示任务的名称和两个整数,分别表示任务的截止原创 2020-07-10 11:26:17 · 302 阅读 · 0 评论 -
牛客练习赛61 C 四个选项(并查集、DP、排列组合)难度⭐⭐⭐
链接:https://ac.nowcoder.com/acm/contest/5026/C时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述众所周知,高考数学中有一个题目是给出12个单项选择,每一个选择的答案是 A,B,C,DA,B,C,DA,B,C,D 中的一个。 网上盛...原创 2020-04-13 10:19:20 · 346 阅读 · 0 评论 -
P2642 双子序列最大和(线性DP)(最大子段和 + 合唱队列)
P2642 双子序列最大和首先考虑单个的最大子序列和 f[i] = max(f[i - 1] + a,a); ans = max(ans,f[i]);这里的预处理方法类似合唱队列我们处理pre和nex两个数组,分别表示以i为结尾1~i的最大子序列和,以及以i为起点的i~n的最大子序列和,我们枚举中间点,答案就是 ll ans = pre[1] + nex[3]; for(int i = 3; i < n; ++ i){//题目要求至少隔一个数 ans = m原创 2020-09-08 19:03:43 · 346 阅读 · 0 评论