动态规划
WTIAW.TIAW
这个作者很懒,什么都没留下…
展开
-
P1002 过河卒 动态规划
传送门思路:搜索tle了,只能dp了。dp[i][j] = dp[i][j-1]+dp[i-1][j];对于 点(i,j),只有(i,j-1) 和 (i-1,j)这两种选择,那么可以推出状态转移方程先定义dp[0][0] = 1;dp[i][j] =dp[i - 1][j] + dp[i][j - 1];但如果这样的话,以0,0为起点会出现点被覆盖的情况,所以我们做一下小改动然后就...原创 2019-10-18 11:18:59 · 184 阅读 · 0 评论 -
CF550C Divisibility by Eight 思维&字符串查找
思路:首先打表发现,只要一个数后三位能够整除8,那么这个数就一定能整除8,所以我们只要判断给出的数中是否包含三位数能整除8的数。n的范围(1-100)三个循环就可以判断。s.find(‘0’)可以查找值为0的元素的下标。注意特判8!!!/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Da...原创 2019-10-18 09:14:09 · 199 阅读 · 0 评论 -
P1832 A+B Problem(再升级) 完全背包 +埃筛
思路:数据不是很大,所以要先埃筛预处理,然后将质数作为价值,m作为背包。分析可知,这是一个完全背包,所以可得状态转移方程dp[j] = dp[j] + dp[j-w[i]];/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-16-19.59.14* Talk ...原创 2019-10-16 22:32:40 · 147 阅读 · 0 评论 -
P1679 神奇的四次方数 完全背包
传送门思路:先打表预处理,将1-20所有数的四次方全部列举,然后将n做为容量,每个数的四次方作为价值。完全背包:dp[i]是当容量是i时,当前背包中物体的个数。因为是要求最小,所以先预处理,将个数初始化最大。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-16...原创 2019-10-16 21:53:31 · 294 阅读 · 0 评论 -
P2663 越越的组队 思维01背包
传送门思路:一开始怎么也想不出来如何处理接近sum/2的情况。后来看了题解才知道,可以把总的分数的一半看作一个背包,而将每个分数看成它的价值。dp[i]表示在分数为i的情况下,最多能装多少分数。在背包中维护一个最大值即可。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019...原创 2019-10-16 20:38:12 · 274 阅读 · 2 评论 -
P1968 美元汇率 dp+思维
传送门思路:分为两种状态,马克币和美元。分别表示最大值的状态。最后再相互比较。用二维数组区分。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-03-22.44.26* Talk is cheap.Show me your code.*/#include&...原创 2019-10-03 23:17:31 · 196 阅读 · 0 评论 -
P1926 小书童——刷题大军 二次01背包
传送门思路:题目明显要用01背包做,但是这里有两个背包 分数 和 时间。依照题目要求,我们要先求花费最少时间取得刚好及格的分数。那么在这里我们先dp找出所有在i时间时的最优解,然后再从0扫一遍,判断dp[i]如果大于0,那么此时的i就是最少时间。用 时间背包-此时的i=新时间背包。最后再dp一次即可。/*** From:* Qingdao Agricultural Universit...原创 2019-10-04 10:36:15 · 206 阅读 · 0 评论 -
P2800 又上锁妖塔 dp
传送门思路 : 仙剑啊 必须有题解!思路:一道动态规划题,你可以有三种选择,跳一层,二层,或花费时间爬一层。所以每次在这三种状态里选择最小的即可。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-04-10.46.13* Talk is cheap.Show ...原创 2019-10-04 11:44:30 · 169 阅读 · 0 评论 -
P1044 栈 卡特兰数/记忆化搜索
传送门先鸽一下 学了新东西再来补题在这里插入代码片原创 2019-10-04 14:24:49 · 173 阅读 · 0 评论 -
P1130 红牌 dp
传送门思路:这个题跟数字三角很像,但它是’横着‘走的,这样会导致数据更新不及时,不能完成准确的记忆化搜索,所以我们可以先对矩阵做一下处理,然后再dp./*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-05-09.33.20* Talk is cheap.Show...原创 2019-10-05 11:18:18 · 172 阅读 · 0 评论 -
P2719 搞笑世界杯 dp+思维
传送门题意:给出n张票,让求最后两个人买到相同票的概率,题目中a和b买票的概率是相同的,在一开始,用i,j分别表示剩余的票数。dp[i][j]为当前的概率。状态转移方程为dp[i][j]=0.5*(dp[i-1][j]+dp[i][j-1])(dp[i-1][j]表示此时队首选了a,dp[i][j-1]表示此时队首选了b,因为是相同概率的事件,所以要乘0.5).思路:推出状态转移方程即可,...原创 2019-10-05 20:48:00 · 231 阅读 · 0 评论 -
背包问题 多重背包二进制之我见。
大佬讲解我再说一下我对二进制以下的理解。Q:所谓将num拆分成k个二进制数,那么为什么这些二进制数可以表示1~num的任意一个数?A:同拆分成num个01背包一样,它的原理是由num个1,每一个代表一个物体,用这些物体来表示num个物体的情况。那拆分成k个二进制数不也同样的意思这k个二进制数通过组合一样能表示1~num的每一数。那么就不会漏掉任何一种情况了。模板代码#include &l...原创 2019-10-06 17:54:59 · 111 阅读 · 0 评论 -
poj1742 coins多重背包二进制优化+位运算
传送门题意:给你几种硬币 以及 每种的个数 让你求能组合出几组m以内的数。思路:多重背包模板,这里要转化成完全背包和01背包,同时使用位运算,因为只是判断个数,判断的是dp中的i是否存在,所以dp[i]设置成bool类型即可,同时使用位运算|判断能否组合。#include <iostream>#include <cstring>#include <cstd...原创 2019-10-06 18:28:16 · 204 阅读 · 0 评论 -
P1802 5倍经验日 01背包变形
传送门思路:把这个看作01背包的变形,题目中有一个坑,你可以不花任何代价直接认输,这样就可以获得最大收获。 for(int j=m;j>=0;j--){ if(j>=u[i])///有药剂存在两种选择 dp[j]=max(dp[j]+l[i],dp[j-u[i]]+w[i]); else dp[j]+=l[i];///没有药剂就直接...原创 2019-10-03 22:41:40 · 183 阅读 · 0 评论 -
P1734 最大约数和 01背包变形
传送门思路:01背包变形题。将i看成重量,i的因子看成价值即可。背包自然是s./*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-03-19.54.50* Talk is cheap.Show me your code.*/#include<iostre...原创 2019-10-03 20:06:41 · 172 阅读 · 0 评论 -
F - Three displays dp+思维
传送门题意:寻找满足和最小的sum c。思路:一开始暴力超时,知道肯定不能暴力了。想了想可以DP做。时间复杂度就降到了O(n^2/2)。DP化解成3个子问题,先找一个中间的值,然后找它的两边。一边找s小于它的 最小的c 和一边找s大于它的 最小的c./*** From:* Qingdao Agricultural University* Created by Xiangwa...原创 2019-09-29 18:23:23 · 196 阅读 · 0 评论 -
蒜头君爬楼梯2 dp递推
思路:因为可以跳跃任意奇数阶,所以我们可以遍历奇数阶的情况。类似于将多种情况的递归全都遍历。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer * Date : 2019-09-29-20.58.45* Talk is cheap.Show me your code. */#include&...原创 2019-09-29 21:13:53 · 798 阅读 · 0 评论 -
洛谷 P1060 开心的金明 01背包问题 dp
传送门一维背包优化dp[j]=max(dp[j],dp[j-v[i]]+w[i]);//判断是放还是不放。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-09-29-22.19.46* Talk is cheap.Show me your code.*/#in...原创 2019-09-29 22:49:17 · 192 阅读 · 0 评论 -
P1048 采药 01背包问题
传送门思路:01背包模板题。大佬题解:传送门/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-09-30-22.18.56* Talk is cheap.Show me your code.*/#include<iostream>#include&...原创 2019-09-30 22:52:12 · 170 阅读 · 0 评论 -
P1091 合唱队形 动态规划 + 单调队列(最长上升序列,下降序列)
传送门思路:根据题意,一:我们可以转化题意为最多留多少同学。二.然后分别求最长上升序列和下降序列。三.最后相加取最大值即可。(因为上升和下降会相交一个点,所以要减去1,并且,根据题意,至少会有一名同学,则,每种上升或下降初始为1)./*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date...原创 2019-10-01 15:32:19 · 444 阅读 · 2 评论 -
Dawn-K's water The Preliminary Contest for ICPC Asia Shenyang 2019 C 完全背包+枚举
传送门题意:现在有多个公斤类型的水和相对应的价值供你选择,问你选择不小于m价值水的最小花费。思路:因为可以无限选水,所以想到了完全背包,但最后不会求对应的价值,数据1e4,所以直接枚举[m,1e4]这个区间,找出花费最小的价值,所获得的最小斤重。一开始要先预处理所有无限大,而后dp[0]=0(被这个坑死)。/*** From:* Qingdao Agricultural Universi...原创 2019-10-01 17:29:58 · 159 阅读 · 0 评论 -
P3009 [USACO11JAN]利润Profits 求最大子段和 dp
传送门思路:看数据1e5肯定不能暴力。dp求解,先预处理每个dp[i]=w[i],之后线性扫一遍,每次取最大即可。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-01-18.17.12* Talk is cheap.Show me your code.*/...原创 2019-10-01 19:48:40 · 176 阅读 · 0 评论 -
P1359 租用游艇 dfs/dp/floyd/dijk/spfa DAG(有向无环图)
传送门思路:dfs剪一下枝,竟然能过。当前的大于最小值,88. if(sum>minnn) return ;/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-02-15.18.22* Talk is cheap.Show me yo...原创 2019-10-02 17:23:41 · 227 阅读 · 0 评论 -
P1910 L国的战斗之间谍& P1507 NASA的食物计划 二维01背包
传送门状态转移方程dp[j][k]=max(dp[j][k],dp[j-b][k-c]+w);思路:这是一个二维01背包,即不止一个背包,但原理和一维一样。/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-10-03-16.12.20* Talk is cheap....原创 2019-10-03 16:40:21 · 164 阅读 · 0 评论 -
P2347 砝码称重 思维dp
传送门思路:1.我们assum 数组dp[i]为是否能测出重量i.因为dp[0]不用测也可以得出,则dp[0]=1.2.用num来记录砝码的个数。3.根据题目中给的数据范围,用1001作为最大上限,遍历每种情况。下面这组数据的意思为 for(int j=1001;j>=0;j--)//到0是为了不忽略任何可能存在的重量。 if(dp[j]) dp[j+a...原创 2019-10-03 17:21:10 · 211 阅读 · 0 评论 -
AT360 雨上がり 动态规划
思路:我们用dp[i]来表示第i个元素存走到i时最少经过的水坑数。dp[i]明显可以从 i-1 i-2 i-3得来。那么我们肯定要走跨过水坑数最小的那一条PATH,所以我们每次可以从这3条路径中找出最小的一条路径+判断当前的目的地是否有水坑。核心代码for(int i = 4; i <= n; i++) dp[i] = dp[i]+min(min(dp[i - 3],...原创 2019-10-03 18:46:53 · 164 阅读 · 0 评论 -
动态规划(DP)学习
初步了解状态转移方程–寻找最后一步的前一步题目代码/*** From:* Qingdao Agricultural University* Created by XiangwangAcmer* Date : 2019-09-29-16.05.12* Talk is cheap.Show me your code.*/#include<iostream>#in...原创 2019-09-29 17:25:02 · 173 阅读 · 0 评论