根据题目中规定路径都是单向的,且从编号小的地窖通向编号大的地窖,可以确定本题可以使用动态规划解决。首先思考求解时最后一步会做什么——选择最后一个地窖,挖走其中的地雷。依据此来推出状态转移方程设f[i]表示以i地窖为结束点能挖到的最大地雷数。那么可以写出f[i]=max(f[j]+a[i])条件是j小 ...
分类:
编程语言 时间:
2020-11-02 10:38:23
阅读次数:
34
最近面试遇到一道题,一个人的精力是V,有N款游戏,每款游戏的所消耗的经历为对应的C[i],获得的满足感为M[i]。求玩哪几款游戏获得的满足感最高。当时一下没想出来,后来一想,这不就是背包问题吗? 所以这里整理一下背包问题的算法。 问题描述:一个背包的总容量为V,现在有N类物品,第i类物品的重量为we ...
分类:
编程语言 时间:
2020-10-26 10:42:35
阅读次数:
24
诡秘之主摸鱼快乐 摸鱼摸得真是快乐,每张至少$1\text$(除了魔女序列)。设计这些徽标的人真是神仙(写书的也是) 只会临摹不会画,不少比例都失调了。。。菜就是菜 还有各个图标的大小原来有定的,然后画着画着就没了。 拍照的时候真有成就感 四大教会 原来因为风暴教会好看就第一个画,最后把这么好看的圣 ...
分类:
其他好文 时间:
2020-10-18 10:04:02
阅读次数:
17
因为很多算法思想都基于递归,无论是DFS、树的遍历、分治算法、动态规划等都是递归思想的应用。学会了用递归来解决问题的这种思维方式,再去学习其他的算法思想,无疑是事半功倍的。 递归的本质 无可奈何花落去,似曾相识燕归来。 递归,去的过程叫“递” ,回来的过程叫“归”。 探究递归的本质要从计算机语言的本 ...
分类:
其他好文 时间:
2020-09-18 17:18:38
阅读次数:
36
1:01背包问题只有两种两种状态:放进背包或者不放进背包。 2:01背包的核心:状态转换方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-Wi](i从1到N循环,j从0到V循环)//表示前i件物品,放入容量为j的背包所能获得的最大收益 //其中dp[i-1][j]表示第i件没 ...
分类:
其他好文 时间:
2020-09-18 00:50:56
阅读次数:
25
题目大意:给定一个H*W的棋盘,棋盘上只有N个格子是黑色的,其他格子都是白色的。在棋盘左上角有一个卒,每一步可以向右或者向下移动一格,并且不能移动到黑色格子中。求这个卒从左上角移动到右下角,一共有多少种可能的路线。$h,w\leq 10^5,k\leq 2000$。 看到数据范围可以看出此题的时间复 ...
分类:
其他好文 时间:
2020-09-18 00:04:18
阅读次数:
31
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 方法一:动态规划 对于一个子串而言,如果它是回文串,并且长度大于2,那么将它首尾的两个字母去除之后,它仍然是个回文串 用P(i, j)表示字符串s的第i到j个字母组成的串(s[i:j])是否为回文串 P(i, ...
分类:
其他好文 时间:
2020-09-17 16:29:15
阅读次数:
24
动态规划是一个很好用的算法,同时也是令很多人头疼的算法,下面就介绍一下对动态规划的看法。 通过学习和刷题我们可以发现动态规划一般是用于求一些最值问题,比如说最长递增子序列等等,我们要想知道一个问题的最值,就要知道问题的所有答案然后通过比较得出答案,也就说我们平常所说的穷举;当然肯定不是暴力的穷举,对 ...
分类:
其他好文 时间:
2020-09-17 15:46:07
阅读次数:
23
#include <iostream> #include <cstdio> using namespace std; int dp[105][105],dpb[105][105]; int main(){ int n;cin>>n; for(int i=1;i<=n;i++){ cin>>dp[i] ...
分类:
其他好文 时间:
2020-09-17 13:35:44
阅读次数:
20
读题比较恶心,看到题目就不想写了(),手写了个逻辑理了半天。直接getline会有20分的点超时,手写读入过了,getchar大法好。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=10000010; 4 int ...
分类:
其他好文 时间:
2020-09-17 13:30:56
阅读次数:
42