一、四边形不等式 感觉四边形不等式用的时候是:利用第j-1层的dp[i][j-1]和dp[i+1][j-1]两个值的转移位置s[i][j-1],s[i+1][j-1]来约束 k ...
转载
2021-08-05 14:21:23
95阅读
linkkkkk 题意: 将一个长度为 n 的序列分为 m段,使得总价值最大。 一段区间的价值表示为区间内不同数字的个数。 n≤35000,m≤50 思路: 考虑朴素的方程:表示将前个数字分成段得到的最大价值。 转移为 其中表示区间的价值。 这样时间复杂度是的,是无法优化的,看怎么能够优化的计算。 正常的思路是开一个桶暴力维护,但是每个数作用的区间都是可以预处理出来的。假设第个数上一次出
原创
2022-07-14 19:00:19
192阅读
传送门考虑最终状态数组中任意两个数都是彼此的因子(倍数)那么如果从小到大排序,一定有ai%ai−1==
原创
2022-02-08 13:49:21
57阅读
#D. Coloring Brackets 预处理 由于栈的特性,我们可以储存左括号和读取到刚刚读到的左括号,并当读取到右括号时,我们可以将最近的左括号提取出来并做一个匹配处理。 ##DP的设置 DP数组的设置,dp[l][r][color1][color2]表示的是l位置是color1和r位置是c ...
转载
2021-08-27 23:33:00
238阅读
2评论
传送门考虑最终状态数组中任意两个数都是彼此的因子(倍数)那么如果从小到大排序,一定有ai%ai−1==0a_i\%a_{i-1}==0ai%ai−1==0于是我们一开始就对aaa数组从小到大排序,按照这个规则去dpdpdp定义f[i]f[i]f[i]为以aia_iai结尾,在[1,ai][1,a_i][1,ai]最多可以选多少个数字那么对于每一个iii,去[1,i−1][1,i-1][1,i−1]找一个符合条件的jjj满足ai%aj==0a_i\%a_j==0ai%aj==0f[i
原创
2021-08-26 15:40:00
25阅读
斜率优化DP 两步骤; 1.造出DP方程; 2.通过DP方程构造出一个斜率优化方程; 具体怎么构造呢? 如 两个点 a b; 构造出 DP(a)<DP(b) 然后通过这一式子,构造出一个下凸包(后面的边的斜率大于前面的边) 只有下凸包的点是可能作为状态转移方程的转移点,其他点都不可能。 然后,构造完
转载
2019-11-18 16:37:00
136阅读
2评论
主要内容 形如这样的 \(\text{DP}\) 转移方程: \(dp[i]=\max_{L_i\le j\le R_i}\{dp[j]+val(i,j)\}\) 满足: \({L_i}\) , \({R_i}\) 递增( 前提条件 )。 \(R_i≤i\) ( 转移条件 )。 \(val(i,j) ...
转载
2021-08-12 13:48:00
156阅读
2评论
\(\text{Example 1 : CF372C Watching Fireworks is Fun}\) : 题目大意:城镇中有 个位置,有 \(n\) 个烟花要放。第 \(i\) 个烟花放出的时间记为 \(t_i\),放出的位置记为 \(a_i\)。如果烟花放出的时候,你处在位置 \(x\) ...
转载
2021-10-08 11:19:00
149阅读
2评论
DP优化 斜率优化 求$f(i)=max{f(j)+(s(i)-s(j))^2}$,\(n\leq 10^6\). 其中$,s(x),\(是只和\),x,$有关的单调减函数,可以快速计算 显然我们不能$,\Theta(n^2),$暴力计算,考虑减少决策数,化简得: \[ f(i)=max\{f(j) ...
转载
2021-10-18 21:46:00
61阅读
2评论
斜率优化 \(DP\) 引入: 通过一道题来引入吧: [HNOI2008]玩具装箱 题意: 给你一些物品,每个物品有大小,你可以选择多个背包装这些东西,背包费用由背包中物品大小决定,问你这些物品放进背包中,需要背包制作的总费用最少值。 分析: 这题暴力的 \(dp\) 方程得出来比较简单,记为: \ ...
转载
2021-09-27 22:03:00
203阅读
2评论
dp优化瞎吹 众所周知,我们在dp的转移过程中,可以用一些方法,优化它的转移复杂度。 由于我这边的资料不多,并且例题要么很简单,要么很难,所以我学的脑子有点乱,东西也乱,抱歉啊 前言 对于dp的优化,我个人有些浅显的理解,不知恰当不恰当 我感觉它大概就是,我先写一个dp,再想办法把它变得更快。 怎样 ...
转载
2021-08-08 15:35:00
162阅读
2评论
hdu 2993MAX Average Problemhttp://acm.hdu.edu.cn/showproblem.php?pid=2993这题都整死我了,代码基本上和别人AC的都快一样了还是不对。郁闷死了快。。最后终于发现了错误点自判断斜率时y1*x2 <= y2*x1 如果用整型就会超数据类型肯定会错,而上边的用整型可以过,
转载
2012-08-28 11:34:00
138阅读
2评论
题意: 将含有N个元素的一个集合分成M个子集,使得每个子集的最大值与最小值平方差的和最小。 可以想到贪心将元素从小到大排序,很快可以得出dp[i][j]-前i个子集分j个元素的最小花费,dp方程 dp[i][j]=dp[i-1][k]+(a[j]-a[k+1]);但是需要三重循环,时间复杂度接受不了
转载
2019-11-18 20:28:00
125阅读
2评论
D - Between Two Arrays(前缀和优化dp)见官方题解,先考虑朴素dp,然后在基础上前缀和优化。时间复杂度:O(nm)O(nm)O(nm)// Problem: D - Between Two Arrays// Contest: AtCoder - Exawizards Programming Contest 2021(AtCoder Beginner Contest 222)// URL: https://atcoder.jp/contests/abc222/tasks/abc
原创
2022-01-20 14:32:40
153阅读
D - The Bakery CodeForces - 834D 这个题目好难啊,我理解了好久,都没有怎么理解好, 这种线段树优化dp,感觉还是很难的。 直接说思路吧,说不清楚就看代码吧。 这个题目转移方程还是很好写的, dp[i][j]表示前面 i 个蛋糕 分成了 j 个数字的最大价值。 dp[i
转载
2019-08-14 16:53:00
97阅读
2评论
D - Weak Takahashi(dp)简单dp,记录此题的目的是因为我初始化假了,我把#的贡献初始为0,这样就可以从#开始走了。如:.#.. 会输出2,但是答案是1。所以应该初始化为−∞-\infty−∞,f(1,1)=1f(1,1)=1f(1,1)=1时间复杂度:O(nm)O(nm)O(nm)// Problem: D - Weak Takahashi// Contest: AtCoder - M-SOLUTIONS Programming Contest 2021(AtCoder B
原创
2021-12-31 10:10:13
203阅读