dp
文章平均质量分 71
FKJDASOI
干饭不积极,思想有问题。
展开
-
P1434 [SHOI2002]滑雪题解
【题目链接】link【解题思路】这道题目我们很容易就能够想到搜索的做法,但是如果是裸的搜索显然是过不了的。怎么办呢?我们发现这道题如果用裸的搜索的话,有一些位置我们会重复走很多次,我们可以把从当前位置我们可以给他加上一个记忆化,这样我们接可以愉快的AC了。...原创 2021-12-11 16:50:50 · 625 阅读 · 0 评论 -
P1435 [IOI2000] 回文字串 / [蓝桥杯 2016 省] 密码脱落题解
【题目链接】link【解题思路】这题我们要将一个长度为 nnn 的字符串改成一个回文字符串,最坏情况下我们也只需要插入 nnn 个字符,但是很显然有些字符是不需要我们插入的,那么我们就可以考虑去重。怎么去重呢?我们可以吧这个字符串反过来,和原字符串形成一个对照,求一个最长公共子序列(也就是相同的部分),用字符串的长度减去最长公共子序列的长度(也就是不同的部分),即为问题所求。证明:Ab3bd反过来为db3bA这样子我们就发现其实 b3bb3bb3b 是重复的,我们只要将 ddd 和原创 2021-12-08 17:26:09 · 830 阅读 · 0 评论 -
SSL1653数字游戏题解
【题目描述】【Description】小W发明了一个游戏,他在黑板上写出了一行数字a1,a2,a3,……,an,然后给你M个回合的机会,每会回你可以从中选择一个数字擦去它,接着剩下来的每个数字ai都要递减一个值bi。如此重复m个回合,所有你擦去的数字之和就是你所得的分数。 小W和他的好朋友小Y玩了这个游戏,可是他发现,对于每个给出的a和b序列,小Y的得分总比他高,所以他就很不服气。于是他想让你帮他算算,对于每个a和b序列,可以得到的最大得分是多少。【Input】输入文件的第一行是一个整数n(1&原创 2021-12-04 16:38:18 · 105 阅读 · 0 评论 -
P2439 [SDOI2005]阶梯教室设备利用 And P1868 饥饿的奶牛 题解
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2021-12-04 10:11:58 · 146 阅读 · 0 评论 -
P1352 SSL1607没有上司的晚会题解(链式前向星)
【题目链接】原创 2021-12-03 22:10:51 · 101 阅读 · 0 评论 -
SSL 1633农田个数解题思路
【题目描述】【Description】你的老家在河北农村。过年时,你回老家去拜年。你家有一片NM农田,将其看成一个NM的方格矩阵,有些方格是一片水域。你的农村伯伯听说你是学计算机的,给你出了一道题: 他问你:这片农田总共包含了多少个不存在水域的正方形农田。 两个正方形农田不同必须至少包含下面的两个条件中的一条: 边长不相等 左上角的方格不是同一方格【Input】输入数据第一行为两个由空格分开的正整数N、M(1<=m 第2行到第N+1行每行有M个数字(0或1),描述了这一片农田。原创 2021-12-03 19:54:59 · 78 阅读 · 0 评论 -
SSL 1638 PKU2756拔河比赛题解
【题目描述】【题干】一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,要求两个组的人数相差不能超过1,且两个组内的所有人体重加起来尽可能地接近。【Input】输入数据的第1行是一个n,表示参加拔河比赛的总人数,n<=100,接下来的n行表示第1到第n个人的体重,每个人的体重都是整数(1<=weight<=450)。【Output】输出数据应该包含两个整数:分别是两个组的所有人的体重和,用一个空格隔开。注意如果这两个数不相等,则请把小的放在前面输出原创 2021-12-02 17:31:37 · 550 阅读 · 0 评论 -
P1282 多米诺骨牌题解
【题目链接】P1282【解题思路】这道题我本来是想用贪心,用sort从大到小排序后,减去两张骨牌的差直到最小,结果却发现自己WA了。很显然我的贪心是错误的,于是我后来就用了老师教的 dpdpdp (其实贪心也是可以的)。我们首先把它当作一道判定性的问题来思考发现其实并不难。定义 fi,jf_{i,j}fi,j 代表前 iii 张骨牌能否凑成差为 jjj,当自己辛辛苦苦码好了代码,却发现问题问的是最少步骤。不过也没有太大的关系,我们将判定的是否存在的 truetruetrue 和 falsef原创 2021-11-27 15:04:40 · 361 阅读 · 0 评论 -
P1006 [NOIP2008 提高组] 传纸条题解
【题目链接】P1006【解题思路】与这个一模一样,直接上code。【CODE】#include<iostream>using namespace std;int n,m,p;int x,y,z;long long a[51][51];long long d[51][51][51][51];int main(){ cin>>n>>m; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++)原创 2021-11-27 11:58:59 · 332 阅读 · 0 评论 -
P1004 [NOIP2000 提高组] 方格取数题解
【题目链接】P1004双倍经验【解题思路】这道题它只能向下和向右走,没有后效性,我们考虑用 dpdpdp 来做。它说找两条路,我们其实可以两条路一起进行操作。定义 di,j,k,ld_{i,j,k,l}di,j,k,l 是第一条路走到 (i,j)(i,j)(i,j),第二条路走到 (k,l)(k,l)(k,l) 的最大值,这样我们很轻松就可以推出动态转移方程。di,j,k,l={max(di−1,j,k−1,l,di−1,j,k,l−1,di,j−1,k−1,l,di,j−1,k,l−1)+原创 2021-11-27 10:58:59 · 319 阅读 · 1 评论 -
取数字问题题解
【题目链接】1644【解题思路】【方法一】这道题看着那么小的数据范围就很像是 dfsdfsdfs,我们先考虑用 dfsdfsdfs 来做,可是普通的 dfsdfsdfs 是会超时的,我们考虑剪枝。因为它得到的值可能会有些重复,我们可以用上以前学过的记忆化,把当前位置的值有没有算出过存起来,一次再算出这个值,直接退出。然后我们就可以愉快AC了。【CODE】#include<iostream>using namespace std;const int M=11000;int n,原创 2021-11-27 09:55:04 · 271 阅读 · 0 评论 -
竞赛真理题解
【题目链接】1377【解题思路】用了完全背包的思想,分两组做01.【CODE】#include<iostream>using namespace std;int n,V;int v1,v2,v3,v4;int d[1080010];int main(){ cin>>n>>V; for (int i=1;i<=n;i++) { cin>>v1>>v2>>v3>>v4; for (int原创 2021-11-27 08:23:43 · 494 阅读 · 0 评论 -
P1757 通天之分组背包题解
文章目录【题目链接】【解题思路】【题目链接】洛谷P1757【解题思路】和题目名一样,本题就是一道分组背包的模板题,我来讲一下分组背包。首先,全部的背包都是可以转化成01背包来做的。例如:完全背包102 3 4我们可以将其转化成102 2 2 2 2 3 3 3 4 4来做01背包。但是当背包容量很大时,我们会发现这样子的效率太低了。怎么办呢?我们可以利用二进制优化。例如:1001我们拆的时候可以拆成1001 2 4 8 16 32 37这样我们也可以用这原创 2021-11-27 07:59:08 · 141 阅读 · 0 评论 -
书的复制(normal)题解
书的复制题目描述Description现在要把m本有顺序的书分给k个人复制(抄写),每个人的抄写速度都一样,一本书不允许分给两个或两个以上的人抄写,分给每个人的书,必须是连续的,比如不能把第一、第三、第四本书给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写最多的人用去的时间。Input第一行两个整数,m,k(k<=m<=500)第二行为m个整数,第i个数表示第i本书的页数。Output最短时间Sample Input9 31 2 3原创 2021-11-26 20:58:12 · 231 阅读 · 1 评论 -
SSL2863石子合并 题解
SSL2863石子合并 题解题目描述:有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成一堆的总花费最小(或最大)。分析:我们先把方案数用图画出来方案一代价为10+9+19=38方案二代价为5+11+19=35分析:这是石子归并的简化版本,石子处于一排。由于发现只能是相邻的2堆石子进行归并。我们会发现,贪心算法在此处便失去作用,局部最优解并不能带来整体最优解。因此,不难让我们想到,此题应该采取DP(d原创 2021-08-21 09:35:14 · 150 阅读 · 5 评论 -
P1439 【模板】最长公共子序列 题解
P1439 【模板】最长公共子序列 题解题目传送门分析:如果大家看它是道最长公共子序列的模板题,就直接打个O(n2)O(n^2)O(n2)的模板的最长公共子序列上去,你会发现你的程序愉快地RE了,只拿到了50分RE瞬间50分的CODE:#include<iostream>#include<cstdio>#include<cstring>using namespace std;int d[10001][10001],n,a[10001],b[10001]原创 2021-08-21 09:01:09 · 213 阅读 · 7 评论 -
P1474 [USACO2.3]Money System / [USACO07OCT]Cow Cash G题解
P1474 [USACO2.3]Money System / [USACO07OCT]Cow Cash G题解题目传送门分析:这道题我们看到货币能无限使用就能够像到这是一道完全背包求方案数问题我们先设一个ddd数组,did_idi表示凑成iii的方案数然后我们就只要考虑一个初始化的问题因为他只有凑满了iii才能算一种方案,我们就可以就是将d0d_0d0初始化为1动态转移方程就很容易推出来了did_idi=max(di−w[i]d_{i-w[i]}di−w[i]+1,did_idi原创 2021-08-19 16:34:07 · 181 阅读 · 11 评论 -
SSL1045 01背包题解
SSL1045 01背包题解题目描述:一共有N件物品每件物品有两个属性:重量 : wiw_iwi价值 : pip_ipi现在有一个背包容量为W. 问这个背包最多可以装价值为多少的物品?输入:4 10 //第一个数表示物件个数n,第二个数表示背包重量5 8 //第一个表示物体得量,第二个表示价值,以此类推3 64 72 5输出:19 //最大价值分析:显然这个题可用深度优先方法对每件物品进行枚举(选或不选用0,1控制). 程序简单,但是当n的值很大的时候不能满足时原创 2021-08-19 11:43:51 · 117 阅读 · 3 评论 -
SSL 1459最长上升子序列题解
SSL 1459最长上升子序列(DP经典例题)题目描述:设有整数序列b1,b2,b3,…,bm,若存在下标i1<i2<i3< …<in,且bi1<bi2<bi3< …<bin,则称 b1,b2,b3,…,bm中有长度为n的不下降序列bi1 , bi2 ,bi3 ,…,bin 。求序列b1,b2,b3,…,bm中所有长度(n)最大不下降子序列输入:整数序列。输出:最大长度n和所有长度为n的序列个数输入:103 18 7 14 10 12 23 4原创 2021-08-18 21:25:29 · 113 阅读 · 4 评论