![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
Fiveneves
这个作者很懒,什么都没留下…
展开
-
2020牛客暑期多校训练营(第五场)D.Drop Voicing
D.Drop Voicing题目链接-D.Drop Voicing题目大意给定一个1−n1-n1−n的排列ppp,有两种操作:将倒数第二个数放到开头将第一个数放到最后如果是连续的第一种操作,则只花费1,第二种操作不花费,求最少的花费使得ppp变成一个升序的排列解题思路LISLISLIS连续的操作111我们可以看成是前n−1n-1n−1个元素执行若干个循环移位,而连续的操作222我们可以看成是整个数组执行若干次循环移位因为第二种操作是免费的,所以我们可以把排列ppp看成一个环,原创 2020-07-29 02:38:47 · 129 阅读 · 0 评论 -
2020牛客暑期多校训练营(第三场)E.Two Matchings
E.Two Matchings题目链接-E.Two Matchings题目大意定义序列 ppp,满足如下要求:是长度为nnn的排列满足ppi=i且pi≠ip_{p_i}=i且p_i≠ippi=i且pi=i定义一个字符串的费用为(p=∑n=1Nabs(ai−api))/2(p = \sum\limits_{n=1}^Nabs(a_i-a_{pi}))/2(p=n=1∑Nabs(ai−api))/2,aaa为给出的权值数组现求两个满足上述描述的序列p,qp,qp,q ,同时原创 2020-07-24 22:30:55 · 166 阅读 · 0 评论 -
洛谷 P1091 合唱队形
P1091 合唱队形题目链接-P1091 合唱队形解题思路DPDPDP因为需要保证队形是先升后降的,最少的同学出列即是留下最多的同学,所以我么可以正向(1→n)(1→n)(1→n)和反向(n→1)(n→1)(n→1)分别求一次最长递增子序列,然后再枚举以aia_iai作为最高同学队列中的人数,取最大值即可dp[0][i]表示正向时以第iii个人结尾最长递增子序列,dp[1][i]表示反向时以第iii个人结尾最长递增子序列,那么以aia_iai作为最高同学队列中的人数就为dp[0][i]+原创 2020-07-15 02:21:52 · 266 阅读 · 0 评论 -
洛谷P1439 【模板】最长公共子序列
题目链接-P1439 【模板】最长公共子序列#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3f3f3f;const int dir[4][2]={-1,0,1,0,0,原创 2020-07-11 01:34:23 · 251 阅读 · 0 评论 -
洛谷 P2758 编辑距离
P2758 编辑距离题目链接-P2758 编辑距离解题思路DPDPDPdp[i][j]dp[i][j]dp[i][j]代表AAA的前iii个字符和BBB的前jjj个字符之间的最小编辑距离dp[0][j]=jdp[0][j] = jdp[0][j]=j是将AAA为空时,变换为BBB的最少步数,全都是插入操作,dp[i][0]=idp[i][0] = idp[i][0]=i是将BBB为空时,AAA变换为BBB的最少步数,全都是删除操作当两个字符串都为空串,那么编辑距离为0,当其中一个字符串为空串原创 2020-07-10 01:39:49 · 253 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) B. Orac and Models
B. Orac and Models题目链接-B. Orac and Models题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3f3原创 2020-05-16 16:26:17 · 119 阅读 · 0 评论 -
AtCoder Grand Contest 043 A - Range Flip Find Route
A - Range Flip Find Route题目链接-A - Range Flip Find Route题目大意给你一个矩阵,只能向下或向右走,请你求出从(1,1)(1,1)(1,1)到(h,w)(h,w)(h,w)路径全为白的最少翻转次数解题思路DPDPDP定义一个二维数组dp[h][w],其中dp[i][j]代表到达点(i,j)(i,j)(i,j)时候黑块的最少块数输入时对矩阵进行处理,如果是#(黑块),说明如果经过需要反转,则mp[i][j]=1,否则mp[i][j]=0原创 2020-05-16 01:59:15 · 223 阅读 · 0 评论 -
蓝桥杯试题 历届试题 买不到的数目(第四届蓝桥杯省赛C++A组)
买不到的数目题目链接-买不到的数目资源限制时间限制:1.0s 内存限制:256.0MB问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组...原创 2020-03-21 16:57:24 · 476 阅读 · 0 评论 -
2020 蓝桥杯大学 B 组省赛模拟赛(一)B.结果填空:爬楼梯
B.结果填空:爬楼梯题目链接-爬楼梯题目蒜头君要爬楼梯。楼梯一共有 10 层台阶。因为腿长的限制,每次最多能上 4 层台阶。但是第 5,7 层楼梯坏掉了不能踩。求上楼梯的方案数解题思路dfs,dp都行具体思路见代码答案是72注意:最开始蒜头君是在第0层而不是第一层附上代码代码1: dfs,因为第 5,7 层楼梯坏掉了不能踩且楼梯只有10层,所以递归到x=5或 x=7或x>...原创 2020-03-01 14:42:30 · 3333 阅读 · 0 评论 -
数据结构与算法题目集(中文)7-1 最大子列和问题
7-1 最大子列和问题题目链接-7-1 最大子列和问题输入样例:6-2 11 -4 13 -5 -2输出样例:20解题思路dp入门题第一个数为一个有效序列如果一个数加上上一个有效序列得到的结果比这个数大,那么该数也属于这个有效序列。如果一个数加上上一个有效序列得到的结果比这个数小,那么这个数单独成为一个新的有效序列状态转移方程为dp[i]=max(dp...原创 2020-02-23 15:19:27 · 187 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2 C.算概率
C.算概率题目链接-算概率解题思路比赛的时候没有想到状态转移方程,太菜了概率DP,dp[i][j]表示前i道题做对j道的概率由于i-1时对了j题,所以第i题做错了;由于i-1时对了j-1题,所以第i题对了;所以可得到状态转移方程:dp[i][j] = dp[i-1][j] * p[i] + dp[i-1][j] * (1-p[i])注意取模为负的情况,所以可将(1-p[i])...原创 2020-02-10 17:42:02 · 163 阅读 · 0 评论 -
2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I
A.牛牛的DRB迷宫I题目链接-牛牛的DRB迷宫I解题思路棋盘型DP,从起点(1,1)开始for循环遍历,如果是D就往下累加,如果是R就往右累加,如果是B就同时累加附上代码递推(比赛的时候写了好久,卑微蒟蒻)#include<bits/stdc++.h>using namespace std;const int INF=0x3f3f3f;const int M...原创 2020-02-09 01:07:27 · 125 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2 H.施魔法
H.施魔法题目链接-施魔法解题思路DP,dp[i]表示用掉前 i 个元素的最小代价;先将元素按照能量值从小到大排序因为至少要取k 个,所以前面k−1 个是不能直接取到的,所以 前i−1个的dp值为INF当我们计算第i个元素的时候,它肯定是最大元素,第i-1个元素就不是最大的了,所以维护min{dp[j]−a[j+1]}(j∈[0,i−k])即可,可得到状态转移方程dp[i...原创 2020-02-08 22:58:56 · 144 阅读 · 0 评论 -
2020牛客寒假算法基础集训营1 I.nico和niconiconi
nico和niconiconi题目链接-nico和niconiconi解题思路DP,计dp[i]为前i个字符的最大计分分数附上代码#include<bits/stdc++.h>using namespace std;#define ll long longconst int INF=0x3f3f3f;,const int N=3e5+5;typedef pair...原创 2020-02-06 22:55:04 · 149 阅读 · 0 评论 -
洛谷P1880 [NOI1995]石子合并
P1880 [NOI1995]石子合并题目链接-石子合并(环形)解题思路-区间DP因为是环形,所以可以把环拆成链,也就是将长度扩大2倍;用二维数组dp[l][r],l表示左边的坐标,r表示右边的坐标设dp1[i][j]表示把从i到j的石子合并为一堆的最小得分,dp2[i][j]表示把从i到j的石子合并为一堆的最大得分(i<j)dp过程的循环要先枚举dp区间的长度,再枚举左端...原创 2020-02-03 01:40:10 · 372 阅读 · 0 评论 -
Codeforces Round #610 (Div. 2)B1+B2 K for the Price of One
**B1+B2. K for the Price of One **题目链接-K for the Price of One (Easy Version)题目链接-K for the Price of One (Hard Version)题目大意商店买东西,商店有n个物品,每个物品有自己的价格,商店有个优惠活动.当你买恰好k个东西时可以只为其中最贵的那个付款,或者买一个东西单独付款求有限...原创 2020-02-01 01:22:41 · 244 阅读 · 0 评论 -
Codeforces Round #612 (Div. 1)A. Garland
A. Garland题目链接-Garland题目大意给你1-n个数的乱序排列,有些位置上的数为0(即该位置为空),如何用剩下的数填充这个序列,使得相邻灯泡奇偶对数最小解题思路四维数组线性DP一维:长度二维:奇数的个数三维:偶数的个数四维:奇偶性附上代码#include<bits/stdc++.h>using namespace std;#define ll...原创 2020-02-01 00:10:28 · 1423 阅读 · 0 评论 -
Codeforces Round #605 (Div. 3)D. Remove One Element
D. Remove One Element题目链接-Remove One Element题目大意给你一个长度为n的数组,你最多删除一个元素(也可以不删),求此条件限制下的最长上升子串长度解题思路线性dp用二维数组dp[N][2];不删除数时,思路很简单,状态转移方程为:if(a[i]>a[i−1]) dp[i][0]=dp[i−1][0]+1想要删除一个数,只有在前两个...原创 2020-01-31 22:30:29 · 211 阅读 · 0 评论 -
牛客小白月赛21I love you
I love you题目链接I love you解题思路简单的dp思想,因为大小写不敏感,所以先将字符串中所有的大写字母换成小写字母原创 2020-01-28 00:20:07 · 561 阅读 · 0 评论