ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

wqs 二分学习笔记&做题记录

2022-07-10 19:00:14  阅读:170  来源: 互联网

标签:二分 10 code wqs 偏移量 times le 做题


一直以为是什么很难的算法。。

wqs 二分解决的就是形如“恰好选 \(k\) 个的最大值” 这样的问题。

具体而言就是恰好 \(k\) 个这个条件很难搞时,对数据做一个偏移量,也就是所有数都去加上 \(x\) ,然后去掉这个条件跑最优解,这样得到的最优解选了几个计算一下,可以发现这个 \(x\) 会对最后选了几个造成影响,而且是单调的,那么就可以二分了。

它的原理是啥呢,就是说假设每种选择方案对应这个偏移量 \(x\) 是一个一次函数,那么显然有一个最低点,而一个 \(x\) 对应的最低点的就可以二分去找了。


来个例题。

P2619

给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有 \(need\) 条白色边的生成树。

\(n\le 5\times 10^4,m\le 10^5\)。

典题,考虑如果去掉恰好这个条件就是直接最小生成树。

考虑如果偏移量加在什么上面,容易发现把所有白边边权全部加上 \(x\) 后选白边自然会变小,而且这是单调的,所以直接二分即可。

很多博客都用什么凸包什么的进行讲解,我认为是把简单的思想复杂化了。


P3620 \(\color{green}\bigstar\)

有一个长度为 \(n\) 的序列 \(a\),选出 \(k\) 个数,满足这 \(k\) 个数两两不相邻且和最大。

\(n\le 5\times 10^5,2k\le n,1\le a_i\le 10^9\)。

不是很难的题。

如果没有限制可以直接 dp,有限制暴力是直接加一维。

一个比较显然的思路是全体加上 \(x\),这样选出数的数量就会产生单调的影响,因此直接二分即可。

code

另一个做法是反悔贪心,code


ABC218H *2805 \(\color{green}\bigstar\)

有 \(n\) 盏灯,选择 \(k\) 盏点亮,如果 \(i\) 和 \(i+1\) 状态不一样就可以获得 \(a_i\) 的得分,求最大得分。

\(n\le 2\times 10^5,1\le a_i\le 10^9\)。

考虑第 \(i\) 个灯对答案的最大贡献为 \(a_i+a_{i-1}\),可以发现选择不连续的点一定最优,但如果 \(k\) 很大无法满足这个条件,因此取一个 \(k=\min (k,n-k)\) 即可。

然后就和上面一个问题一样了。

code


太菜了,咕咕咕。

标签:二分,10,code,wqs,偏移量,times,le,做题
来源: https://www.cnblogs.com/houzhiyuan/p/16463753.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有