![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动规dp
文章平均质量分 54
动态规划
SSL_LKJ
蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名 蒟蒻一名
展开
-
粉刷木板(dp)(单调队列)
粉刷木板输入样例8 43 2 23 2 33 3 51 1 7输出样例17解题思路这题乍一看是道dp设 fi,jf_{i,j}fi,j为前i个粉刷匠,刷了前j个木块(注:可以有木块不选)那就会有三种情况1.当前粉刷匠不刷任何一个木块2.当前粉刷匠不刷当前木块3.当前粉刷匠刷一段区间的木块前面两个的转移方程很简单,就不用多讲了主要看第三个,设粉刷区间[k+1,j][k+1,j][k+1,j]maxj−li⩽k<si &nbs原创 2021-12-18 08:27:35 · 541 阅读 · 0 评论 -
2021.8.16【提高B组模拟7】T3 + P7414 [USACO21FEB] Modern Art 3(动态规划)
Modern Art 3题目传送门输入样例101 2 3 4 1 4 3 2 1 6输出样例6解题思路dp设 fi,jf_i,_jfi,j为区间 i - j 需要最少颜料的值AC代码#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int n,a[305],f[305][305];int main(){ memset(f,0x7f,原创 2021-08-16 22:16:52 · 262 阅读 · 0 评论 -
P5020 [NOIP2018 提高组] 货币系统(完全背包 dp)
SSL集训原创 2021-08-12 22:30:24 · 156 阅读 · 0 评论 -
P1048 [NOIP2005 普及组] 采药(01背包 dp)
采药问题题目传送门解题思路就是 01背包 模板AC代码#include<iostream>#include<cstdio>using namespace std;int T,M,ans,t[105],m[105],f[1005];int main(){ scanf("%d%d",&T,&M); for(int i=1;i<=M;i++) scanf("%d%d",&t[i],&m[i]); for(int i=1;原创 2021-08-11 22:23:35 · 118 阅读 · 0 评论 -
2021.8.10【提高B组模拟2】T4 数字(dp)
SSL集训原创 2021-08-10 21:28:47 · 114 阅读 · 0 评论 -
2021.7.16【提高B组模拟5】T2 图书馆(dp)
SSL集训原创 2021-07-20 16:23:29 · 82 阅读 · 0 评论 -
2021.7.15【提高B组模拟4】T1 彩色圆环(期望dp)
SSL集训原创 2021-07-16 22:22:16 · 128 阅读 · 1 评论 -
2021.7.14【提高B组模拟3】T3 软件公司 (二分)(dp)
SSL集训原创 2021-07-14 22:05:46 · 115 阅读 · 0 评论 -
2021.7.14【提高B组模拟3】T2 积木 (dp)
SSL集训原创 2021-07-14 21:53:50 · 134 阅读 · 1 评论 -
2021.7.12【提高B组模拟1】T2 最短路径(DP)
SSL集训原创 2021-07-12 21:58:40 · 126 阅读 · 0 评论 -
2020.9.12 SSL普及组模拟(第2题)(序列)(dp)
序列时间限制:1000MS内存限制:128000KB题目描述一个长度为k的整数序列b1,b2,…,bk(1≤b1≤b2≤…≤bk≤N)称为“好序列”当且仅当后一个数是前一个数的倍数,即bi+1是bi的倍数对任意的i(1≤i≤k-1)成立。给定N和k,请算出有多少个长度为k的“好序列”,答案对1000000007取模。输入输入共1行,包含2个用空格隔开的整数N和k。输出输出共1行,包含一个整数,表示长度为k的“好序列”的个数对1000000007取模后的结果。输入样例3 2输出样例5原创 2020-09-12 15:55:18 · 210 阅读 · 0 评论 -
拦截导弹(最小路径覆盖)
拦截导弹Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。Sample Input300 250 275原创 2020-08-22 20:53:01 · 285 阅读 · 0 评论 -
P1879 [USACO06NOV]Corn Fields G(状压dp)
[USACO06NOV]Corn Fields G题目传送门解题思路这题就用一个f[i][s[j]]表示在当前第 i 行的状态为 s[i]f[i][s[j]]+=f[i−1][s[w]] f[i][s[j]]+=f[i−1][s[w]] f[i][s[j]]+=f[i−1][s[w]]注:要取模AC代码#include<iostream>#include<cstdio>using namespace std;long long n,m,x,t,answer,原创 2020-08-21 08:54:58 · 116 阅读 · 0 评论 -
P1052 过河(状态压缩)
过河题目传送门解题思路这题就是状态压缩优化你可以先去看看P3951 小凯的疑惑(数论)从上题得知,a*b-a-b是最大不能得到的价值,后面的价值都能够得到这题也大同小异,当奇数和偶数都可以被枚举到时,后面的数自然也可以被枚举到最大能枚举到奇数和偶数的位置,就是T * (T-1),这样就可以压缩空间和运算次数 for(int i=1; i<=m; i++) { b[i]=min(a[i]-a[i-1],90);//最多是10*(10-1)=90 l+=b原创 2020-08-21 08:16:57 · 282 阅读 · 0 评论 -
P1433 吃奶酪(状压dp)
吃奶酪题目传送门解题思路我们可以设一个f[i][j]i表示,当前在i点,j表示一个二进制,其中0表示没走过,1表示走过f[j][i]=min(f[j][i],double(1.0∗f[k][i−(1<<j−1)])+double(1.0∗dis(j,k)));//状态转移f[j][i]=min(f[j][i],double(1.0*f[k][i-(1<<j-1)])+double(1.0*dis(j,k)));//状态转移f[j][i]=min(f[j][i],double原创 2020-08-20 10:45:40 · 118 阅读 · 1 评论 -
状态压缩(状态压缩)
状态压缩(状压dp)注:在涉及到位运算时,一定要注意位运算的优先级。该加的括号一定要加定义状态(例如) 求每一种放法的背包价值,状态应该是这n件物品的放与不放的情况。最容易想到的是开个n维数组,第i个维度的下标如果是1的话代表放第i件物品,0的话代表不放第i件物品;但是这样很容易造成空间浪费,而且多维数组也不好开;我们仔细观察就会发现,每件物品有放与不放两种选择;假设我们有5件物品的时候,用1和0代表放和不放如果这5件物品都不放的话,那就是00000;如果这5件物品都放的话, 那原创 2020-08-19 11:00:52 · 3519 阅读 · 1 评论 -
车II(状压dp)
车IIDescription有一个nm的棋盘(n、m≤80,nm≤80)要在棋盘上放k(k≤20)个棋子,使得任意两个棋子不相邻。求合法的方案总数。Inputn,m,kOutput方案总数Sample Input3 3 2Sample Output24解题思路这题就是状压dp先枚举出所有状态**(dfs)**void dfs(int s,int ss,int sss)//dfs枚举状态{ if(ss>n) { a[++o]=s; b[o]=sss; ret原创 2020-08-19 16:45:42 · 1793 阅读 · 1 评论 -
P2704 [NOI2001]炮兵阵地(状压dp)
炮兵阵地题目传送门Description司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻原创 2020-08-20 08:46:14 · 287 阅读 · 1 评论 -
SP39 PIGBANK - Piggy-Bank(dp)
SP39 PIGBANK - Piggy-Bank题目传送门解题思路这题就是完全背包,只不过把max改为min就行了(再加个特判)AC代码#include<iostream>#include<cstdio>using namespace std;long long n,m,k,T,v[100005],w[100005],f[100005];int main(){ cin>>T; while(T--) { scanf("%lld%lld",&a原创 2020-08-19 11:50:12 · 1063 阅读 · 1 评论 -
车(状压dp)
车Description在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),有些格子不能放,求使它们不能互相攻击的方案总数。Input第一行为棋盘的大小n第二行为障碍的数量m第三行到第m+3为m个障碍Output总数Sample Input421 12 2Sample Output14解题思路我们可以设f[i][j]为当前第i,j这个位置答案方案数,优化就是状压DP状压DP就是降维,把其中一维用二进制表示,转换为十进制存到数组里我们用a数组表示这一行障碍的原创 2020-08-19 11:12:41 · 505 阅读 · 1 评论 -
CF261D Maxim and Increasing Subsequence(树状数组)
CF261D Maxim and Increasing Subsequence题目传送门题目大意给你一个长度为n的B数组,A表示B数组复制ttt遍后首尾相连后的数组,求A的最长上升子序列 有k组询问 maxb表示B数组中最大的数题目分析观察样例与数据可以知道,当t>=sum时,答案就是sum,其中sum为序列中不同数字的个数,因为是严格单调的。sum一定小于maxb。dp,找最大值用树状数组AC代码#include<iostream>#include<cstrin原创 2020-08-19 08:17:19 · 240 阅读 · 1 评论 -
技能树(树形dp)
技能树Description玩过Diablo的人对技能树一定是很熟悉的。一颗技能树的每个结点都是一项技能,要学会这项技能则需要耗费一定的技能点数。只有学会了某一项技能以后,才能继续学习它的后继技能。每项技能又有着不同的级别,级别越高效果越好,而技能的升级也是需要 耗费技能点数的。 有个玩家积攒了一定的技能点数,他想尽可能地利用这些技能点数来达到最好的效果。因此他给所有的级别都打上了分,他认为效果越好的分数也越高。现在他要你帮忙寻找一个分配技能点数的方案,使得分数总和最高。Input第一行是一个整原创 2020-08-17 15:03:55 · 1510 阅读 · 0 评论 -
P1347 排序(拓扑排序)
排序题目传送门原创 2020-08-15 17:00:31 · 796 阅读 · 2 评论 -
P1983 车站分级(拓扑排序)
车站分级题目传送门原创 2020-08-15 16:59:25 · 625 阅读 · 0 评论 -
工程(拓扑排序)
工程Description张三是某工程公司的项目工程师。一天公司接下一项大型工程,该公司在大型工程的施工前,先要把整个工程划分为若干个子工程,并把这些子工程编号为1、2、…、N;这样划分之后,子工程之间就会有一些依赖关系,即一些子工程必须在某些子工程完成之后才能施工,公司需要工程师张三计算整个工程最少的完成时间。对于上面问题,可以假设:1、根据预算,每一个子工程都有一个完成时间。2、子工程之间的依赖关系是:部分子工程必须在一些子工程完成之后才开工。3、只要满足子工程间的依赖关系,在任何时刻可以有原创 2020-08-15 15:38:25 · 930 阅读 · 3 评论 -
奖金(拓扑排序)
奖金Description由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出,Yali Company总经理Mr.Z心情好,决定给每位员工发奖金。公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少。 于是Mr.Z下令召开m方会谈。每位参加会谈的代表提出了自己的意见:“我认为员工a的奖金应该比b高!”Mr.Z决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最少。每位员工奖金最少为100元。Input两个整数n,m,表示员工总数和代表数;以下m行,每行2个整数a,b,表原创 2020-08-15 15:03:53 · 1178 阅读 · 0 评论 -
P1137 旅行计划(拓扑排序)
旅行计划题目传送门解题思路这题就是拓扑排序+dp先拓扑排序找相连的点再用dp统计答案AC代码#include<iostream>using namespace std;int n,m,x,y,h,t,num,tot,b[100005],c[100005],p[100005],head[200005],f[100005];struct stu{ int to,next;}a[200005];void add(int x,int y)//邻接表{ tot++; a[原创 2020-08-15 14:24:45 · 899 阅读 · 0 评论 -
鱼肉炸弹(树形dp)
鱼肉炸弹Description舒克和贝塔终于下定决心要去营救被关押在众猫聚居的A城中的大米同志。 A城的构造是很奇怪的。A城中的所有N栋建筑沿着一条直线排列,而且没有两栋楼的高度是相同的。而大米同志就被关押在其中的某栋建筑中。每一栋建筑的顶上都是有一些猫们在看守的。如果按照从一端到另一端的顺序将所有的建筑编号为1到N,那么第i栋建筑的高度为Hi,顶上的猫的数量为Ci. 每一只猫不但可以看守住其所在建筑的楼顶,还可以看守住一些比它所在建筑要低的楼的楼顶。前提是没有被其他楼所挡住。A城中的建筑都是很原创 2020-08-15 11:15:15 · 472 阅读 · 0 评论 -
P2515 [HAOI2010]软件安装(树形dp)
软件安装题目传送门解题思路1:这题可能形成环所以要缩点,用强连通分量void sd()//缩点{ o=n; for(int i=1;i<=o;i++) for(int j=1;j<=o;j++) { if(a[i][j]==1&&a[j][i]==1&&w[i]>0&&w[j]>0&&i!=j) { o++; w[o]=w[i]+w[j]; v[o]=v[i]+v原创 2020-08-15 09:38:39 · 667 阅读 · 0 评论 -
Debug(树形dp)
DebugDescription经过了一整夜的激战,rc的部队终于攻下了虫族的首都Bugzilla。现在,rc决定亲自带领一队突击队员在虫族庞大的地道中寻找他的宿命之敌—Bug。 Bugzilla由N个基地组成。这N个基地被N-1段双向地道连接在一起,每段地道都连接两个基地,并且保证任意两个基地之间都可以通过地道互相到达。Bug就藏在其中的某段地道中。 开始时rc可以乘坐运输机降落在任何一个基地。每次到达一个基地时,rc都可以选择呼叫运输机将他和他的部队运输到任意另一个基地,或者进入与这个基地相原创 2020-08-15 08:38:05 · 697 阅读 · 1 评论 -
皇宫看守(树形dp)
皇宫看守Description太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫。皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状;某些宫殿间可以互相望见。大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同。可是陆小凤手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫。Input帮助陆小凤布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少。Output输入文件中数据表示一棵树,描述如下:第1行 n,表示树中结点的数目。第2行至第n原创 2020-08-15 08:24:38 · 388 阅读 · 0 评论 -
将功补过(树形dp)
将功补过Case Time Limit:1000MSDescription作为间谍专家的Elvis Han受窃取X星球军事中心的秘密情报,他已经成功进入军事中心。但是很不幸的是,在他还没有找到任务需要情报的时候就被发现,这时他清楚他不可能完成任务了,不过还有机会将功补过,也就是得到一些不如任务情报有价值的其他情报,如果得到的情报的总价值大于等于任务情报价值,他也不会受到惩罚。很幸运的是他已经得到的军事中心的地图,情报都是隐藏在各个道路上的,但是他只有时间遍历一定数量的路(时间宝贵呀!还要逃跑。。)现在原创 2020-08-14 15:07:06 · 439 阅读 · 0 评论 -
P2016 战略游戏(树形dp)
战略游戏题目传送门Description Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。 请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵。Input输入文件中数据表示一棵树,描述如下: 第一行 N,表示树中结点的数目。 第二行至第N+1行,每行描述每原创 2020-08-14 14:54:22 · 557 阅读 · 0 评论 -
P2014 [CTSC1997]选课(树形dp)
选课题目传送门Description大学里实行学分。每门课程都有一定的学分,学生只要选修了这门课并考核通过就能获得相应的学分。学生最后的学分是他选修的各门课的学分的总和。 每个学生都要选择规定数量的课程。其中有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如,《数据结构》必须在选修了《高级语言程序设计》之后才能选修。我们称《高级语言程序设计》是《数据结构》的先修课。每门课的直接先修课最多只有一门。两门课也可能存在相同的先修课。为便于表述每门课都有一个课原创 2020-08-14 10:22:27 · 620 阅读 · 1 评论 -
【POJ.2342】Anniversary party(树形dp)
Anniversary partyDescriptionThere is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tree rooted at the rector V.原创 2020-08-14 09:17:00 · 593 阅读 · 0 评论 -
P2015 二叉苹果树(树形dp)
二叉苹果树题目传送门Description有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点)这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1。我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有4个树枝的树2 5 \ / 3 4 \ / 1 现在这颗树枝条太多了,需要剪枝。但是一些树枝上长有苹果。给定需要保留的树枝数量,求出最多能留住多少苹果。Input第1行2个数,N和Q(1<原创 2020-08-14 08:59:25 · 675 阅读 · 0 评论 -
P1040 加分二叉树(区间dp)
加分二叉树题目传送门题目描述设一个 nn 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 d i ,tree 及它的每个子树都有一个加分,任一棵子树 \text{subtree}subtree(也包含 \text{tree}tree 本身)的加分计算方法如下:subtree 的左子树的加分 × subtree 的右子树的加分 + subtree 的根的分数。若某个子树为空,规定原创 2020-08-13 15:26:11 · 373 阅读 · 1 评论 -
P5766 [NOI1999]最优联通子集(树形dp)
最优联通子集洛谷题目传送门这题在北大网站上也有POJ.1192 最优联通子集Description众所周知,我们可以通过直角坐标系把平面上的任何一个点P用一个有序数对(x, y)来唯一表示,如果x, y都是整数,我们就把点P称为整点,否则点P称为非整点。我们把平面上所有整点构成的集合记为W。定义1 两个整点P1(x1, y1), P2(x2, y2),若|x1-x2| + |y1-y2| = 1,则称P1, P2相邻,记作P1~P2,否则称P1, P2不相邻。定义 2 设点集S是W的一个有限子集原创 2020-08-13 10:41:34 · 552 阅读 · 0 评论 -
P1455 搭配购买(并查集+dp)
搭配购买题目穿越门题目描述明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板编号为1,2,3,……,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你...原创 2020-02-28 21:19:07 · 579 阅读 · 0 评论 -
电子眼(树形DP)
电子眼Description中山市石一个环境优美、气候宜人的小城市。因为城市的交通并不繁忙,市内的道路网很稀疏。准确地说,中山市有N-1条马路和N个路口,每条马路连接两个路口,每两个路口之间最多只有一条马路。作为一条交通网络,显然每两个路口之间都是可达的。为了更好地管理中山市的交通,市长决定在一些路口加装电子眼,用来随时监视路面情况。这些装在路口的电子眼能够监视所有连接到这个路口的马路。现在市...原创 2019-12-14 11:39:36 · 692 阅读 · 1 评论