![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
———DP———
Hacheylight
ZJ OIer
展开
-
NOIP 2017 逛公园 (最短路+dp)
题意:求出 从 111 到 nnn 的路径长度小于等于最短路 +k+k+k 的路径个数分析:首先观察数据特点30%30\%30% 的数据 k=0k=0k=0 且没有 000 边,等同于最短路计数70%70\%70% 的数据没有 000 边,那么就是相当于没有 000 环100%100\%100% 的数据 k≤50k \le 50k≤50首先考虑第一档:显然就是一个最短路径计数,是一...原创 2019-03-10 17:38:48 · 269 阅读 · 0 评论 -
Ralph and Mushrooms (tarjan+dp)
一个综合性的题目,还不错原创 2019-02-14 19:28:41 · 252 阅读 · 3 评论 -
动态规划模型总结之状压dp
啊怎么前面的都没写就直接状压了啊状压比较简单先讲状压(其实比较向深搜的优化)可能蓝书上的例题偏难先将一些简单的不会位运算就gg了吧1.问题引入为什么需要状压dp状压dp可以解决一些题目的状态随阶段增长而增长的题目,比如一个量用了还是没用等等,把状态压缩成数字存入数组然后进行dp啊听着好抽象啊那我们搞一个例题看看状压dp入门题:玉米田简化后的题目意思是有一块矩阵,可以取一些1,但...原创 2019-01-14 12:07:02 · 216 阅读 · 0 评论 -
Atcoder Educational DP Contest 题解 + 总结
待补原创 2019-01-07 12:16:13 · 5510 阅读 · 6 评论 -
CF1097D Makoto and a Blackboard 题解
题意就是给一个数,每次可以把它替换成为它的一个因数,问替换k次后期望的数为多少一看就不会做,只好先从简单的开始着手如果一个数为质数,肯定非常好处理,有12k\frac{1}{2^k}2k1种可能为原数,其余都为1如果一个数的分解质因数形式为x=p1e1x=p_1^{e_1}x=p1e1怎么搞?很容易想出dpdpdpdp[i][j]dp[i][j]dp[i][j]表示做了iii次操作...原创 2019-01-05 20:44:32 · 552 阅读 · 0 评论 -
CF101B Buses dp+数据结构优化
题意:有一个人要从0到n,其间有m趟公交车,这个人可以从si−>ti−1s_i->t_i-1si−>ti−1的位置上车,必须在tit_iti下车。他想问有多少种方法(% 109+7\% \ 10^9+7% 109+7)解法:很明显要离散,怎么离散就不讲了。车也要按照终点排序很容易发现这是一道dp题,并且想出dp状态dp[i]表示...原创 2018-12-01 19:13:28 · 269 阅读 · 0 评论 -
题解 CF735C 【Tennis Championship】
思路:不要只往人数上想,可以往场数上想:赢 1 把: 至少要 2 个人。2把:至少要 3个人。3把:至少为 至少2把的人数+至少1把的人数。4把:至少为 至少3把的+至少2把的(因为比赛次数差不能超过1)。i 把:f[i-1]+f[i-2];斐波那契数列很大,所以把f[i]全部算出找就行。#include <bits/stdc++.h>using namespace s...原创 2018-11-26 10:25:27 · 205 阅读 · 0 评论 -
【NOIp2016 day1t3】换教室
NOIP第一次考期望,着实吓一跳。。。读入之后,由于n&amp;lt;=200n&amp;lt;=200nfloydfloydfloyd的机会,建完图之后,能够顺利的想到dpdp[i][j][k]dp[i][j][k]dp[i][j][k]表示前iii节课,换了jjj次教室,第i−1i−1i-1节课有没有换教室(k)(k)(k)的期望行走的距离期望友情链接很明显,1、初始的时候,dp[...原创 2018-08-01 18:29:20 · 197 阅读 · 0 评论 -
0x3B 守卫者的挑战 (概率dp)
蛤很明显题目都是叫你去求概率了 /cy这个问题特别像背包于是我们能够列出一个 dpdpdp 状态:dp[i][j][k]dp[i][j][k]dp[i][j][k] 表示前 iii 个回合赢了 jjj 次背包空间还剩下 kkk 的概率显然分成赢了和输了两种情况:赢了: dp[i+1][j+1][k+a[i+1]]+=dp[i][j][k]∗p[i+1]dp[i+1][j+1][k+a[i...原创 2019-02-04 10:41:24 · 250 阅读 · 0 评论 -
Placing Squares (矩阵乘法,dp)
给你一个大小为 mmm 的集合 SSS ,SSS 中不包含 nnn 。现在对于一个正整数序列a1−aka_1−a_ka1−ak,如果不存在 sis_isi 属于集合 SSS 就是合法的,sss 表示 aaa 的前缀和。这样的序列贡献是∏i=1kai2\prod\limits_{i=1}^k{a_i}^2i=1∏kai2,求所有合法序列的贡献和。我们不妨进行一下巧妙的模型转化。有一...原创 2019-02-06 22:24:17 · 185 阅读 · 0 评论 -
Codeforces 152E Garden (状压dp+最短路)
题意:有一个 n∗mn*mn∗m 的花园,每个位置有一定数量的花,有 kkk 个建筑,然后要把这些建筑连通起来,连通就必须要把花园的一些花杀死,铺上道路问最少通过杀死多少花可以使建筑连通乍一看很像最小生成树,但是确发现并不是带权并查集? 好像也不是那怎么维护连通性? 懵逼。。。。我们发现最后建筑连成的路必定是成树形的那么我们只要断掉一条边必定能够使得树变成两半kkk 很小,那么是否...原创 2019-03-03 16:10:43 · 228 阅读 · 0 评论 -
Codeforces 111C Petya and Spiders (状压dp)
一个 n∗mn*mn∗m 的棋盘,一开始每个格子都有一个蜘蛛,你可以对每个蜘蛛向四个方向移动,或者不动;问最多能够有多少个格子没有蜘蛛n∗m&lt;=40n*m&lt;=40n∗m<=40,侧面推导发现 min(n,m)≤6min(n,m) \le 6min(n,m)≤6显然把十字架形的蜘蛛移到一个格子最优在不同的棋盘形态十字架的摆放却不尽相同能否贪心? 好像不行数...原创 2019-03-03 15:41:33 · 218 阅读 · 0 评论 -
HDU 1024 Max Sum Plus Plus (dp)
动态规划的思想。基本思路:首先,定义num[n]num[n]num[n] 用来存储 nnn 个整数组成的序列dp[i][j]dp[i][j]dp[i][j] 用来表示由前 jjj 项得到的含 iii 个字段的最大值,且最后一个字段以 num[j]num[j]num[j] 项结尾。仔细想想,我们可以知道:dp[i][j]=maxt=i−1j−1(dp[i][j−1]+num[j],d...原创 2019-02-26 15:27:53 · 205 阅读 · 0 评论 -
Codeforces 474E Pillars (dp+树状数组)
数据结构优化 dpdpdp 的题目都很套路设 f[i]f[i]f[i] 表示取到 iii 且 iii 必取的最大长度那么显然:f(i)=maxj=1i(f(j))+1(∣hi−hj∣≥d)f(i)=\max\limits_{j=1}^i(f(j))+1 (|h_i-h_j| \ge d)f(i)=j=1maxi(f(j))+1(∣hi−hj∣≥d)直接枚举 O(n2)O(n^2...原创 2019-02-27 20:41:02 · 241 阅读 · 0 评论 -
Bzoj 3688 折线统计(dp+树状数组)
开始以为同样斜率的折线算一条,后来经过大佬提示发现是假的,那就很简单了这是一道比较基础的数据结构优化 dpdpdp 的问题首先按照 xxx 坐标排序首先能够想出 dpdpdp 状态dp[i][j][0/1]dp[i][j][0/1]dp[i][j][0/1] 表示前 iii 个数,选了 jjj 段,当前折线是上升/下降的脑补可得转移方程:f[i][j][0]=∑k=1i−1f[k][j...原创 2019-02-27 19:43:17 · 254 阅读 · 0 评论 -
LG 2110 欢总喊楼记(数位dp)
显然求 LLL 到 RRR 可以转化成前缀和形式设 sum(x)sum(x)sum(x) 代表从 111 到 xxx 合法的数有多少个。那么结果就是sum(R)−sum(L−1)sum(R)-sum(L-1)sum(R)−sum(L−1)。那么怎么求 sum(x)sum(x)sum(x) 呢?当 xxx 为 111 位数时 sum(x)=x(x&amp;lt;=9)sum(x)=x(x&a...原创 2019-02-21 21:07:19 · 195 阅读 · 0 评论 -
0x38 扑克牌 (期望dp)
补锅原创 2019-02-09 13:10:21 · 580 阅读 · 0 评论 -
Codeforces 1110D Jongmah (dp)
没有摘要原创 2019-02-08 21:11:50 · 630 阅读 · 0 评论 -
Solitaire (dp)
睡了原创 2019-02-06 22:43:44 · 291 阅读 · 0 评论 -
8月9日数据结构考试 解析
A. 黑桃城得分:100分解析:这题挺水的吧,直接把dfs之后的序列映射到线段树的一段区间维护即可反正我40分钟就A了,自认为还是挺简单的。这题好像也是比赛中AC人数最多的,。。。还有就是注意不要用不同步的cin,小心TLE然后 我好像找到了原题 CF077E Danil and a Part-time Job除输入外一模一样。。。#include&amp;amp;lt;i...原创 2018-08-09 18:43:08 · 197 阅读 · 0 评论 -
8月9日考试 解析
A. 黑桃城得分:100分解析:这题挺水的吧,直接把dfs之后的序列映射到线段树的一段区间维护即可反正我40分钟就A了,自认为还是挺简单的。这题好像也是比赛中AC人数最多的,。。。还有就是注意不要用不同步的cin,小心TLE然后 我好像找到了原题 CF077E Danil and a Part-time Job除输入外一模一样。。。#include&lt;i...原创 2018-08-09 18:43:05 · 254 阅读 · 0 评论 -
ZOJ 2699 Police Cities(Codeforces Gym - 100211D) SCC+DP HQG_AC的博客
dp[i][j]=∑k&amp;amp;amp;amp;lt;jk=0dp[i−1][k]∗c[x][j−k]dp[i][j]=∑k=0k&amp;amp;amp;amp;lt;jdp[i−1][k]∗c[x][j−k]dp[i][j] = \sum_{k = 0}^{k &amp;amp;amp;lt; j} dp[i-1][k]*c[x][j-k]原创 2018-07-17 17:33:08 · 250 阅读 · 0 评论 -
CF505C Mr. Kitayuta, the Treasure Hunter(DP) HQG_AC
CF505C Mr. Kitayuta, the Treasure Hunter 题意:在一个有n个点的岛屿上,有n个点有宝藏。现在给你一个d。开始你在0第一步,你将跳到d处之后你可以选择跳c-1,c,c+1步(c为你上一步跳的步数)每跳到某处可获得该地宝藏询问最大宝藏数这个题当Div.1 A,现场跪了不少人,各种大佬,神犇解析:很明显是个DPDp[...原创 2018-07-11 13:59:43 · 235 阅读 · 0 评论 -
PossibleOrders TopCoder - 1643 hqg_ac
并查集维护,类似第二类斯特林数DP[i][j]DP[i][j]DP[i][j]表示i个元素构成j个集合的方案数dp[i][j]=(dp[i−1][j]+d[i−1][j−1])∗jdp[i][j]=(dp[i−1][j]+d[i−1][j−1])∗jdp[i][j]=(dp[i-1][j]+d[i-1][j-1])*j #include <bits/stdc++.h>...原创 2018-07-16 12:47:20 · 170 阅读 · 0 评论 -
DesertWind TopCoder - 1570 DP+搜索 hqg_ac
DesertWindDesertWindDesertWind TopCoderTopCoderTopCoder −−- 157015701570题意:有一张地图,”_”表示沙漠,”@”表示起点,”X”表示障碍物,”*”表示终点(终点可能有多个)当你准备往一个格子进发时,你会知道当天的风向。如果你逆风走要3天,不逆风1天。现在问你在最坏情况下最少要走多少天 TcTcTc的题的题面...原创 2018-07-16 12:41:50 · 240 阅读 · 0 评论 -
RowGame TopCoder - 10664 DP+图论 hqg_ac
RowGameRowGameRowGame TopCoderTopCoderTopCoder −−- 106641066410664题意是在一段区间中,跳k步,向跳之后必须向右跳,每一步从a[i]a[i]a[i]跳到a[j]a[j]a[j]时会获得a[i]+...+a[j]a[i]+...+a[j]a[i]+...+a[j]的能量,跳的过程中不得出现任何时刻<0,求MAXMAXM...原创 2018-07-16 12:23:47 · 372 阅读 · 0 评论 -
洛谷Luogu-2583 地铁间谍 (DP) HQG_AC的博客
这个题不知道为什么就是 提高+/省选- 的题,感觉相对比较水,数据也小,搜索也能A吧,这里讲dp做法首先定义状态,就是时间和地点,用f[i][j]表示在i时,j车站的最少等待时间转移方式最多有三种:1、从上一秒转移 f[i][j]=min(f[i][j],f[i-1][j]);2、有属于 M1 的车到站了 f[i][j]=min(f[i][j],f[i- 上一站到这一站的时间 ][j-1]);3、...原创 2018-02-22 09:44:48 · 230 阅读 · 0 评论 -
HDU - 3555 bomb(数位DP) HQG_AC的博客
http://acm.hdu.edu.cn/showproblem.php?pid=3555https://vjudge.net/problem/HDU-3555题意就是求在1~n内含有49的数的个数dp[i][j][(k)0/1]表示长度为i,首字母为j,1表示存在49的情况,0表示不存在49的情况 1.先把dp数组搞定 1°i=1,k=0 ,dp=1 ; 2° for 枚举位数 f...原创 2018-01-13 14:05:38 · 203 阅读 · 0 评论 -
洛谷-2380 狗哥采矿 HQG_AC的博客
解法:DP+前缀和优化题意:有一个n*m的矿田,西边有一个a(yeyenum)矿收集站,北边有b(bloggium)矿收集站,问最多收集多少矿f[i,j]表示以(i,j)为右下角的矩形内还未开采,其余部分最大能采到的矿的总量f[i,j]要么安装向左的yeyenum矿,要么安装向上的bloggium矿,建一条管道可以将一条路上所有的点全部取走,于是转移方程:f[i,j]=max{f[i-1,j]+a...原创 2018-02-20 11:44:35 · 321 阅读 · 0 评论 -
洛谷Luogu-2733 家的范围 Home on the Range(详) HQG_AC的博客
简单DP,复杂度O(n^2)1.先读入字符串,转化成数组2.DP: dp[i][j]表示以(i,j)为右下角的最大正方形边长 转移方程:dp[i][j]=min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1 边DP的时候边记录每个边长的矩阵个数具体请见代码:#include <bits/stdc++.h>#define ...原创 2018-02-20 09:29:15 · 235 阅读 · 0 评论 -
HDU-3001 Travelling(状态压缩DP,3进制) HQG_AC的博客
题意:一个人从任何一地开始旅游(1~n个城市),每个城市可以去2次,但不能更多。他想要问你他能花费最少的钱,每个地方都去到。解题思路:由于TSP问题是每个地方走一遍,这里是走两边,于是思考用3进制。我们构造一个dp[s][i]表示走过的状态为s,现在刚走过的是i的点的最小代价。步骤给大家详解一下:1.处理出一个数组(代码中的b),用来记录每个s中1~n个经过了几次,方便后面转移不用重复算2.读入d...原创 2018-02-04 19:53:50 · 194 阅读 · 0 评论 -
7月23日考试 爆炸记 + 题解
考试PDFA.移动杠铃原创 2018-07-24 10:58:54 · 510 阅读 · 0 评论 -
Tian Ji -- The Horse Racing(POJ,HDU,ZOJ,luogu...) HQG_AC的博客
我非常怀疑 这和 bipartitebipartitebipartite matchingmatching matching 有什么关系。。。首先理所应当的,排序,建议降序之后从后往前枚举ififif 田忌最慢马&amp;gt;ing′sing′sing's 则+200+200+200elseelseelse if(&amp;lt;)−200if(&amp;lt;)−200 if (ififif 田忌...原创 2018-07-12 13:15:00 · 143 阅读 · 0 评论 -
7.27日比赛 总结+题解
小T的GCD分数:10 预期分数:80~90(由于机子比较快,预期会高几分)题意 求GCD(al,al+1...,ar)==1GCD(al,al+1...,ar)==1GCD(a_l,a_{l+1}...,a_r)==1 的 max(r−l+1)max(r−l+1)max(r-l+1)求LCM(al,al+1...,ar)==∏rk=lakLCM(al,al+1...,ar)==∏...原创 2018-07-27 20:04:04 · 143 阅读 · 0 评论 -
CF327E Axis Walking HQG的博客
给一个序列,可以任意重排,但是前缀和不能出现给定数字中的数,问有几种排列方式n<=24,这样的数量级不是搜索就是状压。明显这道题目是状压。dp[i]表示选的状态为i的方案数这题主要练习通过lowbit优化的dp#include <bits/stdc++.h>using namespace std ;const int p = 1e9+7;const int ...原创 2018-08-04 15:45:13 · 255 阅读 · 0 评论 -
Corn Fields 玉米田 HQG
这题是状压dp的模板题。至于状压是什么,自己上网查吧,我在这里不多说。预处理:1.f[i]f[i]f[i]表示第iii行的玉米田可行方案;ok[i]ok[i]ok[i]表示iii状态是否是可行解。判断方法:与i<<1i<<1ii>>1i>>1i>>1 &后 均为0,证明脑补一下就可以了。之后状压dpdp[i][j]...原创 2018-08-04 13:30:38 · 160 阅读 · 0 评论 -
Map Generator POJ - 3557 DP+概率
给你n个点,生成这条边的概率位P,判断联通的概率是多少?设连通块的大小为k,成功的概率不好枚举,但可以枚举不成功的概率设F[n]=1−G[n],G[n]F[n]=1−G[n],G[n]F[n]=1-G[n],G[n]表示成功的概率G[i]+=c[i−1][j−1]∗F[j]∗pow(1−p,double(j∗(i−j)))G[i]+=c[i−1][j−1]∗F[j]∗pow(1−p,d...原创 2018-07-21 16:15:34 · 183 阅读 · 0 评论 -
Codeforces 95E Lucky Country 并查集+dp+二进制优化
Codeforces 95E Lucky Country如果一个数中不包含除4和7之外的数字则是幸运数。有n个岛屿,通过双向道路连接。这些岛屿被分为几个地区。每个岛属于恰好一个区域,同一区域中的任何两个岛之间存在道路,不同区域的任何两个岛之间没有路径。如果一个地区的岛屿数量是一个幸运数字,则这个地区是幸运的。问最少增加几条道路能创建一个幸运地区。解析:可以通过SCC处理...原创 2018-07-21 15:58:27 · 255 阅读 · 0 评论 -
Atcoder 2556 Simple Knapsack
这个题目就是翻版的背包,物品的体积大了不少,但是每个物品体积的浮动不大如果背包都不会 ,请先AC此题考虑新的DP转移方程根据 “每个物品体积的浮动不大” 这一条规定,可以想出方程dp[i][j][k]dp[i][j][k]dp[i][j][k]表示前iii个物品,选了jjj个,与a[0]∗ja[0]∗ja[0]*j共有kkk的差距dp[i+1][j][k]=max(dp[i+1...原创 2018-07-21 15:36:01 · 306 阅读 · 0 评论 -
Damn Couples ZOJ - 3161 (DP或贪心)
题意就是有一个酒吧,有一些人。老板手中有一个8g条,上面标注的a和b有8g。现在老板按照一定顺序说出这m对8g,如果a和b相邻,则必有一个人走。老板希望走的人越少,顾客希望走的人越多,求这个值题解:我们模拟1 2 3 4 5 6 7在(1,2)爆,相对好的方法一定是2 在(2,3)爆,相对好的方法一定是3于是乎,隔三个爆一个,答案n−1n−1n-1−−-n−1...原创 2018-07-21 12:26:06 · 281 阅读 · 0 评论