
DP - 每日DP
【动态规划】每日DP
DP很重要,从今天开始,每天一道DP,努力,奋斗!
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【每日DP】day14、P2016 战略游戏(树形DP模板)难度⭐⭐⭐
P2016 战略游戏这道题的城堡是一颗树题中有注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。所以定义数组f[i][1/0]f[i][1/0]f[i][1/0]表示的是节点i上放士兵或者不放士兵根据题意,如果当前节点不放置士兵,那么它的子节点必须全部放置士兵,因为要满足士兵可以看到所有的边。所以有 { } { } { } { } { } { } { } { ...原创 2020-04-06 19:00:17 · 323 阅读 · 0 评论 -
【每日DP】day13、P3147 [USACO16OPEN]262144 (区间DP,2048游戏)难度⭐⭐⭐★
P3147 [USACO16OPEN]262144 P想到合并,自然就想到区间dp,一个被合成的数之前是一个区间,并且由两个数比它小 111 的区间合成。可麻烦的是,我们并不知道之前的两个区间长度各是多少。这道题不像一般的区间dp,明确地知道一个区间的答案由哪些区间转移。在这道题,我们只知道要合成ii,就要找到两个紧接着它的两个i−1i-1i−1的区间。既然如此,区间的长度是未知的,那我们...原创 2020-04-01 22:49:01 · 310 阅读 · 0 评论 -
【每日DP】day12、P1063 能量项链(区间DP又一模板,震惊,只需要4行代码?)难度⭐⭐⭐
P1063 能量项链本题(NOIP2006)和石子合并(NOI1999)几乎一模一样 垃圾NOIP抄袭NOI,手动狗头但是还是有细微的区别的,首先你得先能看懂题,石子合并是N堆石子,是i−ki-ki−k和k+1−jk+1-jk+1−j之间的合并,但是本题能量项链,是i,j,k三个相邻的珠子起作用,得分是a[i]∗a[j]∗a[k]a[i]*a[j]*a[k]a[i]∗a[j]∗a[k]三个相邻...原创 2020-03-28 23:53:15 · 455 阅读 · 1 评论 -
【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★
P1005 矩阵取数游戏输入2 31 2 33 4 2输出82说明/提示NOIP 2007 提高第三题。数据范围:60%60\%60% 的数据满足:1≤n,m≤301\le n,m\le 301≤n,m≤30,答案不超过 101610^{16}1016100%100\%100% 的数据满足:1≤n,m≤801\le n,m\le 801≤n,m≤80,0≤ai,j≤10...原创 2020-03-26 20:12:25 · 455 阅读 · 0 评论 -
【每日DP】day 9、P1156 垃圾陷阱(神奇的背包,时间节点处理)难度⭐⭐⭐
P1156 垃圾陷阱每个垃圾只能用一次,典型的01背包。关键是时间的处理ll f[N];题目要中求的是生存的最长时间,所以这里的f[i]是指高度i时生存的最长时间对于每一块垃圾,我们都有两种选择,吃,或者不吃。这里时间的处理类似迷宫DP,对于i,求所有能到达这一高度的时间中取最大值,不用记录时间段,每次加上高度试探一下,如果可以直接逃出去就输出这一块垃圾到来的时间即可。因为数据中没说是否...原创 2020-03-23 23:09:44 · 229 阅读 · 0 评论 -
【每日DP】day 8、P2014 [CTSC1997]选课(树形DP(树形背包)模板)难度⭐⭐⭐
P2014 [CTSC1997]选课题意为选一门课前要看它是否有前提条件:即选了一门主课才能选 “副科”,所以可以用分组背包或者树形背包来做。链式前向星建树。本身这道题的数据是一组森林,但是森林很难一起dfs所以就把所有的树根都以0为根节点建一颗大树,直接链式前向星前序遍历即可。转移方程 f[p][j]f[p][j]f[p][j]是指f[以p为根节点][当前学分剩余]f[以p为根节点][...原创 2020-03-22 22:38:20 · 379 阅读 · 0 评论 -
【每日DP】day7P1064 金明的预算方案 (分组背包,我又悟了)难度⭐⭐★
P1064 金明的预算方案背包其实就是把一个大问题拆分成若干个子问题,把一个要拿东西的动作按照题目要求分成若干个动作,分别枚举(DP其实就是非常的暴力),比较取最大值。比如这道题,背包的物品之间是有依赖的,所以分情况讨论,考虑只放主件放主件和附件一(如果有的话)放主件和附件二放主件和两个附件然后物品都只有一个,所以就是最普通的01背包。其中f[i]f[i]f[i]表示的是在...原创 2020-03-22 18:34:02 · 346 阅读 · 0 评论 -
【每日DP】day6 P1541 乌龟棋(四维DP)难度⭐⭐⭐
P1541 乌龟棋四维DP——四种状态,所以四维DPf[i][j][k][l]f[i][j][k][l]f[i][j][k][l]:表示牌号分别为1,2,3,4,的时候用了i,j,k,l张牌思路详解#include<bits/stdc++.h>#define ls (p<<1)#define rs (p<<1|1)#define mid ((l...原创 2020-03-19 23:04:34 · 212 阅读 · 0 评论 -
【每日DP】day 5、P1095 守望者的逃离(好像悟到了DP的真谛)难度⭐⭐★
P1095 守望者的逃离输入39 200 4输出No197输入36 255 10输出Yes6好像悟到了DP的真谛(doge)动态规划,就是动态地维护当前的状态。本题种状态是距离,用 dp[i]dp[i]dp[i] 存第 iii 秒所走的最大距离.本题种影响状态的因素有三(有三种操作)放魔法,休息和走路。放魔法和休息是一体的。所以先考虑边放魔法闪现边休息的...原创 2020-03-18 22:56:35 · 240 阅读 · 0 评论 -
【每日DP】day4 P1417 烹调方案(奇怪的01背包增加了)难度⭐⭐⭐
P1417 烹调方案每件物品只有一个,很明显是01背包,但是价值的转换方式不同,是要求 ai−t∗bia_i-t*b_iai−t∗bi 尽可能最大。普通的01背包的价值是不变的,而这一道题目中的价值是随着所选物品的顺序有所改变,所以应该按照题意排序,并用 maxn去找最大的答案,因为答案不一定是f[t]f[t]f[t]。还有就是常开longlonglong longlonglong 是...原创 2020-03-17 00:06:48 · 254 阅读 · 0 评论 -
【每日DP】day3 P1387 最大正方形(奇怪的DP增加了 / 二维前缀和)难度⭐⭐★
奇怪的DP增加了这道题,刚看见真是一脸懵逼,看了题解才明白。本题中神奇的转移方程是:f[i][j]=min(min(f[i][j−1],f[i−1][j]),f[i−1][j−1])+1f[i][j]=min(min(f[i][j-1],f[i-1][j]),f[i-1][j-1])+1f[i][j]=min(min(f[i][j−1],f[i−1][j]),f[i−1][j−1])+1...原创 2020-03-16 21:28:02 · 300 阅读 · 0 评论 -
【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★
昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激。P1879 [USACO06NOV]Corn Fields G题目链接输入2 31 1 10 1 0输出9一道简单的状压DP入门题。先看大佬讲解样例这是链接我截下来放到下面了本题我的代码的思路1、先预处理第i行的草地状态init[i]init[i]init[i],压缩为一个整数。2、再预处理第i行不相邻...原创 2020-03-15 21:47:58 · 1451 阅读 · 3 评论 -
【每日DP】day1 P1802 5倍经验日(别样的01背包)难度⭐★
P1802 5倍经验日一道有点意思的01背包,可以帮助理解。好久没写DP了,每天一道DP,从基础学起,正好复习一下。这道题不同之处在于失败了(不拿走这件东西)也会有收益,所以就在正常的倒序一维01背包的基础之上,如果背包容量小于当前的物品的重量,也要加上lose[i]lose[i]lose[i],以及别忘了题中的五倍经验。#include<bits/stdc++.h>usin...原创 2020-03-14 19:50:05 · 295 阅读 · 2 评论