【NOI2006】最大获利 【题目描述】 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是 挑战。THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做 太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最 优化等项目。 在前期市场调查和站址勘测之后,公司得到了一共 N 个可以作为通讯信号中 转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需 要投入的成本也是不一样的,所幸在前期调查之后这些都是已知数据:建立第 i 个通讯中转站需要的成本为 Pi(1≤i≤N)。 另外公司调查得出了所有期望中的用户群,一共 M 个。关于第 i 个用户群的 信息概括为 Ai, Bi和 Ci:这些用户会使用中转站 Ai和中转站 Bi进行通讯,公司 可以获益 Ci。(1≤i≤M, 1≤Ai, Bi≤N) THU 集团的 CS&T 公司可以有选择的建立一些中转站(投入成本),为一些 用户提供服务并获得收益(获益之和)。那么如何选择最终建立的中转站才能让 公司的净获利最大呢?(净获利 = 获益之和 – 投入成本之和) 【输入】 输入文件中第一行有两个正整数 N 和 M 。 第二行中有 N 个整数描述每一个通讯中转站的建立成本,依次为 P1, P2, …, PN 。 以下 M 行,第(i + 2)行的三个数 Ai, Bi和 Ci描述第 i 个用户群的信息。 所有变量的含义可以参见题目描述。 【输出】 你的程序只要向输出文件输出一个整数,表示公司可以得到的最大净获利。 【输入样例】 5 5 1 2 3 4 5 1 2 3 2 3 4 1 3 3 1 4 2 4 5 3 【输出样例】 4 【数据范围】 80%的数据中:N≤200,M≤1 000。 100%的数据中:N≤5 000,M≤50 000,0≤Ci≤100,0≤Pi≤100。 【题解】 思路是这样的:先统计理想总获益,再求出最小的损失,理想获益减去损失结果就是最大获利。 总获益就是每个用户群的收益之和。 损失来自于两个方面:一是建立中转站,二是有某个用户群未连接。虚拟一个源点与所有中转站相连,边权为中转站价格;虚拟一个汇点与所有用户群相连,边权为用户群收益;然后中转站和相应的用户群相连,边权为INF。可以证明这张图中每一个割都是一种方案,那么最小割就是损失最小的方案。 【代码】 本蒟蒻用Dinic跑的最小割-最大流,时间略卡QAQ 【NOI2006】最大获利#代码