摘要: 关于多重背包的一道题。 首先看数据便知道朴素的多重背包无法通过,所以我们采用二进制拆分进行优化,(二进制优化点这里),这样就能顺利通过本题了。 这道题只是判断可行性,所以“价值”这一状态并没有什么用。 1 #include <iostream> 2 #include <cstdio> 3 #incl 阅读全文
posted @ 2019-04-06 13:53 AD_shl 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 也是一道线型动态规划的好题…… 读入每个人的贪婪度之后,对其按照从大到小的顺序排序,定义状态f[i][j]为前i个人(排序后)分j个饼干的答案,那么答案为f[n][m],考虑状态转移方程。 1、若给第i个人的饼干数大于1 ,那么我们将这i个人的饼干数都减1(总共减n),他们的怨气值是不会改变的,因而 阅读全文
posted @ 2019-04-06 10:22 AD_shl 阅读(368) 评论(0) 推荐(1) 编辑
摘要: 显然,定义状态f[i][j][k][l]表示第一条路线走到(i,j),第二条走到(k,l)所取的数最大和。 状态转移方程即f[i][j][k][l]= max( max(f[i-1][j][k-1][l],f[i][j-1][k-1][l]), max(f[i-1][j][k][l-1],f[i][ 阅读全文
posted @ 2019-04-05 23:16 AD_shl 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 线型动态规划的好题…… 分析题意,不难设计出状态:f[i][x][y][z]表示完成第i个任务后,三个人分别在x,y,z位置时的花费。但是这样的状态时间与空间都无法承受,不可行。 再次考虑:当完成第i个任务后,其中一人必定在p[i]上,因此状态可以减少一维:f[i][x][y]表示完成第i个任务后, 阅读全文
posted @ 2019-04-05 23:05 AD_shl 阅读(189) 评论(0) 推荐(0) 编辑
摘要: hash的入门题,通过hash我们可以在O(1)的时间里判断一个字符串的任意子串是否相等,恰好符合本题题意。 设计hash函数f[i]存储字符串s第1~i的子串的哈希值。显然存在f[i]=f[i-1]*131+(s[i]-'a'+1). 有了f数组,就可以求出任意子串的哈希值,因此我们就可以判断任意 阅读全文
posted @ 2019-04-05 20:32 AD_shl 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 最长公共上升子序列的模板题,仿照LCS和LIS的状态定义方式,我们定义f[i][j]表示a1~ai与b1~bj构成的以bj结尾的LCIS的长度,显然答案为max{f[n][i]}. 当ai≠bj时,f[i][j]=f[i-1][j]. 当ai=bj时,f[i][j]=max{f[i-1][k]+1} 阅读全文
posted @ 2019-04-05 20:18 AD_shl 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 这是一道基础数据结构的综合题,思考量较大,但是实现简单。 我们考虑建立三个队列,分别存储原始长度、切开后第一段的长度、第二段长度。显然,这三个队列是非严格单调下降的,对于每个时刻,将要切开的蚯蚓即为三个队列队头的最大值。另外,我们用一个变量delta表示整个集合的偏移值,即队列中的长度+delta= 阅读全文
posted @ 2019-04-05 15:29 AD_shl 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 一道简单的括号匹配问题,如果是左括号就入栈,如果是右括号且与栈顶匹配则答案加2,如果不匹配则答案清零,每次都更新一下最优答案即可。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std 阅读全文
posted @ 2019-03-31 16:43 AD_shl 阅读(449) 评论(1) 推荐(0) 编辑
摘要: 一道单调栈的基础题,我们建立一个单调上升的栈,当一个矩形被扫描时,如果他的高度大于栈顶就直接入栈,否则就不断取出栈顶,直到栈空或者栈顶小于当前矩形,在出栈的同时,我们累计被弹出的矩形宽度之和,每次弹出一个矩形,我们就用他的高度乘累计的宽度更新答案,出栈结束后,我们把一个高度为当前高度,宽度为累计宽度 阅读全文
posted @ 2019-03-31 14:02 AD_shl 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 栈的入门题,主要考察了栈的基本操作,用递归模拟实现即可 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cstdlib> 6 using namespa 阅读全文
posted @ 2019-03-31 13:16 AD_shl 阅读(325) 评论(0) 推荐(0) 编辑