![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
Han Gang
这个作者很懒,什么都没留下…
展开
-
J - Junior Mathematician(数位DP)
链接:https://codeforces.com/gym/102452/problem/J题意:给你L,R,m,问 x ≡ f ( x ) ( mod m )满足这个公式的有多少个数。L原创 2020-12-08 16:26:52 · 434 阅读 · 0 评论 -
ZJOI2007-棋盘制作(悬线法)
题目链接:https://ac.nowcoder.com/acm/problem/20471题意:给你一个矩形,0,1,表示不同颜色。让你从中找出最大的正方形和矩形的区域满足相邻的格子颜色不相同。思路:悬线法。悬线法是很常用的来解决最大子矩形问题的动态规划算法。首先,讲一下思想:我们先可以找到每个格子mp(i,j)mp(i,j)mp(i,j)可以满足要求的最左边L(i,j)L(i,j)L(i,j)和最右边R(i,j)R(i,j)R(i,j)位置。一个矩形是由四边构成的,现在我们已经找到了三边,还有上原创 2020-12-02 14:52:10 · 106 阅读 · 0 评论 -
Windy 数(数位DP)
Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?输入:一行两个数,分别为 A,B;输出一个整数,表示答案;#include<algorithm>#include<string.h>#include<iostream>#include<stdio.h>#include<string&g原创 2020-10-24 10:45:45 · 275 阅读 · 0 评论 -
Bomb(数位DP板题)
题目链接:BombProblem DescriptionThe counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the time bomb. The number sequence of the time bomb counts from 1 to N. If the current number sequence includes the sub-sequence “49原创 2020-09-29 20:52:23 · 403 阅读 · 0 评论 -
The Battle of Chibi(树状数组优化DP)
题目链接:https://vjudge.net/contest/390155#problem/M题目大意:给你一个长度为n的数组,问你这个数组中有多少种长度为m的递增序列,输出种类数。思路:这道题的状态转移方程很好想,我们用dp[i][j]dp[i][j]dp[i][j]表示以第jjj位的数结尾,递增序列长度为iii的种类数。那么转移方程就可以写成:dp[i][j]=dp[i][j]+dp[i−1][k],(a[k]<a[j])dp[i][j]=dp[i][j]+dp[i-1][k],(原创 2020-09-17 10:23:49 · 163 阅读 · 1 评论 -
完全背包的for循环互换问题
今天做题的时候发现了一个问题,废话不多说,先上题目链接:F. Shovels Shop先说一下题意:商店有卖n个铁锹,你要取买k把回去(多一把,少一把都不行),然后有m原创 2020-08-19 23:35:30 · 412 阅读 · 1 评论 -
Codeforces Round #662 (Div. 2) D.Rarity and New Dress
题目链接:https://codeforces.com/contest/1393/problem/D题意:给你一个n*m的由字母组成的矩阵,,问你这个矩阵中有多少个“相同字母组成的菱形”,菱形规则看图更好理解比赛的时候一直想着以中心点dp,因为中心点的菱形数量等于它上下左右菱形最大值加1(前提是它上下左右和它本身字符相同)。但是这个状态好像没办法转移,没有办法维护四周的dp值,所以比赛最后还是以失败告终。。。。早上看到一个大佬的解法,恍然大悟,因为这个图形的特点,我们可以以最下的那个点来进行dp,原创 2020-08-08 10:50:22 · 349 阅读 · 0 评论 -
2020牛客多校第六场——H-Harmony Pairs(数位dp)
链接:https://ac.nowcoder.com/acm/contest/5671/H题意:定义了一个运算S(),S(A)表示A这个数的所有位数上的数之和。然后给了一个很大的数(n<=10100),让我们找,A<B,并且S(A)>S(B)S(A)>S(B)S(A)>S(B)的个数。思路:这题用数位dp还是很明显的。我们定义dp[105][2000][2][2]:分别表示当前第几位,S(A)−S(B)S(A)-S(B)S(A)−S(B),B当前是否为上限,A当前是原创 2020-08-03 10:18:26 · 229 阅读 · 3 评论 -
CF294B Shaass and Bookshelf
链接:https://www.luogu.com.cn/problem/CF294B题意:给你n本书,让你做一个书架,每一本书都有一个厚度ti和一个宽度wi,所有书的高度固定,每本书可以竖着放和横着放,前提是横着放的书的总宽度不能超过竖着放的书的总厚度。问你要放下这些书的书架的最小长度是多少。上个图理解一下,就这样放。思路:一道01背包dp[j]表示把厚度总和为j的书放在了上面(也就是横放)其余厚度为sum-j的书放在下面(也就是竖放)的最小横着的长度。状态转移就很明显了,最后的结果就是原创 2020-07-17 11:50:22 · 317 阅读 · 2 评论 -
背包相关
1.01背包最基本的背包问题,思想就是每个物品放与不放,每次有两种选择,dp递推得到背包容量为m的可获得到的价值最大。因为是每层递推下来得到,所以DP可以优化为一维,只不过要第二个for要V–>Ci,因为每个商品只能取一次,不存在同一行叠加情况,若是正序,则就表示每个商品可以取无限次。2.完全背包和01背包原理相同,只不过这里的每个物品可以取无限次数。要注意和01背包的区别。3.多重背包就是每个物品可以取有限k次数(不一定是1次),我们可以他们都转化为01背包,但是很多题都会卡时间原创 2020-07-16 15:50:01 · 129 阅读 · 0 评论 -
I - EXTENDED LIGHTS OUT
题目传送门:I - EXTENDED LIGHTS OUT 样例20 1 1 0 1 01 0 0 1 1 10 0 1 0 0 11 0 0 1 0 10 1 1 1 0 00 0 1 0 1 01 0 1 0 1 10 0 1 0 1 11 0 1 1 0 00 1 0 1 0 0样例输出:PUZZLE #11 0 1 0 0 11 1 0 1 0 10 0 1...原创 2020-04-09 11:11:29 · 193 阅读 · 0 评论 -
Ministry
传送门:1029. MinistryTime limit: 1.0 secondMemory limit: 64 MB题目Mr. F. wants to get a document be signed by a minister. A minister signs a document only if it is approved by his ministry. The ministr...原创 2020-04-06 17:54:43 · 227 阅读 · 0 评论 -
HDU-4529 郑厂长系列故事——N骑士问题(状压dp)
题目链接:HDU-4529Sample Input21*...........*..........*.....*....*...........*..*.........*....2*...........*..........*.....*....*...........*..*.........*....Sample Output561409...原创 2020-03-25 14:52:56 · 180 阅读 · 0 评论 -
过河(离散,dp)
#include<stdio.h>#include<stdlib.h>#include<algorithm>#include<string.h>using namespace std;int dp[2000];int v[2000];int a[205];int main(){ int l,s,t,m; scanf(...原创 2020-03-22 21:12:07 · 218 阅读 · 0 评论 -
POJ-1185 炮兵阵地(状压dp)
题目链接:http://poj.org/problem?id=1185炮兵阵地Time Limit: 2000MSMemory Limit: 65536KTotal Submissions: 37531Accepted: 14352Description司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N *M的地图由N行M列组成,地图的每一格可能是山...原创 2020-03-20 11:05:46 · 159 阅读 · 0 评论 -
方格取数(1)(状压dp入门题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565题意:给你N*N的方格中取数,但不能取相邻的数,(上下左右相邻都不行),求可以取的数之和的最大值。思路:一道状压dp入门题,因为给的n并不大,我们用一个n位二进制数来表示这一行的n个数取与不取的状态,因为一行之间相邻的不能取,所有我们可以把不符合的数全部筛选除去(i&i>>...原创 2020-03-19 16:20:57 · 315 阅读 · 0 评论 -
C.Garland(DP)
题目链接:C. Garland题意给你了一个序列,包含n个数,这个序列是由1~n数字构成,但是题目给你的这个序列并不完整,让你去补完整,那些输入的值为0的位置的就是让你去填数字,然后问你怎么填,这个序列的奇偶值最小。(一个序列的奇偶值大小就是这个序列的奇数和偶数的遇见次数,例如1,4,2,3,5奇偶值就是2,因为只有1,4和2,3两处奇数和偶数相遇)。思路开了一个四维的dp,dp[i][...原创 2020-01-20 15:05:37 · 522 阅读 · 3 评论 -
动态规划之数位dp
数位dp之所以叫数位dp,是因为它在记数上经行dp操作,但数位dp是很暴力的,但是比一般的纯暴力快的多,因为它有记忆化的操作。这篇数位dp文章还是很好的:数位dp总结 之 从入门到模板关于数位dp的题,通常会给你一个数,然后给你一些要求,让你求从1~n中符合要求的数有多少个。比如这道:HDU 2089 不要62题意就是给你两个数l,r。然后让你求l到r的区间里既没有出现4,也没有出现...原创 2019-11-14 20:45:38 · 143 阅读 · 1 评论 -
动态规划之区间dp
动态规划(DP):就是把把大问题转化为一个个小问题,然后在众多的小问题中递推得到这个大问题的最佳解(当然,这只是我个人对动态规划的理解,希望有大牛来指导改正),那么区间dp就是在区间之间进行动态规划。那么区间dp的典型例题就是nyoj 15 括号配对nyoj 737 石子合并做区间dp的题的一般步骤:1.首先肯定开一个dp[maxx][maxx]数组,(区间dp一般是二维)dp[i]...原创 2019-11-03 15:37:56 · 154 阅读 · 0 评论 -
codeforces--1238 D. AB-string
题目链接:https://codeforces.com/problemset/problem/1238/D大致题意:给你一个数n,然后给你一个长度为n的字符串,这个字符串是只有A,B两个字母,问你这个字符串的子串(当然本身也是自己的子串)中有多少个回文串(单个字符不算回文串)。思路:本来我是往dp方向想的,考虑他的子串要想构成回文串,那么最小的回文串就只有这四中情况1 AA2 BB...原创 2019-10-15 11:18:58 · 212 阅读 · 0 评论 -
牛客多校第一场——E-ABBA
题目:Bobo has a string of length 2(n + m) which consists of characters A and B. The string also has a fascinating property: it can be decomposed into (n + m) subsequences of length 2, and among the (n ...原创 2019-10-14 21:28:01 · 134 阅读 · 0 评论 -
1028: 摆花
题目链接:http://129.211.20.246/problem.php?id=1028题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i 种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆...原创 2019-05-01 09:01:41 · 133 阅读 · 0 评论