![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 87
Elliott__
这个作者很懒,什么都没留下…
展开
-
【DP】ICPC Pacific Northwest Regional Contest 2019 - F - Carny Magician
题目链接https://www.jisuanke.com/contest/8291?view=challenges题意询问长度为 nnn ,满足 mmm 个下标与数值匹配的,字典序第k小的排序。题解大概也就写了一万个 dpdpdp 吧。c[i][j]c[i][j]c[i][j] 表示 iii 个位置挑出 jjj 个的方案数,也就是组合数。fac[i]fac[i]fac[i] 表示 ...原创 2020-05-04 19:38:51 · 636 阅读 · 0 评论 -
【概率DP】Gym - 101174 - D - Dinner Bet
题目链接http://codeforces.com/gym/101174题意NNN 个球标号为 111 到 NNN,两个人分别写下 CCC 个数字,每次随机选出 DDD 个球,若干次后,如果某个人写的 CCC 个数字都出现过,则游戏结束。问游戏持续回合数的期望。题解概率DP。dp[i][j][k]dp[i][j][k]dp[i][j][k] 的状态表示两个人的公共数字有 kkk 个还没...原创 2020-03-29 20:11:55 · 307 阅读 · 0 评论 -
【概率DP】Gym - 102470 - D - Darts
题目链接http://codeforces.com/gym/102470/problem/DD - Darts题意AAA 和 BBB 两个人比赛射飞镖,规则如下:两个人轮流射飞镖,初始分数都为NNN,假设射中区域 xxx,如果 x≤Nx\le Nx≤N,分数减去 xxx;否则分数保持不变。第一个把分数清零的玩家获胜。AAA 每次随便射飞镖,所以他射到每个区域的概率都相等。BBB 有...原创 2020-02-13 18:42:40 · 305 阅读 · 0 评论 -
【KMP+DP】Codeforces - 1163 - D.Mysterious Code
题目链接http://codeforces.com/problemset/problem/1163/D题意:给出一个字符串s由小写字母和星号组成,字符串a和b仅由小写字母组成。其中星号可变成任意一个字符,问字符串a在s中出现的次数与b出现的次数之差最大是多少。题解:dp[i][j][k]dp[i][j][k]dp[i][j][k]表示第i位,匹配了字符串a j位,字符串b k位的答案...原创 2019-05-14 14:56:53 · 281 阅读 · 0 评论 -
【DP优化】HDU - 627 - Circular Coloring
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6279题意:给出n个白点,m个黑点,连成一个环。一个环的价值是所有相邻且颜色相同的长度的乘积。问所有环价值的和题解:dp[i][j][2]dp[i][j][2]dp[i][j][2]表示第一维的点有iii个,第二维有jjj个,与开头是否相同的,链的权值和。默认第一维是开头。转移方程应该是:d...原创 2019-05-06 20:35:24 · 149 阅读 · 0 评论 -
【DP】Codeforces - 1154 F. Shovels Shop
题目链接<http://codeforces.com/problemset/problem/1154/F>题意:商场有n个商品,要买k个。有m种折扣方式,每种都是买x个商品,最便宜的y个免费。每种折扣都可以无限次数使用,问最少花费。题解:看错题,想了好久,每种折扣是可以无限次数使用的。首先折扣顺序是不一定的,所以不能简单背包了事。但可以预处理出买x个商品...原创 2019-04-24 13:28:52 · 124 阅读 · 0 评论 -
【矩阵快速幂】Codeforces - 1151 - F. Sonya and Informatics
题目链接<http://codeforces.com/contest/1151/problem/F>题意:给出一串长度位n的01数列,每次随机选两个数字交换,问k次后形成非递减数列的期望是多少。2≤n≤100,1≤k≤1e9题解:很明显,就是要把所有的1都放在后面,设dp[i][j]表示第i次操作,有j个1在后面,则有以下几个转移:dp[i][j]由dp[i-1...原创 2019-04-23 13:42:14 · 609 阅读 · 0 评论 -
【树形DP】2278 - Deblo
题目链接<http://10.7.88.2/CLanguage/showproblem?problem_id=2278>题意:一棵树上,每个点都有一个权值。定义一条路的权值为所有点的异或和,问所有路径的权值和为多少。题解:定义dp[n][i][2]为在点n的这棵子树上,以点n为端点第i位上异或的值是0或1的链数。递归深度1e5,会卡栈空间....最后改成了非递归的d...原创 2019-03-23 19:27:45 · 104 阅读 · 0 评论 -
【01分数规划+01背包】Talent Show
题目链接<http://10.7.88.2/CLanguage/showproblem?problem_id=2268>题意:给出n头奶牛的重量w和才艺值t,要求挑出若干只牛,使得大于等于w,且最大。题解:01分数规划:设,则,如果,证明偏小,否则偏大。这样就可以二分答案了。判断的时候用01背包来判断能否挑出一些体重之和大于等于的奶牛,且。这时候的背包就只要枚举...原创 2019-03-13 16:07:03 · 241 阅读 · 0 评论 -
【树形DP】Codeforces - 1187 - E. Tree Painting
【题目链接】http://codeforces.com/contest/1187/problem/E题意给出一棵树,树上每个节点初始都是白色。一开始任意选择一个点染成黑色,然后每次选择一个与黑点相邻的白点染色。每次染色会获得一个值,这个值为包含所选点的白色连通块的大小。题解假设第一个点确定,那就是个树形dp,dp方程是:dp[u]=∑dp[v]+size[u]dp[u]=\sum{...原创 2019-07-14 20:24:29 · 893 阅读 · 0 评论 -
【动态规划+想法】HDU - 3562 - Interesting Tour
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3562题意一开始有三个节点两两相连。然后新加一个节点与已存在的两个节点a,b相连。其中a和b本身已经相连。问最后形成的图的简单环最大是多少。题解dp[i][j]dp[i][j]dp[i][j]表示iii和jjj之间最多有多少个点。然后就是要反过来更新这个dpdpdp数组。嗯,这是关键。...原创 2019-07-20 20:30:13 · 90 阅读 · 0 评论 -
【LIS + 随机数据】HDU - 6635 - Nonsense Time
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6635题意给出一串数,一开始没有一个数可用。每次选一个数变成可用,问此时的最长上升子序列是多少。题解结论:数字随机的LIS长度期望时n\sqrt{n}n所以反过来做,时间复杂度就是O(nnlog(n))O(n\sqrt{n}log(n))O(nnlog(n))#include<...原创 2019-08-08 20:33:27 · 200 阅读 · 0 评论 -
【树上背包】The 2019 Asia Yinchuan First Round Online Programming?- G - Factories
题目链接https://nanti.jisuanke.com/t/41291题意给出一棵n个节点的树(n<=1e5),在叶子节点上选k个点(k<=100),使得任意点对距离之和最短。题解dp[i][j]dp[i][j]dp[i][j]代表iii这棵子树选jjj个叶子节点的答案,dp[u][x+y]=min(dp[u][x+y],dp[u][x]+dp[v][y]+1ll*...原创 2019-09-02 20:00:37 · 119 阅读 · 0 评论 -
【分数规划 + 树上依赖背包】2016 North American Invitational Programming Contest -D - Programming Team
题目链接https://codeforces.com/gym/251755题意给出一棵树,每个点都有两个权值PPP和SSS,问包含0号点的连通块∑P∑S\frac{\sum{P}}{\sum{S}}∑S∑P最大是多少题解二分答案,判断条件是:∑P∑S>=mid\frac{\sum{P}}{\sum{S}}>=mid∑S∑P>=mid,转化一下变成∑...原创 2019-09-02 21:07:53 · 244 阅读 · 0 评论 -
【树上概率DP】The Preliminary Contest for ICPC Asia Xuzhou 2019 - J - Random Access Iterator
题目链接https://nanti.jisuanke.com/t/41392题意给出一段程序,从根节点出发,每扫描到一个节点,如果有k个子节点,就对子节点做k次随机访问。问其中一个最深节点被访问到的概率是多少。题解dp[u]dp[u]dp[u]代表uuu这个节点的答案,tmptmptmp记录只搜一次能搜到最深节点的概率。那么以uuu为节点,一次都没搜到的概率就是(1−tmp)k(1-t...原创 2019-09-07 19:02:36 · 576 阅读 · 0 评论 -
【矩阵DP + 线段树】The 2019 Asia Nanchang First Round Online Programming Contest - C - Hello 2019
题目链接https://nanti.jisuanke.com/t/41350题意给出一串数字,有Q个询问,每次询问一个区间,问删除最少几个字符使得区间内包含子序列9102但不包含子序列8102。题解首先将整个串倒过来,然后如果不考虑区间,那么一个普通的dpdpdp就行了。dp[i][j]dp[i][j]dp[i][j]表示第iii位数字,当前匹配了2019的第jjj位。转移方程分六种...原创 2019-09-09 16:04:08 · 218 阅读 · 0 评论 -
【状压DP】Educational Codeforces Round 74 (Rated for Div. 2) - E. Keyboard Purchase
题目链接https://codeforces.com/contest/1238/problem/E题意给出一个由m个小写字母组成的长度为n的字符串(m<=20,n<=1e5),另外对这m个字符构造出一个序列,序列内两两字符的坐标差值是两个字符的距离,问从左到右走字符串的每一个字符,距离最小是多少。题解状压dp[s]dp[s]dp[s]代表已经确定了状态为sss的字符放在最左...原创 2019-10-09 14:41:15 · 211 阅读 · 0 评论 -
【数位DP】HDU - 4507 - 吉哥系列故事——恨7不成妻
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=4507>题意:求出区间内,满足数位不包含7,数位之和不是7的倍数,本身不是7的步数的所有数字的平方和。题解:条件是很好满足的,复杂的是求平方和,我们先不求平方和,先考虑求所有数字的一次之和的解法。对于任何一个数,我们把最高位拆出来,比如123拆成100+23,5764拆成...原创 2019-03-21 12:19:04 · 125 阅读 · 0 评论 -
【记忆优化搜索/dp】HDU - 6415 - 杭电多校第九场 - Rikka with Nash Equilibrium
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=6415>题意:在一个矩阵中,如果某一个数字是该行该列的最大值,则这个数满足纳什均衡。要求构造一个n*m的矩阵,里面填的数字各不相同且范围是【1,m*n】,问有多少种构造方案。The first line contains a single integert(1≤t≤...原创 2018-08-20 19:05:08 · 1089 阅读 · 5 评论 -
【LIS+最大流】LOJ - #6005. 最长递增子序列
题目链接<https://loj.ac/problem/6005>题意:给定正整数序列x1∼xn ,以下递增子序列均为非严格递增。计算其最长递增子序列的长度s。 计算从给定的序列中最多可取出多少个长度为s 的递增子序列。 如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列。题解:第一问直接秒掉,写成upperboun...原创 2018-10-18 20:18:20 · 209 阅读 · 0 评论 -
G 小国的复仇 西安电子科技大学第16届程序设计竞赛网络同步赛
题目链接<https://www.nowcoder.com/acm/contest/107/G>题解:dp[i]表示有i个小国时的步数。扫描所有的j(是i的因子)更新数组:dp[i]=dp[j]+(i/2-j)/(j-2)+1,化简为dp[i]=dp[j]+i/j-1。#include <bits/stdc++.h>typedef long long LL;using ...原创 2018-04-24 18:11:52 · 175 阅读 · 0 评论 -
HDU 2546 饭卡 贪心+01背包
题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=2546>题解:直接五块钱买最贵的,剩下的进行01背包。如果卡里的钱开始就少于五元,就直接输出。#include <iostream>#include <cstdio>#include <string.h>#include <algorithm&...原创 2018-05-20 10:54:23 · 145 阅读 · 0 评论 -
Tsinghua Online Judge 背包问题2
题目链接<https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=2147>背包问题2描述n个物品,每个物品有一个体积v和价值w。现在你要回答,把一个物品丢弃后,剩下的物品装进一个大小为V的背包里能得到的最大价值是多少。输入输入的第一行包含一个正整数n(n ≤ 5000)。接下来n行,每行包含两个正整数v和w(v,w ≤ 5000),分别表...原创 2018-05-29 21:08:20 · 865 阅读 · 0 评论 -
【状压dp】2018 ACM-ICPC 南京网络赛 - E - AC Challenge
题目链接<https://nanti.jisuanke.com/t/30994>题意:有n (0 < n <= 20)道题目。可以按照一定的顺序完成一部分题目,每完成一道题目就获得a[i]*t+b[i]的价值,t是完成的第几道题目。且如果要做一道题,要满足一定的要求(做了其他几道题)。问使得价值最大时多少。题解:n的范围很小,就可以想到状压。预处理出做每...原创 2018-09-01 21:07:44 · 197 阅读 · 0 评论 -
数位dp合集
HDU - 3652 - B-number题目链接<http://acm.hdu.edu.cn/showproblem.php?pid=3652>题意:输出1~n中包含“13”且能被13整除的个数。(1 <= n <= 1000000000)题解:数位dp的关键就是状态的选取。这道题的“13”是否被包含很好处理。要保证被13整除只需再添加一维记录余数...原创 2018-09-04 16:06:14 · 301 阅读 · 0 评论 -
区间dp合集
POJ - 2955 - Brackets题目链接<http://poj.org/problem?id=2955>题意:给出一个含有中小括号的字符串,问你有多少个子序列是合法的。题解:注意是题目要求是子序列,所以区间dp好做。如果,那么转移方程可以为然后再转移出一个最小值即可。#include<iostream>#include<c...原创 2018-09-06 16:09:52 · 294 阅读 · 0 评论 -
【dp】ACM-ICPC 2018 徐州赛区网络预赛 - A - Hard to prepare
题目链接<https://nanti.jisuanke.com/t/31453>题意:一共有0~种面具,n个人围成一圈,每个人带一个面具。要求相邻两人的同或不能为0。问有几种情况。题解:表示与第一个人相同,表示与第一个人非法,表示与第一个人无关。转移一下就可以出结果。#include<bits/stdc++.h>using namespa...原创 2018-09-09 19:51:43 · 189 阅读 · 0 评论 -
【dp】ACM-ICPC 2018 焦作赛区网络预赛 - B - Mathematical Curse
题目链接<https://nanti.jisuanke.com/t/31711>题意:有n个数,m个加减乘除的运算符。按顺序取出m个数,进行对应的运算符操作。给你一个初始值,问能构成的最大结果是多少。题解:考虑只有加减这两种运算符的情况,那么可以想到一个n*m的做法。设一个dp[i][j]数组表示对第i个数字做操作,且已经做了j次的操作。dp[i][j]一定是从...原创 2018-09-15 18:33:07 · 388 阅读 · 0 评论 -
【多重背包+二进制优化】ACM-ICPC 2018 焦作赛区网络预赛 - K. Transport Ship
题目链接<https://nanti.jisuanke.com/t/31720>题意:给出若干个船,每个船都有的容量,和的数量。有Q次询问,给出一定体积的货物,问你恰好装满的方案数量。题解:很明显的多重背包,但是要加上二进制优化。所谓二进制优化就是把数量拆成2^0,2^1,2^2,2^3.....2^(k-1) , c-2^k+1,使得算法复杂度降为log级别。...原创 2018-09-15 22:11:08 · 182 阅读 · 0 评论 -
【树形DP+DFS】Gym 100962J - Jimi Hendrix
题目链接<https://cn.vjudge.net/problem/360051/origin>题意:给出一个树,树上边的权值是字母。询问一个字符串,问能否在路上找到一条简单路径使它的子序列包含该字符串。输出任意的简单路径的两个端点即可。题解:如果一个节点,它的一个子树能够从左到右匹配到第ll个字符,另外一个子树能从右往左匹配到第rr个字符,而且ll+1>=rr...原创 2018-10-13 20:24:59 · 198 阅读 · 0 评论 -
【DP】ZOJ - 4027 - Sequence Swapping
题目链接<https://cn.vjudge.net/problem/ZOJ-4027>题意: 有一串小括号组成的字符串,每个括号都有一定的价值。如果把某一个左括号与它右边相邻的右括号交换,可以获得两者价值的乘积。问价值最高能获得多少。题解:对于每一个左括号,它都可以跟它后面的右括号进行交换。假设第个左括号要跟第个右括号进行交换,那么这第个右括号必须提上来,即与之间的所...原创 2018-09-28 21:01:40 · 216 阅读 · 0 评论 -
【状压DP】GYM - 101908 - F. Music Festival
题目链接<http://codeforces.com/gym/101908/problem/F>题意:有N个舞台,每个舞台会表演一些节目,每个节目都会有一定的价值。选择一些节目进行观看,要求每个舞台都要至少看了一个节目且两个节目的时间段不能相交,问价值最大是多少。1≤N≤10,节目数量≤1000,1≤时间≤86400题解:舞台数量为10,很明显要用到状压dp。然后可...原创 2018-10-31 12:41:48 · 257 阅读 · 0 评论 -
【区间DP】2017 ACM-ICPC北京赛区 - J - Pangu and Stones
题目链接<http://hihocoder.com/contest/icpcbeijing2017/problem/10>题意:石子归并,每次能归并[l,r]堆石子,每一次的归并代价是所有要合并的石子数之和,问最小的代价是多少。题解:开一个数组dp[i][j][k]表示i~j的石子合并为k堆的代价,然后把k>=2与k==1分开进行转移,还是比较巧妙的:dp[i...原创 2018-10-24 20:58:17 · 277 阅读 · 0 评论 -
【DP】Codeforces - 1067A - Array Without Local Maximums
题目链接<https://cn.vjudge.net/problem/1983591/origin>题意:有一个长度为N的序列(2≤n≤1e5)满足关系:a1≤a2,an≤an−1,ai≤max(ai−1,ai+1)。每一个ai的范围是[1,200],有一些ai是确定的,有一些是不确定的,问有多少种情况。答案对998244353取模。题解:从头到尾扫一遍,枚举每...原创 2018-11-07 13:08:43 · 264 阅读 · 0 评论 -
【贪心+DP】Redistricting
题目链接<http://10.7.88.2/CLanguage/showproblem?problem_id=2245>题意:给你一段由‘H’和‘G’组成的字符串,要把这个字符串分成若干段,每段的长度最大是k。如果某一段内G的数量大于等于H的数量,那么这一段就要被计数,问计数最少是多少。题解:贪心+DP,这个贪心能够很巧妙的用优先队列解决。dp[i]表示第i位的答案...原创 2019-03-05 10:33:28 · 173 阅读 · 0 评论 -
【离散+二维前缀和】Gym - 101991D - Dull Chocolates
题目链接<https://cn.vjudge.net/problem/2049045/origin>题意:在一个N*M的棋盘中,有K个白子,其他的都是黑子。问有多少个前缀和矩阵包含奇数个白子,多少个包含偶数个白子。(1≤N,M≤1e9,1≤K≤1e3).题解:一开始直接想到用单调栈维护合法矩阵,n^2的做法。对于奇数和偶数分两种情况,非常麻烦。可是如果直接离散做...原创 2018-11-24 20:00:04 · 289 阅读 · 0 评论 -
E Xieldy And His Password 西安电子科技大学第16届程序设计竞赛网络同步赛
题目链接<https://www.nowcoder.com/acm/contest/107/E>题解:设立二维dp[i][j]表明以i为结尾,%3为j的个数,从头到尾扫描一遍进行更新。#include <bits/stdc++.h>typedef long long LL;using namespace std;int dp[1000005][3];int main...原创 2018-04-24 16:03:08 · 176 阅读 · 0 评论