随笔分类 - ACM
大二到大三不堪回首的记忆....
摘要:原题链接 考察:状压dp 思路: 预处理连续1的状态,再处理能放在第i行的状态.递推时枚举pos[i]和pos[i-1]的状态即可. 注意: 位运算==的优先级高于& 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #
阅读全文
摘要:原题链接 原来蒙德里安的梦想和最短路径是两个状压的套路题型....蒟蒻落泪 考察:状压dp 思路: 参考蒙德里安的梦想,本题如果i行的摆放只与i-1行有关.也就是说设i-1行的摆放情况为a,i行为b.要满足这些条件:a&b=0,a无连续1,b无连续1,a|b无连续1. 预处理合法的状态.再枚举合法的
阅读全文
摘要:原题链接 考察:状压dp 时隔多年的复习233,还是做出来了 思路: 参考正常版的八皇后.我们需要标记左斜线,右斜线,已放棋子的列.在正常版我们是用数组记录,这里用状压dp可以用二进制位记录.所以三个变量now标记列,left是左斜线,right是右斜线.回溯不同于正常的dfs,正常的八皇后是用fo
阅读全文
摘要:原题链接 考察:容斥原理+完全背包+计数dp 本蒟蒻是打死都想不到怎么用容斥原理... 错误思路: 乍看一下是多重背包,时间复杂度80*105*103(采用二进制优化)显然T了 正确思路: 采取完全背包预处理的方法,时间复杂度105 ,求出不限数量的取法.答案就是所有取法-不合法的取法.这里就可以想
阅读全文
摘要:原题链接 考察:区间dp 这道题可以想到P4170涂色和Acwing 编辑距离的结合. 错误思路: 如果直接按a[i]==b[i]与a[j]==b[j]划分的话(实际上a[i]==b[i]与j可以合并),就会少了考虑b连续的条件.使得次数增加了. 错误思路2: 将a[i]==a[j]&&b[i]==
阅读全文
摘要:原题链接 考察:区间dp 转移方程没想出来,思路参考大佬们的题解 错误思路: 本题主要难在[i,j]区间取走某一个数k时,我们要考虑继续往后取还是往前取,如果取前面的就只能取尾端,这就与我们一开始的子结构不符.所以此思路设置间断点划分集合行不通. 正确思路: f[i,]表示i~j人走花费的时间.考虑
阅读全文
摘要:原题链接 考察:区间dp 这题没做出来,要不我还是别学OI了... 思路: f[i][j]表示[i,j]区间内取得的最小值.集合划分就是以中断点为标准,k = i+1,i+2...j-1...f[i][j] = min(f[i][k]+f[k][j]+a[i]*a[k]*a[j]) 为什么是a[i]
阅读全文
摘要:原题链接 考察:区间dp+记忆化搜索(可有可无) 本蒟蒻是完全没思路...参考大佬的代码 参考大佬的思路: 参考括号匹配的dp题,这道题也是分为(())和()()型.但dp数组有所不同,根据()左右括号颜色的不同,里层或者断点f[i,k]会有不同方案数.以(())为例,14颜色的不同使得里层对应的方
阅读全文
摘要:原题链接 考察:区间dp 区间dp的题想重写一遍,tm学了和没学一样,前几天都在睡,根本没刷题TAT 思路: 本道题要想到由局部最优解推导整体最优解,为什么能推到呢?首先f[i][j]表示[i,j]区间内要穿衣服的最少数量,在[i,j]区间内,枚举断点,由更小的最优解得到[i,j]区间的最优解.如果
阅读全文
摘要:原题链接 考察:区间dp 思路: 和矩阵取数游戏P1005(本题的加强版)不能说很像,简直就是一模一样.f[l][r]区间表示卖掉[l,r]区间的最大收益,但是我们只能买两边的值,因此分为两类,卖l和卖r 1 #include <iostream> 2 #include <cstdio> 3 #in
阅读全文
摘要:原题链接 考察:区间dp 思路: f[i][j]为涂色[i,j]区间的最少次数,按s[i]与s[j]的关系划分集合,如果s[i]!=s[j],我们枚举断点,f[i][j] = f[i][k]+f[k+1][j].如果s[i]==s[j],答案不是f[i+1][j-1]+1,这个方程不能处理全都相等的
阅读全文
摘要:原题链接 考察:区间dp 思路: f[i][j]代表[i,j]合成后的最大值,根据题意,只有当f[i][k]=f[k+1][j]时,才能合并,即f[i][j] = max(f[i][j],f[i][k]+1).这道题求的是合并过程中的最大值,因此答案不一定是f[1][n]. 注意:根据题意,只有当a
阅读全文
摘要:原题链接 考察:区间DP 思路: 与上题区别在于()是一类,()[]也是一类,两类需要分别处理,第一类和上题一样处理,分11 10 01 00(i,j是否在里面)讨论,第二类分为第一个括号序列和右边其他的括号序列,因为第一个括号序列无法表达,只能用包含它的f[i,k],所以第二类是f[i,k]+f[
阅读全文
摘要:原题链接 考察:区间DP+线性dp 思路一: 正向求解,f[i][j]表示[i,j]区间内应该删去的字符数.要注意的是如果i>j,那么为不合法区间,设置f[i][j] = 0.i = j,单个字符一定回文,f[i][j] = 0.接下来就是划分集合:s[i]=s[j]可缩小到f[i+1,j-1].如
阅读全文
摘要:原题链接 考察:区间DP 这道题是能量项链的扩展... 思路: 在多边形内任取一条边,这条边一定属于某个三角形,划分情况随着三角形的顶点位置变化而变化.当选定一个三角形时,多边形被三角形分为两个部分,这两个部分是完全独立的,即f[i][j]表示的是i,j形成的多边形内划分三角形的情况,f[i][j]
阅读全文
摘要:原题链接 考察:区间DP+dfs 关键在于想出怎么区间DP 思路: 根据石子合并那道题,f[l,r]是要合并的石子区间,那么这道题的f[l,r]是(l,r)区间内形成的二叉树,石子区间那道题集合的划分是根据隔板k的位置,那么这道题就是根节点的位置.要注意特殊的结点: 叶子结点,我们需要初始化叶子节点
阅读全文
摘要:原题链接 考察:背包dp 错误思路: f[i,j] j表示和 此思路必错,会MLE. 正确思路: 需要转换式子.已知 x + x+d1 + x+d1 +d2+x+d1+d2+d3...=s 等价于 nx+(n-1)d1+(n-2)d2+.. = s. s与n已知,d在a与b徘徊,而x的范围太广,因此
阅读全文
摘要:原题链接 考察:线性DP 思路: 最长上升子序列+01背包+数字三角形的综合 因为需要递增取数,所以必须记录上一个数是什么,从左上角到右下角,必须记录坐标,要求取k个数,必须记录取了几个数.因此需要四维数组 首先f[i][j][t][s]可以从上面和左面走来.到达一个新点,可以考虑取还是不取,取就是
阅读全文
摘要:原题链接 考察:线性DP 和上道题其实是一样的题,区别在于这里要求是严格上升序列 但是转化一下就可以变成非严格上升序列: 非严格上升序列 b[i]-b[i-1]>=0 严格上升序列 b[i]-b[i-1]>=i-(i-1)//1是这么来的 因此变一下 b[i]-i>=b[i-1]-i+1即可 构造a
阅读全文
摘要:原题链接 考察:线性DP 思路: 通过证明(dfs打表) 可以发现存在一个最优解,它的数字全部在A数组里出现过. 考虑根据最后一个数字设置状态转移方程,f[i][j]代表考虑前i个数,最后一个数字是a[j](b数组是非严格单调序列,和上题一样考虑,我们需要知道它的末尾值).f的属性就是和的最小值.去
阅读全文

浙公网安备 33010602011771号