DP
ljq真的不能再吃了
珍惜每一天
展开
-
【2019牛客暑期多校第一场E ABBA】 dp
牛客多校第一场E题意就是让你构造 (n+m)*2 长度的字符串 使得有 n 个 子序列为 AB m个 子序列为BA问你有多种方案首先我们思考一个问题 就是如果构造 n 个AB 贪心的取前n个为A 我们看这样一个问题 假如你前 n 个A不都拿来当 AB 那么有一个是构造BA 那么你取第n个之后的A也能构造成BA 所以这样贪是对的也就是 A的个数一定是小于等于 当前 B 的个数 + n那么 ...原创 2019-07-19 23:20:07 · 222 阅读 · 0 评论 -
【CCPC-Wannafly Winter Camp Day4 (Div2, onsite)】 G 置置置换
置置置换题意 给你 n−1n - 1n−1长度的由>>>和<<<组成的序列第偶数个括号是<<<代表 第i−1i-1i−1个数字比iii个数字大奇数个和>>>同理要满足 1 - n的全排列所以我们设 dp[i][j] 代表 满足 1 - i 全排列 第 i...原创 2019-05-01 13:30:28 · 126 阅读 · 0 评论 -
【Atcoder dp_T Permutation】
Atc dp_t题意 给你 n−1n - 1n−1长度的由>>>和<<<组成的序列第iii个括号是<<<代表 第iii个数字比i+1i+1i+1个数字小>>>同理要满足 1 - n的全排列所以我们设 dp[i][j] 代表 满足 1 - i 全排列 第 ...原创 2019-05-01 13:25:57 · 727 阅读 · 2 评论 -
【Atcoder dp_r Walk】
Atc dp_r题意 给你一个 n∗nn*nn∗n的矩阵如果 i,ji, ji,j是1代表 这点可以到达问你两点间走k步能到的方案数我们首先确定一个状态 起点等于终点 那么就是单位矩阵E 了走一步 是不是就是把单位矩阵乘 上这个系数矩阵走几步就相当于乘几次 最后只要统计 矩阵和就行了矩阵快速幂真是个好东西Ps(有大佬叫他倍增floyd/* if you can't see...原创 2019-05-01 00:02:27 · 284 阅读 · 0 评论 -
【BZOJ 1037 [ZJOI2008]生日聚会Party】 dp
BZOJ 1037题意 给你n 个男生 m 个女生 然后对一个排队序列 满足期中任意连续的人组成的序列中 男生都不比女生多超过k个 女生都不比男生多超过 k个一开始 二维dp[i][j] 代表组成了 i 长度的队伍 有 j 个男生 那么女生就是 i - j但是有个问题 因为这个状态无法向后面传递所以要设思维dp[i][j][x][y] i 长度的队伍 有 j 个男生 然后后缀中男生比女生多...原创 2019-05-13 21:07:47 · 123 阅读 · 0 评论 -
【Atcoder S Digit Sum】
Atc S题意 给你 一个 n 问小于等于 n 的数的 各数字之和 能整除 D 的个数数位dp 统计一下/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include <cstdio>#include <c...原创 2019-04-30 22:06:10 · 379 阅读 · 0 评论 -
【Atcoder dp_Q Flowers】
Atc dp_q给你hhh数组和sss数组问你hhh数组一直上升的序列中sss数组最大的和是多少我们容易根据求LISLISLIS的思想先列出DpDpDp方程式/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include &l...原创 2019-04-30 20:47:48 · 390 阅读 · 0 评论 -
【Atcoder dp P Independent Set】 dp
Atc P题意 给你一棵树 两个相邻的点都不能一起涂上黑色问你有多少种涂的方案很想一道题 没有上司的舞会我们只要树形dp 统计白色的时候 * (子儿子白色 + 子儿子黑色) , 统计黑色的时候 * (子儿子白色)就可以输出答案了/* if you can't see the repay Why not just work step by step rubbish...原创 2019-04-30 20:16:23 · 359 阅读 · 0 评论 -
【Atcoder O Matching】
Atc O题意 n 个男生和 n 个女生匹配方案数要往状压考虑dp[i][mask]表示枚举到第i 个男士,女士选择的情况为j 的方案数枚举i−1这个人选的是j 必须保证mask 包含j且i-1与j有边然后就可以相加然后我们发现不需要枚举i因为mask 中包含的1的个数就是i 的值/* if you can't see the repay Why not just ...原创 2019-04-30 12:20:21 · 708 阅读 · 0 评论 -
【Atcoder M Candies】Dp
Atcoder M题意 给你n个人 然后每个人都有个吃糖上线问把 K 个糖分给 n 个人的方案数我们首先容易得到转移方程 dp[i][j] 代表到第 i 个人为止 吃了 j 颗糖的方案数那么容易想到O(nkk)的转移方程 int L = j + 1; int R = j + min(k-j,up_to); for(in...原创 2019-04-29 21:14:33 · 798 阅读 · 0 评论 -
【Atcoder DP_L Deque】Dp
Atc dp_l题意 给你一个序列一个人先拿 另一个人后拿 只能从序列的开头或者结尾拿一个元素先拿的分数是 X 后拿的人分数是 Y他们都想要自己的分数差最大 也就是第一个人是 X - Y最大第二个人是 Y - X最多我们发现对这类dp 只有dp[l][r] 代表区间 l 到 区间 r 的最大 X - Y只有当L = R的时候 才能确定取的是arr[l],arr[R]如果不等于 就从...原创 2019-04-29 20:15:48 · 680 阅读 · 0 评论 -
【BZOJ 2288: 【POJ Challenge】生日礼物】最大M字段和
BZOJ 2288其实这题题意和HDU 1024我觉得是一样的所以改了一下1024的代码 可能数据小了就过了就是求做大M子段和#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=1e6+5;int n,m;long long ar...原创 2019-04-24 01:39:52 · 172 阅读 · 0 评论 -
【BZOJ 4008 [HNOI2015]亚瑟王】
BZOJ4008中文题意 大佬们耐心看下做法 第一次看这种dp真的无从下手 于是翻开了题解先把期望转换成求概率原来这种轮次的dp 有一维状态还可以是轮次dp[i][j]dp[i][j]dp[i][j]代表iii这张牌在第jjj轮的概率那么很显然你这jjj轮取的话 i−1i-1i−1肯定是从j+1j+1j+1轮过来(否则你不能到jjj轮)那么概率就是 dp[i−1][j+1]∗(1−...原创 2019-04-19 10:30:17 · 213 阅读 · 0 评论 -
【51nod2484 小b和排序】dp
51nod2484题意 给你两个数组 a 和 b问你交换最少多少次可以使得 a b 都严格递增保证有解想一下这个代码里的dp状态吧一开始第二个if前面加个else 死活过不去 其实不能加/* if you can't see the repay Why not just work step by step rubbish is relaxed to lj...原创 2019-05-02 20:17:46 · 183 阅读 · 0 评论 -
【ZOJ 3640 Help Me Escape】概率dp
ZOJ3640题意 有个人啊 他有初始的攻击力fff 总共有nnn个怪物 每个怪物呢都有c[i]c[i]c[i],t[i]t[i]t[i]其中t[i]t[i]t[i] = (1+sqrt(5))/2∗c[i]∗c[i](1+sqrt(5))/2*c[i]*c[i](1+sqrt(5))/2∗c[i]∗c[i] 他每天随机挑选一个怪物来Pk 如果这个人打得过怪物呢 他会花t[i]t[i]t[i]...原创 2019-04-18 20:50:47 · 149 阅读 · 0 评论 -
【SGU 495 Kids and Prizes】
SGU 495题意 一共有n个礼物 m个人来取 取完礼物的人会把空盒子放在原位置 问m个人取完后他们获得的礼物期望是多少我们设dp[i]dp[i]dp[i]表示第iii个人取得礼物的概率那么dp[1]=1dp[1]=1dp[1]=1 我们对dp[i]dp[i]dp[i]分析 他这次没取到礼物的概率和dp[i−1]dp[i-1]dp[i−1]相同 所以概率为1−dp[i−1]1-dp[i-1]...原创 2019-04-18 20:06:41 · 99 阅读 · 0 评论 -
【SPOJ Favorite Dice】概率dp
SPOJ Favorite Dice题意 有一个n面的骰子 问你所有面都扔到的期望次数是多少这道题应该是自己的第一道期望dp我们首先定义 dp[i]dp[i]dp[i]代表现在已经扔到iii种面了 还差多少次数到n面那么我们知道 dp[n] = 0 因为已经有nnn种面了然后我们考虑 他有 i/ni/ni/n的概率扔到自己已经包含的(dp[i]+1*in)\left( dp\left...原创 2019-04-18 18:56:12 · 122 阅读 · 0 评论 -
【Atcoder K - Stones】dp
Atc K意思是有 n 个石块 每个石块有 a[i]个东西 然后你初始体积是 K从First 先选 谁不能从当前的块里继续选 谁就输了输出赢的人我们知道 设dp[k][t]代表当前有k个石头 t代表人 true则赢 false则输那么dp[k][t] |= !dp[k-arr[i]][!t] 因为如果另一个人 k-arr[i] 必输 那么你只要取 arr[i] 让他达到这个状态 你就必赢...原创 2019-04-23 10:01:57 · 824 阅读 · 0 评论 -
【BZOJ 1677 [Usaco2005 Jan]Sumsets 求和】dp
BZOJ 1677题意 用二进制填补钱问 n个钱被凑出来的方案数 从小到大 凑简单递推先枚举钱数 再枚举凑的钱数/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include <cstdio>#include ...原创 2019-05-13 22:41:21 · 141 阅读 · 0 评论 -
【HDU 6083 度度熊的午饭时光】 01背包 + 记录路径
HDU 608301背包是好求的这个记录路径怎么弄呢我们开一个path数组代表第 i 个物品能到花费 j 的状态这样i 从 大 到小满足第一个 path[i][j] 为 1 的 i 一定是可行的因为我们从小到大更新path[i][j] 最后一个肯定是最优的/* if you can't see the repay Why not just work step by st...原创 2019-05-13 23:36:42 · 242 阅读 · 0 评论 -
【Codeforces 1183 H. Subsequences (hard version)】dp
cf570Hcf579E题的升级版 k是1e12 所以必须用dpdp[i][j] 代表到 i 删除了 j个字符的种类数那么 dp[i][j] = dp[i-1][j-1]+dp[i-1][j]但是如果 aba 你删除 ba 和之前删除 ab 的情况是一样的所以我们要把之前的情况回溯 利用一个pre 数组回溯删除为了不爆边界 如果dp值大于k dp值等于k/* if you c...原创 2019-07-13 18:02:06 · 303 阅读 · 0 评论 -
【Codeforces Round #565 (Div. 3) F Destroy it!】dp
F题意 就是一个人有 n 回合 每回合不能超过 3 代价的花费 问你能造成多少点伤害第十个回合是双倍攻击那么我们就意识到了这个很像dp 而且跟卡牌轮次有关系所以我们定义dp[n][10] 代表第 n 轮 当前是第几张牌次我们发现代价为 3 总共只有 6 种花费1 花费打一张 tmp[1]2 花费打一张 tmp[2]3 花费打一张 tmp[3]1 + 1 2花费打 2 张 tmp[...原创 2019-06-10 10:32:25 · 344 阅读 · 0 评论 -
【BZOJ 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富】基础dp
BZOJ 1668给你一个n*m的物品然后你每次只能向右上角 右边 右下角走问你到终点最多能收集的和我们知道实际上就是按照他走列 所以我们优先循环列 否则会出现更新错误这题就可以做了/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq...原创 2019-05-11 01:12:44 · 145 阅读 · 0 评论 -
【HDU 1712 ACboy needs your help】分组背包
hdu1712分组背包裸题分组背包就是改变枚举循环的位置 是每个体积枚举一个物品这样能保证每个体积都是由取1个 / 2个 / 3个 / 4个…取过来的注意从 0 开始代表不取的情况/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/...原创 2019-05-15 21:28:41 · 100 阅读 · 0 评论 -
【bailian4122 切割回文】dp
bailian4122题意 就是切最少刀使得切出来的串都是回文串我们设置dp[i] 代表 1 - i 表示的字符串切成回文串的代价那么一个串如果本身就是回文串 那么代价就是 0否则最坏代价是 len - 1 切成 len 个独块于是我们枚举 1 - i 每个位置 j 切一刀只要后面的 j + 1 到 i 是回文串那么这刀就是可行的 dp[i] = min(dp[i],dp[j]+1)...原创 2019-05-15 21:17:15 · 251 阅读 · 0 评论 -
【bailian4102 】宠物小精灵之收服
bailian4102这是二维背包裸题吧最后统计了一下最小的代价获得ans 那么M-代价就是我们花费的体积/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include <cstdio>#include <c...原创 2019-05-15 20:32:56 · 165 阅读 · 0 评论 -
【BZOJ 1296 [SCOI2009]粉刷匠】dp
BZOJ 1296题意 容易想到分组背包那步但是dp那步我又想槽了看一下代码吧 上面是处理每一行的dp值下面是处理分组背包值/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include <cstdio>#in...原创 2019-05-15 20:20:35 · 100 阅读 · 0 评论 -
【BZOJ 2748 [HAOI2012]音量调节】dp
BZOJ 2748哇 跟有一个gym一道题一模一样可惜gym那题读沙雕了中文题意就是用dp[55][1025]代表第几首歌可达的状态/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include <cstdio>...原创 2019-05-15 19:28:15 · 129 阅读 · 0 评论 -
【BZOJ 2287 【POJ Challenge】消失之物】背包
BZOJ 2287就是问 n 个物品 如果不用 i 个物品 凑出体积为 j 的方案数 %10时间是10s 所以当然可以写个 O(200020002000)愉快的 2000个 0 1 背包check啦/* if you can't see the repay Why not just work step by step rubbish is relaxed to...原创 2019-05-15 19:16:46 · 109 阅读 · 0 评论 -
【Codeforces 417 A Elimination】背包
cf417A题意真的有点绕就是说 选 1 个人 出 d 个题选 n 个人 出 c 个题然后你需要知道 nm - k,到 nm 的最小代价 有题出到这区域所以我们只需要跑一个完全背包即可/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq...原创 2019-05-15 18:44:50 · 166 阅读 · 0 评论 -
【Codeforces 607 B. Zuma】
CF607B容易看出是区间dp dp[l][r]代表 l 到 r 长度的最小代价就是需要特判长度为 2不然如果arr[l] == arr[r] dp[l][r] 可以直接由dp[l+1][r-1]转移过来然后再枚举左右两部分枚举最小就行/* if you can't see the repay Why not just work step by step rubb...原创 2019-05-08 08:12:09 · 144 阅读 · 0 评论 -
【Codeforces 2B. The least round way】dp
Cf2B给你nn数字 你从左下角走到右下角数值为所有经过数乘积 你只能向左边或者右边走问你最少后导 0我们知道 0 是 25出现 所以我们统计一个最少的 2 和最少的 5但是如果本身有 0 需要特判/* if you can't see the repay Why not just work step by step rubbish is relaxed ...原创 2019-05-08 05:32:19 · 131 阅读 · 0 评论 -
【POJ 3093 Margaritas on the River Walk 】01背包
POJ 3093题意就是问这几个东西凑起来 不能剩空间买其他东西 又组合起来的代价小于V我们可以排个序 枚举第 i 个作为剩下的的物品中最小的东西 那么前面 i - 1 都是已经在背包里的那么就是枚举 i = 1 的时候 统计一个 [2,n]的背包枚举 i = 2 的时候 统计一个 [3,n]的背包…这样复杂度是 O(nnm)如何降复杂度呢我们发现 如果你反过来dp那么就是枚举...原创 2019-05-14 21:23:37 · 132 阅读 · 0 评论 -
【BZOJ 1708: [Usaco2007 Oct]Money奶牛的硬币 】 完全背包
BZOJ 1708凑硬币问题 希望过几天学了母函数用母函数再补一下就是最典型的完全背包了dp[j] 从 dp[j-v[i]]这个状态推过来所以可以 +=/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include <...原创 2019-05-14 20:04:52 · 157 阅读 · 0 评论 -
【POJ 2392 Space Elevator 】 多重背包
POJ 2392这个和多重背包的区别就是还有个高度限制那么你按照高度从小到大排序 然后让所有可以到达的状态是由之前状态推出来优先用小高度限制的块去堆然后输出答案即可/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#includ...原创 2019-05-14 19:58:57 · 159 阅读 · 0 评论 -
【vijos 1059 积木城堡 】背包
vijos 1059题意 就是问 n 个背包都能组成的体积那么用 dp[i][v] 代表第 i 个背包能组成的体积然后 O(10000*100)地去check 就行/* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq*/#include...原创 2019-05-14 18:38:50 · 150 阅读 · 0 评论 -
【hdu 6082 度度熊与邪恶大魔王 】 完全背包
hdu 6082这道题一拿过来 对一个熊直接跑完全背包 然后跑 100000 次 完美TLE其实因为对一个熊跑的时候 下次熊还是会跑的于是需要对所有的熊直接完全背包预处理设 dp[i][j] 代表 消灭护甲为 i 血量为 j 的怪兽的最小代价那么只要O(n) 遍历这些怪兽是否能被消灭即可/* if you can't see the repay Why not just...原创 2019-05-14 18:22:20 · 163 阅读 · 0 评论 -
【Atcoder DP I Coins】
Atc I题意 给你n个硬币 每个硬币都有一个翻正面的概率问你n个硬币 正面次数比反面次数多的概率有多少因为有2999个硬币 最多有2999个 正/反面 那么我们加个校正值然后让dp[i][j]的意思代表到第 i 个硬币 正硬币次数 - 反硬币次数 + 校正值的几率是多大那么 dp[i][j] += dp[i-1][j-1](arr[i]),dp[i][j] += dp[i-1][j+1...原创 2019-04-18 11:56:45 · 244 阅读 · 0 评论 -
【Codeforces 1155D】 Beautiful Array
CF1155D题意 给你n个数字的数组 然后还有一个 x你可以选择一段区间乘上 x输出最大子段和这道题做的时候一直在往贪心想真的是脑子太笨了实验室其他大佬都是拿dp过的本着笨鸟先飞的思想赶紧学了过来dp[300025][3]其中第二维代表了三个状态 0 就是不操作乘法1 操作乘法2 操作乘法结束以后然后我们只要不断取 ans = max(dp[i][0],max(dp[i]...原创 2019-04-23 01:21:34 · 333 阅读 · 0 评论 -
【Atcoder Dp G Longest Path】拓扑排序 + dp
Atc G这题拿来自己很蠢先是统计所有点的入度 然后按入度排序 然后跑1500次 简单dp但是WA了大概7/22个点太久没写拓扑了(拓扑不经常用这题其实就是按照DAG拓扑 已经给你了dp转移的顺序然后我们在拓扑排序的基础上进行dp转移/* if you can't see the repay Why not just work step by step rub...原创 2019-04-18 10:09:55 · 543 阅读 · 0 评论