首页 > 其他分享 >「Note」 wqs 二分

「Note」 wqs 二分

时间:2023-05-31 20:36:37浏览次数:40  
标签:二分 凸函数 wqs 凸性 Note 斜率 就行

最大标志:选择恰好 \(K\) 个,使什么东西最优。

就比如说 \(f_{i,j}\) 表示前 \(i\) 个数里选 \(j\) 个的最优解。直接求解复杂度很寄。

如果 \(f_{n,x}\) 在坐标系里画出的是一个凸函数(\(x\) 是取了多少个值),那么就可以进行 wqs 二分。

我们想要求当 \(x=K\) 时的解,因为是凸函数所以二分斜率,去用这个斜率切凸包,看对应的横坐标是什么。

具体的就是每个因为形如 \(y=kx+b\),其中 \(kx\) 就是要在每次选的时候增加 \(k\) 的代价。

其实原理看看就行。然后还有细节。

  1. 二分的数据。因为正常情况下 \(f_{i,j}\) 都是整数,所以斜率是整数,所以就在整数内二分就行。如果 \(f_{i,j}\) 可能会有小数的情况,这时候就实数二分。
  2. 如果凸函数上有三点共线,那么直接二分是可能二分不到的。这时候需要自己分析选这条线段的哪一边)

题吧也没做几个好的。

P5896 [IOI2016]aliens

给一个 \(n\times n\) 的网格图,上面有一些关键点,需要以主对角线为对角线,画若干个正方形,求最小覆盖多少个方格使得所有点被覆盖。

emmmm,我不想写了。但是我有一个非常强的题解像挂在上面。

反正就是自己乱感性理解凸性,然后就斜率优化就行。

Submission

P5308 [COCI2018-2019#4] Akvizna

\(f_{i,j}\) 表示剩 \(i\) 个人,花了 \(k\) 轮的最大收益。

\(f_{i,j}=f_{k,j-1}+\frac {i-k}{i}\)

感性理解凸性,直接斜率优化www

Submission

P4983 忘情

双倍经验link

CF802O April Fools' Problem (hard)

被我扔到了模拟赛里。

就是首先考虑用 wqs 二分,感性理解凸性(肯定是增加量越大打印题目越少)

然后我们考虑如何找最优策略。

有两种情况,一种是 \(a\) 待匹配,另一种是贪心的选一个 \(a\) 匹配,用一个堆维护就行。

标签:二分,凸函数,wqs,凸性,Note,斜率,就行
From: https://www.cnblogs.com/cc0000/p/17447242.html

相关文章

  • c++算法:二分
    算法中,有一种比线性查找算力费得更少的一种算法思想,叫“分治”,今天讲的是分治里的二分查找:借助(low+high)/2公式,找到搜索区域内的中间元素。图1中,搜索区域内中间元素的位置是 ⌊(1+10)/2⌋=5,因此中间元素是27,此元素显然不是要找的目标元素。然后就是缩小范围。 下面就是......
  • NEFU 635(二分+枚举)
    题目:TwinkleTwinkleLittleStar 题意:就是给n个点的坐标,然后在这个图形中找出一个边长最小的正方形,要求正方形的边平行于坐标轴且覆盖的点大于等于k个。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;constintN=20......
  • 等比数列二分求和
    今天我们学习如何有效地求表达式的值。对于这个问题,用二分解决比较好。(1)当时,(2)当时,那么有    (3)当时,那么有   代码:#include<iostream>#include<string.h>#include<stdio.h>usingnamespacestd;constintM=1000000007;typedeflonglongLL;LLpower(LLa,LL......
  • 二分查找
    我们知道二分查找的基础写法有三种:左闭右闭区间publicstaticintbinsearch(int[]nums,inttarget){intl=0,r=nums.length-1;while(l<=r){intm=(l+r)/2;if(nums[m]==target)returnm;......
  • 语音识别,语音转文字,会议记录自动化,Meeting Note, Speech to Note
    经过百般测试,实践了Python的方案,实现:可以识别英语,但是断句和整句话的整理还是不尽人意。 还不如下面这个产品 Speechnoteshttps://speechnotes.co/dictate/   Pyhton的方案实践记录(部分):cd/Users/***/opt/anaconda3/bin/ ./jupyternotebook ItwillopenupB......
  • 二分法应用——搜索旋转数组,以前一直在纠结a[0],a[-1],a[mid], target三者关系,其实最
    62·搜索旋转排序数组  描述给定一个有序数组,但是数组以某个元素作为支点进行了旋转(比如,0124567可能成为4567012)。给定一个目标值target进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。背完这套刷题模板,真......
  • Gym - 100851L [二分+线性推导]
    题目链接:https://vjudge.net/problem/Gym-100851L 解题思路:根据题目知道,墙的两边是不能放石头的,所以最终的结果肯定会收到两边墙的限制,从而使得答案不会超过1e9+1e5。此外我们再去二分最大高度,一个明显的结论就是以i为最高点建墙的话最少花费肯定是建一个金字塔形的墙面。但由于......
  • Java入门学习必备工具-OneNote笔记
    俗话说:“好记性不如烂笔头”,不得不说,这句话在大部分时候都是适用的。特别是刚入门学习java的小白们,记笔记是非常实用的学习方法也可直接观看视频学习如何使用笔记工具,b站上动力节点老杜最新Java17版教程,从零基础出发,讲解Java编程的基础知识和实践技巧,涵盖了Java编程的方方面面......
  • poj 2452(RMQ+二分)
    解题思路:这题实际上就是求某区间上的最值问题,可以先枚举区间的起始位置,然后二分去搜索比起始位置大的数且位置最远(这里可以用RMQ算法区间内的最小值),找到之后再利用RMQ算法找这段区间内的最大的,如果这段区间的长度比当前的最优值大,那么更新。详细的见代码。#include<iostream>#incl......
  • POJ 1505(二分+贪心)
    题意:给一些书,这些书有不同的页数,让把这些书分成k份,必须是连续的,问这些份中页数和的最大值最小是多少。解题思路:知道了页数和的范围,而且书都是连续的,要找到页数和最大值的最小值可以直接二分答案。。AC:#include<iostream>#include<cstdlib>#include<cstring>usingnamespacestd......