首页 > 其他分享 >ABC373F 题解

ABC373F 题解

时间:2024-09-29 10:03:10浏览次数:1  
标签:题解 ABC373F iv dp 优化 jv 单调

容易发现这是一个完全背包问题,我们设状态 \(f_{i,j}\) 表示前 \(i\) 个物品使用了 \(j\) 个容量的最大价值。

容易写出转移方程式:\(f_{i,j}=\max\limits_{k=0}^{\lfloor\frac{j}{w}\rfloor} f_{i-1,j-kw}+kv-k^2\)

直接 dp 是 \(O(n^3)\)。考虑对这个 dp 进行优化。

上面的方程容易写成滚动数组的形式。不妨设上一维状态为 \(g\),这一维为 \(f\)。

Solution 1

将后面的 \(kv-k^2\) 记为 \(T(k)\),则一段区间 \([l,r]\) 价值记为 \(w(l,r)\),则 \(w(l,r)=T(r-l+1)\)。发现若对于决策点 \(a,a+1,b,b+1\),始终满足 \(w(a,b)+w(a+1,b+1)\ge w(a,b+1)+w(a+1,b)\)。

将 \(j\) 按对 \(w\) 取模后的值分类后使用决策单调性优化即可。时间复杂度 \(O(n^2\log n)\)。

Solution 2

同样对 \(j\) 按对 \(w\) 取模后的值分类。改写 dp 式子:\(f_{i}=\max g_j+(i-j)v-(i-j)^2\),对式子拆分:\(f_{i}=g_j+iv-jv-i^2-j^2+2ij\),移项得 \(g_j-jv-j^2=-2ij+i^2+fi-iv\),容易发现这是斜率优化的形式,且 \(k=2i\) 为单调上升的, \(x=i\)也是单增的,使用单调队列可以优化到 \(O(n^2)\)。

标签:题解,ABC373F,iv,dp,优化,jv,单调
From: https://www.cnblogs.com/g1ove/p/18438971

相关文章

  • [ABC373F] Knapsack with Diminishing Values
    AtCoder比较遗憾,E题用了太多时间了,没做出来。当时看到有平方感觉难道是斜率优化之类的?这下猜对了。拜谢WA90。不过官解好像没用斜率优化?不会。设\(f_{i,j}\)表示前\(i\)个物品一共用了\(j\)的体积。直接暴力做是三次方的。当加入一个体积为\(w\),价值为\(v\)的物品......
  • 题解:P9947 [USACO20JAN] Photoshoot B
    P9947[USACO20JAN]PhotoshootB题解纯模拟!在\(a_{1}\)算出来之后,我们就可以通过\(b\)数组可以求出以后\(a\)数组的所有元素。要判断是否为排列,我们可以使用一个\(vis\)做桶,为了保证字典序最小,我们可以从\(1\)开始枚举,每次枚举前要清空一下\(vis\)数组,最后使用......
  • 题解:Luogu CF548A Mike and Fax
    CF548AMikeandFax题解题面翻译给定一个字符串和一个整数\(k\),问是不是恰好存在\(k\)个子字符串是回文串,并且所有子字符串的长度一样长。题目上说有\(k\)个子字符串,我们就可以把字符串分成\(k\)份,如果分不成\(k\)份(也就是说长度不是\(k\)的倍数)的话,直接输出NO。......
  • 【C语言】手把手带你拿捏指针(完)(指针笔试、面试题解析)
    文章目录一、sizeof和strlen的对⽐1.sizeof2.strlen3.sizeof与strlen对比二、数组和指针笔试解析1.一维数组2.字符、字符串数组和字符指针代码1代码2代码3代码4代码5代码63.二维数组4.总结三、指针运算笔试题解析代码1代码2代码3代码4代码5代码6一、sizeof和strl......
  • VS2008 应用程序配置不正确,未能启动该应用程序。重新安装程序可以修复此问题解决方法
    有时候我们把自己编译好的exe直接拷贝到别的电脑上使用时,如果那台电脑没装vs,一般程序无法运行提示:应用程序配置不正确,未能启动该应用程序。重新安装程序可以修复此问题。这是由于一般我们编译的程序都是使用的共享DLL,所以不一定保证其他机器上都有。如果使用静态DLL的话生......
  • 题解 ABC373G【No Cross Matching】/ POJ3565【Ants】
    题目描述年轻的自然主义者比尔在学校里研究蚂蚁。他的蚂蚁以生活在苹果树上的蚜虫为食。每个蚂蚁群需要自己的苹果树来养活自己。比尔有一张地图,上面标有\(n\)个蚂蚁群和\(n\)棵苹果树的坐标。他知道蚂蚁从它们的蚂蚁群到它们的取食地点,然后返回蚂蚁群,都是使用化学标记的路线......
  • 题解 CF407D【Largest Submatrix 3】/ SS240928C【c】
    题目描述给定一个\(n\timesm\)的正整数矩阵,求其中最大的满足其中不存在两个位置数值相等的子矩阵大小。\(1\leqn,m\leq400\)。本题有多种做法,而你需要寻找常数最小的做法才能通过本题。solution链表+双指针枚举上边界,逐渐下移下边界,枚举左边界,尝试双指针获得右边界......
  • 题解 ARC118E【Avoid Permutations】/ SS240928D【d】
    题目描述对于一个排列\(a\),定义其权值如下:生成一个\((n+2)\times(n+2)\)的网格图,行列标号为\(0∼n+1\),每次可以从\((i,j)\)走到\((i,j+1)\)或\((i+1,j)\),且不能走到\((i,a_i)\),权值为从\((0,0)\)走到\((n+1,n+1)\)的方案数。现在排列\(......
  • [USACO22DEC] Making Friends P 题解
    T2[USACO22DEC]MakingFriendsP考虑删除一个点,会有如下的点相连接:题目要求如果两两个点建立联系,只会建立一次。所以,神奇地,我们取出当前待删的点所连接的最小的点,将它和剩下的点连接。手摸一下会发现这样就巧妙地给每个改建的边都建了一次。所以用一个set启发式合并就做完......
  • 2. 两数相加题解
    题目描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。示例1:输入:l1=[2,4,3],l2=[5,6,4......