考虑全选然后删的代价转最小割+最小割同一类连inf的边:AT_arc107_f

news/2024/7/5 6:28:44

https://www.luogu.com.cn/problem/AT_arc107_f

理论上界为 ∑ ∣ b i ∣ \sum |b_i| bi。考虑现在减少会有什么情况:

  1. 不选。代价为 a i + ∣ b i ∣ a_i+|b_i| ai+bi
  2. 原先为正,所在连通块取绝对值后变负。代价为 − 2 ∣ b i ∣ -2|b_i| 2∣bi
  3. 原先为负,所在连通块取绝对值后变正。代价为 − 2 ∣ b i ∣ -2|b_i| 2∣bi

有一堆代价,很容易想到流 / 割。

然后每个联通块有两种取值(正 / 负),正好对应源汇点,因为是归类,所以是割。

至于第一种情况,因为只和自已有关,显然拆点连边。

现在还有一个问题,同一个联通块必须同号。转化一下是什么,有边相连的点必须归类到同源同汇(也就是归类到同一边)。经典套路,连一条反向无穷大的边即可。

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1903420.html

相关文章

页面置换算法详解专题

页面置换算法的功能是:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换~ 页面置换算法的目的:尽可能地减少页面的换进换出次数(既缺页中断的次数)。具体来说,把未…

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns 1、下载银河麒麟V10镜像 官方提供使用通…

C语言--字符函数与字符串函数

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing 原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位…

C语言第五十四弹---模拟使用strstr函数

使用C语言模拟使用strstr函数 定义:strstr 是一个 C 标准库函数,用于在一个字符串中查找另一个字符串的第一次出现位置。strstr 函数的声明如下: char* strstr(const char* haystack, const char* needle);它接受两个参数:haysta…

Linux(一):如何在 Linux 中检查未挂载的磁盘

如何在 Linux 中检查未挂载的磁盘 1、概述2、 具体方法3、总结 1、概述 大家好,我是欧阳方超,可以关注我的公众号“欧阳方超”,后续内容将在公众号首发。 在Linux系统中, 挂载磁盘之前需要先检查是否有未挂载的磁盘,那…

Java,自带的排序方法

假如定义了一个学生类,想根据学生的总分对学生进行排序 案例(进去是Student类的定义,用ctrlf 搜Collection,可以找到具体应用) Collection.sort(要排序的集合,new 一个比较器(){ 大括号里是让重写比较器的…

【pycharm】Pycharm常用快捷键

批量替换是指一次性替换多个文件中的指定内容。在开发过程中,可能会遇到需要替换多个文件中的某个字符串或者某段代码的情况。如果一个一个文件进行替换,那么将会非常耗时和繁琐。 而使用批量替换功能,则可以一次性完成所有文件的替换操作&am…

Linux中的20个基本“ls”命令示例

LS command & how to use rmdir command I) ls commandII) rmdir can not remove folder with entities (stuffed with files or folders) I) ls command URL source : https://zhuanlan.zhihu.com/p/635083904 Linux中的20个基本“ls”命令示例 这里将介绍以下ls 命令参…