Parametric MST

[Link](Problem - F - Codeforces)

题意

​ 给你一个nnn个结点的完全图,第iii个点的权重为aia_iai​,对于任意两个点的边权wi,j(t)=aiaj+t(ai+aj)w_{i,j}(t)=a_ia_j+t(a_i+a_j)wi,j​(t)=ai​aj​+t(ai​+aj​),其中ttt是任意一个实数,f(t)是最小生成树的花费f(t)是最小生成树的花费f(t)是最小生成树的花费,问你f(t)f(t)f(t)最小可能是多少。

思路

​ 首先将aaa从小到大排序,设sss为aaa的前缀和,对于ttt非常大,则权值取决于(ai+aj)t(a_i+a_j)t(ai​+aj​)t,则此时权值为(a1∗(n−1)+sn−s1)t(a_1*(n-1)+s_n-s_1)t(a1​∗(n−1)+sn​−s1​)t,若(a1∗(n−1)+sn−s1)>0(a_1*(n-1)+s_n-s_1)>0(a1​∗(n−1)+sn​−s1​)>0则为INFINFINF,同理若ttt是非常小的负数,若(a1∗(n−1)+sn−s1)<0(a_1*(n-1)+s_n-s_1)<0(a1​∗(n−1)+sn​−s1​)<0则为INFINFINF

​ 其它情况我们观察一下式子wi,j(t)=aiaj+t(ai+aj)=(ai+t)(aj+t)−t2w_{i,j}(t)=a_ia_j+t(a_i+a_j)=(a_i+t)(a_j+t)-t^2wi,j​(t)=ai​aj​+t(ai​+aj​)=(ai​+t)(aj​+t)−t2,令bi=ai+tb_i=a_i+tbi​=ai​+t,则权值为wi,j(t)=bibj−t2w_{i,j}(t)=b_ib_j-t^2wi,j​(t)=bi​bj​−t2,令wi,j=bibjw_{i,j}=b_ib_jwi,j​=bi​bj​则f(t)=mst−(n−1)t2f(t)=mst-(n-1)t^2f(t)=mst−(n−1)t2,对于所有的对于任意一个ttt,一定满足[1,i]bi<0[1,i]\ b_i<0[1,i] bi​<0,[i+1,n]bi>0[i+1,n]\ b_i>0[i+1,n] bi​>0,对于bi<0b_i<0bi​<0我们将其和max(bi)max(b_i)max(bi​)相连,对于bi>0b_i>0bi​>0我们将其和min(bi)min(b_i)min(bi​)相连,这样求出来的就是最小值,通过枚举ttt求解即可

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 2e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
LL a[N], sum[N];
int main() {ios::sync_with_stdio(false), cin.tie(0);int T;cin >> T;while (T -- ) {cin >> n;for (int i = 1; i <= n; i ++) cin >> a[i];sort(a + 1, a + 1 + n);for (int i = 1; i <= n; i ++) sum[i] = sum[i - 1] + a[i];if (sum[n] - sum[1] + a[1] * (n - 1) > 0 || sum[n - 1] + a[n] * (n - 1) < 0) {cout << "INF\n";continue ;}LL res = -1e18;for (int i = 1; i <= n; i ++) {LL t = -a[i];LL mx = a[n] + t, mn = a[1] + t;LL ls = sum[i] + i * t, rs = sum[n] - sum[i] + (n - i) * t;res = max(res, ls * mx + rs * mn - mn * mx - (n - 1) * t * t);}cout << res << '\n';                    }return 0;
}

Parametric MST(贪心)相关推荐

  1. Codeforces.888G.Xor-MST(Borůvka算法求MST 贪心 Trie)

    题目链接 \(Description\) 有一张\(n\)个点的完全图,每个点的权值为\(a_i\),两个点之间的边权为\(a_i\ xor\ a_j\).求该图的最小生成树. \(n\leq2*10 ...

  2. CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes)

    A Good Pairs You are given an array a1,a2,-,ana_1,a_2,-,a_na1​,a2​,-,an​ of positive integers. A goo ...

  3. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  4. HDU 1257 - 最少拦截系统 ( LIS / 贪心 )

    题目 现在有一种拦截系统,第一发拦截可以是任意高度,但是之后的拦截高度不能比上次高.为了拦截下所有的炮弹,最少需要准备几套拦截系统? 思路 可能是语文没学好吧,一开始被题意卡了一下.(而且题目连数据范 ...

  5. FZU 2087 统计树边【MST相关】

     Problem 2087 统计树边 Accept: 212    Submit: 651 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Prob ...

  6. 最小生成树(MST)

    最小生成树 包含所有N个节点,N-1条边 没有环 权值之和最小 下图表示一最小生成树,原图于其后面. MST=6 原图 Prim算法 是一种贪心算法,从一个节点出发,找最小边的节点加入. #inclu ...

  7. BZOJ 1821: [JSOI2010]Group 部落划分 Group【MST】

    1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MB Description 聪聪研究发现,荒岛野人总是过着群 ...

  8. 算法设计与分析【第七周】贪心算法 最优装载问题

    最优装载问题 有一批集装箱要装上一艘载重量为c的轮船.其中,集装箱i的重量为Wi. 最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船. 另外,单源最短路径(Dijistra算 ...

  9. 并查集与贪心算法的应用之求解无向图的最小生成树

    一,介绍 本文介绍使用Kruskal算法求解无向图的最小生成树.Kruskal是一个贪心算法,并且使用了并查集这种数据结构. 关于并查集的介绍,参考:数据结构--并查集的原理及实现 二,构造一个无向图 ...

最新文章

  1. PowerPoint中如何插入MP3歌曲
  2. querySelector querySelectorAll
  3. 把文本以图片的形式保存
  4. python3num='0123456789,num「:6:-1」=gt; '987'?「1:6:-1」为空
  5. 个人作业-Week2
  6. 深度学习(11)-- GAN
  7. r语言折线图_R语言基础入门视频教程——语法篇(完结)
  8. deferred initcalls与模块化
  9. 【贪心】【堆】Gym - 101485A - Assigning Workstations
  10. Json对象与Json字符串互转(四种转换方式)
  11. EXCEL 根据超链接直接显示图片
  12. 协议转换器的作用有哪些?
  13. WiFi、蓝牙、NFC哪家强?短距离无线通信技术对比分析
  14. 描写火车站场景_描写车站的优美句子
  15. 魔王逗勇者c语言编程软件,勇者逗魔王游戏下载-勇者逗魔王预约下载 v1.0.5-pc6手游...
  16. 炼石荣登“中国信创500强”榜单
  17. CTF-隐写术(六)
  18. python缩写月份单词_将python缩写的月份名称转换为全名
  19. 东南大学网安学院研究生毕业,就业如何?
  20. 关于UOS系统下打包安装使用的问题总结

热门文章

  1. 关于 Android okhttp 使用 HTTPS 的学习记录
  2. Qt geometry
  3. 拉新、促活、留存、付费转化
  4. 视频显示相关名词解释
  5. 一份DevOps工程师职责清单,待你查阅
  6. 查看Python的安装目录
  7. DB2存储过程入门实例
  8. 数字图像处理实验——图片压缩与解压(opencv)
  9. socket通信之bind函数
  10. OSChina 周五乱弹 ——我的胸,我也找了二十多年了