学习笔记--APIO 2018 二分专题 By wuvin
前言:
在APIO 2018 Day2下午听wuvin讲二分,听了一上午的神仙,现在终于有可以听懂了。
专题:
平均边权最大
题解 by wuvin:
二分平均值
然后每条边减去平均值
变为查找是否存在正环可以使用SPFA(反着写松弛)
最大闭合权子图变式
题意:
一个N个点M条边的图(不一定连通)。
一个子图的优美程度定义为子图中的边数/子图的点数
现在你需要求出最大能得到的优美程度是多少?
题解by wuvin:
照套路我们二分一下
然后点带负权,边带正权
选择边必须选择点
变成最大权闭合子图,上网络流解决
然而我并不会网络流求这个...
带权二分系列
BZOJ 2654
题解by wuvin:
如果我们对所有白色边的边权增加\(M*maxW\),那么最小生成树会得到一个白色边尽量少的方案。
如果我们对所有白色边的边权增加\(-M*maxW\),那么最小生成树会得到一个白色边尽量多的方案。
我们定义这个给白色边的额外权值为C。随着C从小到大遍历\([-M \times maxW,M \times maxW]\),那么我们的最优方案中的白色边会逐渐减少。
如果某个C下,我们最优方案刚好得到K条边,那么这就是原题的最优解。因为最终代价为 原题的最优解+\(C*K\) 其中K和C都是常数,所以说最优解和原题是同一个最优解。
所以我们可以二分C值,然后使用\(kruskal\)生成树即可。(假设白色边和黑色代价一样的时候选择白色边)
但是注意一个细节,随着C的增加,白色边边数只是单调不增而已,可能出现C=1是得到5条白色边,C=1+eps是就是3条白色边,这是因为可能存在可以代替白色边的权值刚好之比白色边大1的黑色边。
所以二分到最后需要特判一下。
APIO 2014
题解by wuvin:
Ans = C – 每一段内任意两个数的两两的乘积之和
\(Ans=C-minimize(\sum_{i \in [li,ri]}\sum_{j \in [li,ri]} {Wi \times Wj})\)
传统做法O(NK)的斜率DP
我们来参数二分 —— 给每次划分附上一个额外的代价C。
当\(C= +∞\)时,答案是只分一段。
当\(C=0\)时,答案是每个数割一刀,分成n段。分的段数随着C的增长而减少
于是可以采用刚刚类似的二分方法。二分之后就是正常的斜率DP了。
最终复杂度 \(O(nlogV)\)相似:
SDOI2016 征途
学习笔记--APIO 2018 二分专题 By wuvin的更多相关文章
- 「学习笔记」wqs二分/dp凸优化
[学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \l ...
- RxJava2.0学习笔记2 2018年7月3日 周二
摘记: 1.map -- 转换 有些服务端的接口设计,会在返回的数据外层包裹一些额外信息,这些信息对于调试很有用,但本地显示是用不到的.使用 map() 可以把外层的格式剥掉,只留下本地会用到的核心 ...
- 算法图解学习笔记01:二分查找&大O表示法
二分查找 二分查找又称折半查找,其输入的必须是有序的元素列表.二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止:如果x<a[ ...
- [笔记] APIO 2018 Day1
计算折纸 computaional origami 全息算法(???) margulis napkin problem 素数里有任意长的等差数列 xor gate Σxi or gate(exact ...
- 【学习笔记】整体二分(BZOJ2738矩阵乘法)
也是因为一道题才来学的... 然后就发现这道模板貌似是暑假初期在某校集训的时候的比赛题 并且好像没改= = 前置芝士 1.二分= = * CDQ分治[你要是知道CDQ分治的话这玩意就很好理解啦] *本 ...
- RxJava2.0学习笔记1 2018年3月23日 星期五
参考博文:给初学者的RxJava2.0教程-简书 源码 :https://github.com/ssseasonnn/RxJava2Demo 1 若是发送多个onError, 则收到第二个on ...
- Android学习笔记_66_图片处理专题
1.图片缩放:不解析整个图片信息. public class DemoActivity extends Activity { @Override public void onCreate(Bundle ...
- 图灵学院JAVA互联网架构师专题学习笔记
图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...
- wqs二分 学习笔记
wqs二分学习笔记 wqs二分适用题目及理论分析 wqs二分可以用来解决这类题目: 给你一个强制要求,例如必须\(n\)条白边,或者划分成\(n\)段之类的,然后让你求出最大(小)值.但是需要满足图像 ...
随机推荐
- Linux下压缩和解压命令
http://man.linuxde.net/tar
- koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据
1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...
- H264编码原理以及I帧、B和P帧详解, H264码流结构分析
H264码流结构分析 http://blog.csdn.net/chenchong_219/article/details/37990541 1.码流总体结构: h264的功能分为两层,视频编码层(V ...
- ambari部署Hadoop集群(1)
本例使用hortonworks 提供了 ambari 的安装方法,而且还很详细.以下是在 centos7 上的安装步骤. 基础配置: 1. 修改电脑的主机名 hostnamectl set-hostn ...
- Django之缓存配置
01-什么是缓存 缓存(cache),其作用是缓和较慢存储的高频次请求,简单来说,就是加速满存储的访问效率. 02-几种缓存配置 # 内存缓存:local-memory caching CACHES ...
- 阶段3 3.SpringMVC·_05.文件上传_1 文件上传之上传原理分析和搭建环境
分成几个部分 里面可能就包含文件上传的值 提交方式要改成post 第三个就是提供一个input file的文件选择域 新建项目 新建一个项目 当前项目没有父工程 跳过联网下载 改成02 构建 编译和目 ...
- Python——作业12(选做)选中矩阵的每行或每列画出对应的折线图(python programming)
import os import platform import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5 ...
- Spring Data JPA 介绍
Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在 ...
- JSP 简单标签extends SimpleTagSupport
1.控制JSP页面某一部分内容是否执行 public void doTag() this.getJspBody().invoke(null);执行 空白,不执行 2.控制JSP页面内容重复执行 pac ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(一)
要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.US ...