@description@

给定一个 n 点 m 边的图,边有边权,点有点权。

找到一个连通的诱导子图(选中的点之间的边必须选,选中的边的端点必须选),使得这个子图的密度最大。

密度的定义为:如果边权和为 0,则密度 = 0;否则密度 = 点权和 / 边权和。

Input

第一行两个空格隔开的整数 n (1 ≤ n ≤ 500), m (1 ≤ m ≤ n*(n-1)/2)。

第二行 n 个空格隔开的整数 xi (1 ≤ xi ≤ 10^6),表示每个点的点权。

接下来 m 行,每行三个空格隔开的整数 ai, bi, ci (1 ≤ ai < bi ≤ n; 1 ≤ ci ≤ 10^3),描述了一条边。保证没有重边。

Output

输出一个实数表示答案。

Examples

Input

1 0

1

Output

0.000000000000000

Input

2 1

1 2

1 2 1

Output

3.000000000000000

@solution@

一看还以为是什么 01 分数规划 + 最大闭合权子图。。。

注意这个密度的定义很像平均值,而平均值最值还有另一个解法:min{a, b} <= a 与 b 的平均值 <= max{a, b}。

也就是说最优情况一定只取单个元素。

套个这个题上面,大胆猜测只取一条边最优。

感性证明一下。假如一条边对应的端点点权和为 ai,边权为 bi。

首先有 max{ai/bi, aj/bj} >= (ai + aj)/(bi + bj),可以反证。

那么一个包含多条边的图,对应的密度 (∑ai - delta)/∑bi <= ∑ai/∑bi <= max{ai/bi}。其中 delta 是算重复的点权。

@accepted code@

#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 500;
double x[MAXN + 5], ans;
int main() {
int n, m; scanf("%d%d", &n, &m);
for(int i=1;i<=n;i++) scanf("%lf", &x[i]);
for(int i=1;i<=m;i++) {
int a, b; double c; scanf("%d%d%lf", &a, &b, &c);
ans = max(ans, (x[a] + x[b]) / c);
}
printf("%.9f\n", ans);
}

@details@

偶尔切一切小清新的结论题还是挺开心的~

话说这个比赛场次。。。第 444 场。。。

@codeforces - 444A@ DZY Loves Physics的更多相关文章

  1. Codeforces 444A DZY Loves Physics(图论)

    题目链接:Codeforces 444A DZY Loves Physics 题目大意:给出一张图,图中的每一个节点,每条边都有一个权值.如今有从中挑出一张子图,要求子图联通,而且被选中的随意两点.假 ...

  2. CodeForces 444C. DZY Loves Physics(枚举+水题)

    转载请注明出处:http://blog.csdn.net/u012860063/article/details/37509207 题目链接:http://codeforces.com/contest/ ...

  3. Codeforces Round #254 (Div. 1) A. DZY Loves Physics 智力题

    A. DZY Loves Physics 题目连接: http://codeforces.com/contest/444/problem/A Description DZY loves Physics ...

  4. CF 444C DZY Loves Physics(图论结论题)

    题目链接: 传送门 DZY Loves Chemistry time limit per test1 second     memory limit per test256 megabytes Des ...

  5. Codeforces 444C DZY Loves Colors(线段树)

    题目大意:Codeforces 444C DZY Loves Colors 题目大意:两种操作,1是改动区间上l到r上面德值为x,2是询问l到r区间总的改动值. 解题思路:线段树模板题. #inclu ...

  6. cf444A DZY Loves Physics

    A. DZY Loves Physics time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. CF 444A(DZY Loves Physics-低密度脂蛋白诱导子图)

    A. DZY Loves Physics time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. CodeForces 445B DZY Loves Chemistry

    DZY Loves Chemistry Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  9. CodeForces 445B. DZY Loves Chemistry(并查集)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://codeforces.com/problemset/prob ...

随机推荐

  1. 【vue】imitate-beautiful-thing

    我从未见过这么美妙的项目,当然与我接触的项目少有关,但是这个项目满满的艺术气息,让人沉醉,让人忍不住的去研究代码. 先放项目地址:https://github.com/eidonlon/imitate ...

  2. TZ_09_自定义Spring-security

    1.Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架 2.安全包括两个主要操作. “认证”,是为用户建立一个他所声明的主体 ...

  3. uni-app开发的应用(小程序,app,web等),使用Node+Koa2开发的后端程序接收上传文件的方法

    uni-app使用使用Node+Koa2开发的后端程序接收上传的文件 通过gitbook浏览此随笔 通过其它客户端上传(h5,小程序等),接收方法一致 使用koa接收时,我们需安装一个中间件koa-b ...

  4. 原生JS上传,实现预览并且兼容大部分IE

    // 前提条件: ie浏览器模式下,用户要允许ie默认的加载项:以下兼容ie的方法才会生效 // 图片上传预览 IE是用了滤镜 function previewImage(file) { var MA ...

  5. Ubuntu18.04 磁盘挂载在某目录下

    简介 记录Ubuntu18.04 桌面版系统下实现某个磁盘挂载到自己想要的目录下,内容参考网上教程,此处为自己操作记录. 查看当前所有的磁盘信息 命令:sudo fdisk -l 从列出的信息中可以看 ...

  6. python使用cPickle模块序列化实例

    python使用cPickle模块序列化实例 这篇文章主要介绍了python使用cPickle模块序列化的方法,是一个非常实用的技巧,本文实例讲述了python使用cPickle模块序列化的方法,分享 ...

  7. SpringCloud微服务实战一:Spring Cloud Eureka 服务发现与注册中心(高可用实列为两个注册中心)

    微服务架构: 微服务架构的核心思想是,一个应用是由多个小的.相互独立的.微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖.不同服务通过一些轻量级交互机制来通信,例如 RPC.HTTP 等, ...

  8. iTerm2+oh-my-zsh配色

      效果图,很帅气有木有 一.首先安装iTem2 安装好后的截图如下:   安装好后的截图 二.安装oh-my-zsh. sh -c "$(curl -fsSL https://raw.gi ...

  9. springMVC的功能和优点

    spring MVC是一个分层的java web开发框架,MVC模式提供了一个分层的体系结构,其中每一层对其它层进行了抽象,具体如下: 1.模型(Model):应用程序所使用的特定域信息的表现形式 2 ...

  10. ML面试1000题系列(21-30)

    本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 21.请简要说说EM算法. @tornadome ...