ICode9

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

CF802O April Fools' Problem (hard)

2022-02-01 10:33:48  阅读:167  来源: 互联网

标签:le 增广 hard 最小 流量 April Fools 计为 rightarrow


更好的阅读体验

题意

有 \(n\) 道题,第 \(i\) 天可以花费 \(a_i\) 准备一道题,花费 \(b_i\) 打印一道题,每天最多准备一道题,打印一道题,准备的题可以留到以后打印,求打印 \(k\) 道题的最小花费.

\(1\le k\le n\le 5\times10^5\)

题解

显然可以费用流解决,建图如下.
费用流建图

考虑优化费用流

引理
初始不含负圈的图在费用流的增广过程中不会出现负圈

根据引理得,每次增广的增广路都是一条形如 \(S\rightarrow X\rightarrow Y\rightarrow T'\rightarrow T\) 的路径,一共增广 \(k\) 次.

设 \(f_i\) 表示在残流网络上 \(i+1\) 点向 \(i\) 的流量,则一条增广路合法当且仅当 \(S\rightarrow X,Y\rightarrow T'\) 这两条边有流量且满足下列两个条件之一:

  • \(X\le Y\)
  • \(X>Y\land \min_{Y\le i<X}f_i>0\)

我们尝试用线段树来模拟这一过程,对于每一个区间 \([l, r]\),维护 \(a\) 的最小值计为 \(ma\),\(b\) 的最小值计为 \(mb\),从 \(x\) 到 \(l\) 有流量的最小 \(a_x\) 计为 \(fa\),从 \(r+1\) 到 \(x\) 有流量的最小 \(b_x\) 计为 \(fb\),从左到右的最小费用流计为 \(f1\),从右到左的最小费用流计为 \(f2\),从 \(r+1\) 到 \(l\) 的流量计为 \(f\)

每找到一条增广路,在线段树上更新流量并把 \(a_X,b_Y\) 赋值 \(\text{Infinity}\) 以标记 \(S\rightarrow X,Y\rightarrow T'\) 这两条边没有流量

这时候我们发现这个做法是不可行的,应为我们没法对流量快速地区间修改

发现 \(f_n\) 的值总是 \(0\),我们将 \(fa\),\(fb\) 和 \(f2\) 的定义修改为在整个区间每条边的流量都减去 \(f\) 时原定义的值,这样一来区间 \([1, n]\) (也就是我们需要查询的区间) 的值是符合原定义的,二来区间修改时我们只需要更新流量,每次增广的时间复杂度可以做到 \(\Theta(\log n)\)

总时间复杂度为 \(\Theta(k\log n)\)

代码 codeforces submission 143973639

标签:le,增广,hard,最小,流量,April,Fools,计为,rightarrow
来源: https://www.cnblogs.com/gzezfisher/p/cf802o.html

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

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

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

ICode9版权所有