首页 > 其他分享 >wqs二分口胡

wqs二分口胡

时间:2023-01-09 21:25:17浏览次数:54  
标签:二分 选出 最大值 wqs 权值 物品 kx

一般形态:

在 \(n\) 件物品中选出 \(m\) 件,每件物品有一个(可用数字表示的)与选择方案强相关的权值,每种选择方案也可带来(不是任何一个可选物品直接提供的)额外权值,求最终权值和的最小/最大值。额外要求:

  • 令答案为关于选出物品数量 \(x\) 的函数 \(g(x)\),则 \(y=g(x)\) 具有上凸或下凹性;
  • 在选出物品数 \(x\) 不变时,对所有待选物品权值的统一同数值扰动 不会影响最优选择方案带来的额外权值。

已经尽量在抽象化了,描述得像依托答辩


​ 画出 \(y=g(x)\),不妨设其上凸,我们求的是权值和的最大值,方便起见邻点间用线段相连:

​ 我们的目标是由 \(m\) 求 \(g(m)\)。用上第二条要求,考虑二分一个 \(k\)(为什么可以二分马上便知),把所有可选物品的权值加上 \(k\)。那么,在选出物品数 \(x\) 不变的前提下,由于选择方案的额外权值不变,新的 答案(权值最大值)关于选出物品数的函数可以表示成
​ $$f(x)=g(x)+kx$$

​ 此时我们可以用各种玄学方法(除了它的定义)求出 \(f(x)(x\in[0,n])\) 的最大值(p.s.注意与题目所述“最终权值和的最大值”区分开,那个是一个确定而难求的函数 \(g(x)\) 在 \(x=m\) 时的取值,这个是一个随着 \(k\) 变化的函数在定义域内的最大值)以及其极值点 \(x_0\)。

​ 有何用处?不急,稍作分析。考虑一条斜率确定而截距不定的直线
​ $$y=-kx+f(t)\quad (t\in[0,n])$$

​ 其中 \(k\) 就是我们二分的那个 \(k\)。由于 \(f(x)\) 在 \(x_0\) 处取得最大值,所以在 \(t=x_0\) 时这条直线最“靠上”,表达式为 \(y=-kx+f(x_0)\),在 \(x=x_0\) 时恰有 \(y=-kx_0+f(x_0)=g(x_0)\),\(\therefore\) 直线过 \((x_0,g(x_0))\);即,无论 \(t\) 怎样变化,这条直线在 \(x=x_0\) 时永远在 \(y=g(x)\) 下方或与之“贴合”,它是这么动的:

​ 容易看出对于定下的 \(k\) 和通过 \(k\) 求出的 \(f\) 和 \(x_0\),\(y=-kx+f(x_0)\) 与 \(y=g(x)\) 在 \((x_0,g(x_0))\) 处的“贴合”关系可以被视作相切(这一步笔者也至今没搞懂,上面的图可能有助于感性理解)。由于 \(y=g(x)\) 的上凸性,其切线斜率 \(-k\) 随 \(x\) 的增加而单调递减,二分的意义马上体现出来。对二分出的每一个 \(k\) 我们都可以求出一条斜率为 \(-k\) 的 \(y=g(x)\) 的切线以及切点,那么只需要利用单调性移动 \(k\),使切点横坐标逼近 \(m\),便可以通过求出的切线方程得到 \(x_0=m\) 时的切点纵坐标,继而求出 \(g(m)\)。


​ 考虑全过程需要具体题目具体分析的步骤,仅在于求 \(f(x)_{\max}(x\in[0,n])\)。\(f(x)\) 和 \(g(x)\) 相同,也表示在特定的物品权值下,最终权值和的最小/最大值;等价于,通过一个二分的过程,我们把“只能恰好选出 \(m\) 个物品”的限制给生吞了,没有该限制则整个问题好做很多。

例题

[国家集训队]Tree I

CF802O

​ 持续补充中,题目分析什么的先鸽着

标签:二分,选出,最大值,wqs,权值,物品,kx
From: https://www.cnblogs.com/vanspace/p/wpswsqwspwqs-binary.html

相关文章

  • 二分、三分基础知识
    二分整数域上的二分intl=1,r=1e9;while(l<=r){intmid=l+r>>1;if(check(mid))l=mid+1; //l始终代表合法答案的上一个el......
  • C#二分查找
    输入一个数字,并在有序数列1~10中查找该数字,输出其下标#include<stdio.h>intmain(){intk=0;intleft=0,right=0,mid=0;inti=0;intarr[]={1,2,3......
  • 二分查找进阶版
    一、题目时间限制:500ms空间限制:64MB很久以前,有位同学,在学完算法课的二分后,激动的振臂高呼:“我学会二分了!”。此时,一位学长从旁边经过听到此话,决定出一道题考考他,挫挫同学的......
  • 二分查找
    一、二分查找核心1)二分查找的原理二分查找(Binarysearch)也称折半查找,是一种效率较高的查找方法。 设置查找区间:low=0;high=n;若low>high时仍未找到,则查找失败;否......
  • 整体二分专题
    整体二分专题视频讲解\(oiwiki\)参考资料一、在一个数列中查询第\(k\)小的数\(POJ2104\)\(K-th\)\(Number\)思考一下,如果一个静态的不变化数组,让我们找出第\(k\)小......
  • 二分图(一)
    二分图(一)\(\newcommand\m\mathbf\)\(\text{ByDaiRuiChen07}\)一、二分图匹配基础I.匹配的概念在一张无向图\(\mG=(\mV,\mE)\)中,如果\(\mM\subseteq\mE\)......
  • 二分图(三)
    二分图(三)\(\newcommand\m\mathbf\)\(\text{ByDaiRuiChen007}\)一、Dilworth定理I.相关定义对于一个集合\(\mS\),定义\(\mS\)上的一种偏序关系\(\succsim\)......
  • C++ 数学与算法系列之牛顿、二分迭代法求解非线性方程
    1.前言前文介绍了如何使用“高斯消元法”求解线性方程组。本文秉承有始有终的态度,继续介绍“非线性方程”的求解算法。本文将介绍2个非线性方程算法:牛顿迭代法。二......
  • CodeForces 991C Candies(二分答案)
    CodeForces991CCandies(二分答案)http://codeforces.com/problemset/problem/991/C    题意:给出一个数n,表示有n块蛋糕,有两个人a,b。a每次可以取k块蛋糕(如果剩下......
  • Java二分法
    二分查找题目输入一个 n 个元素升序的整型数组 nums,再输入一个目标值 target 。编写一个方法:使用二分法,查找 nums 中的target,如果target存在,则返回在数组......