水牛城66有看点不_acwing是什么

水牛城66有看点不_acwing是什么给定一张 L 个点、P 条边的有向图,每个点都有一个权值 f[i],每条边都有一个权值 t[i]。求图中的一个环,使“环上各点的权值之和”除以“环上各边的权值之和”最大。输出这个最大值。注意:数据保证至少存在一个环。输入格式第一行包含两个整数 L 和 P。接下来 L 行每行一个整数,表示 f[i]。再接下来 P 行,每行三个整数 a,b,t[i],表示点 a 和 b 之间存在一条边,边的权值为 t[i]。输出格式输出一个数表示结果,保留两位小数。数据范围2≤L≤1000,2≤P≤50

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定一张 L 个点、P 条边的有向图,每个点都有一个权值 f[i],每条边都有一个权值 t[i]。

求图中的一个环,使“环上各点的权值之和”除以“环上各边的权值之和”最大。

输出这个最大值。

注意:数据保证至少存在一个环。

输入格式
第一行包含两个整数 L 和 P。

接下来 L 行每行一个整数,表示 f[i]。

再接下来 P 行,每行三个整数 a,b,t[i],表示点 a 和 b 之间存在一条边,边的权值为 t[i]。

输出格式
输出一个数表示结果,保留两位小数。

数据范围
2≤L≤1000,
2≤P≤5000,
1≤f[i],t[i]≤1000

输入样例:
5 7
30
10
10
5
10
1 2 3
2 3 2
3 4 5
3 5 2
4 5 5
5 1 3
5 2 2
输出样例:
6.00

题解
0/1规划

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N = 1e3 + 10;
const int M = 5e4 + 10;
const double eps = 1e-6;
int value[N];
struct Edge{ 

int v,w,next;
}edge[M];
int head[N],c;
void add(int u,int v,int w){ 

edge[c].v = v;
edge[c].w = w;
edge[c].next = head[u];
head[u] = c ++;
}
int q[N],hh = 0,tt = 0;
int vis[N],cnt[N];
double dist[N];
bool check(double mid){ 

memset(vis,0,sizeof vis);
memset(cnt,0,sizeof cnt);
tt = hh = 0;
for(int i = 1;i <= n;i ++){ 

q[tt ++] = i;
vis[i] = true;
}
while(hh != tt){ 

int t = q[hh ++];
if(hh == N)hh = 0;
vis[t] = false;
for(int i = head[t];~i;i = edge[i].next){ 

int v = edge[i].v;
double w = value[t] - mid * edge[i].w;
if(dist[v] < dist[t] + w){ 

dist[v] = dist[t] + w;
cnt[v] = cnt[t] + 1;
if(cnt[v] >= n)return true;
if(!vis[v]){ 

vis[v] = true;
q[tt ++] = v;
if(tt == N)tt = 0;
}
}
}
}
return false;
}
int main(){ 

cin>>n>>m;
int x,y,w;
memset(head,-1,sizeof head);
for(int i = 1;i <= n;i ++)cin>>value[i];
for(int i = 0;i < m;i ++){ 

cin>>x>>y>>w;
add(x,y,w);
}
double l = 0.0,r = 1010;
while(r - l > 1e-4){ 

double mid = (l + r) / 2;
if(check(mid))l = mid;
else r = mid;
}
printf("%.2lf\n",l);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168624.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 集群技术概述_集群计算机

    集群技术概述_集群计算机集群技术概述一、集群的起源二、集群的优点1.强扩展能力2.实现方式容易3.高可用性4.易管理性三、集群的类型1.负载均衡集群2.高可用性集群3.高性能集群四、集群的特点1.心跳监测2.漂移IP地址五、集群的应用1.石油地震数据处理2.数值天气预报一、集群的起源        集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直

  • 快速搭建个人博客——保姆级教程「建议收藏」

    文章目录序言本地网站开发工具WebStormVscode框架Hexo(强烈推荐)WordPress本地环境gitnode.jsHexo安装初始化主题样式Butterfly应用正式上线图床Butterfly配置GitHubPages配置服务器选购攻略阿里云学生专享活动专享腾讯云学生专享活动专享域名购买DNS解析添加域名添加解析记录服务器购买部署密码设定远程连接git配置安装NginxHexo配置修改备案ICP联网备案序言偶然间,看到某乎上高赞的一个问题:怎么证明下计算机专业学生的能力?问题下面呢,也是有

  • C语言中open函数「建议收藏」

    C语言中open函数「建议收藏」作用:打开和创建文件。  简述:  #include  intopen(constchar*pathname,intoflag,…/*mode_tmode*/);  返回值:成功则返回文件描述符,否则返回-1  对于open函数来说,第三

  • 海思AI芯片(Hi3516DV300/CV500)开发(1.资料介绍)「建议收藏」

    海思AI芯片(Hi3516DV300/CV500)开发(1.资料介绍)「建议收藏」目录1、SVP资料介绍1.1SVP简介1.2开发框架1.3开发流程2、Hi3516DV300/CV500SDK内容介绍1、SVP资料介绍1.1SVP简介SVP(SmartVisionPlatform)是海思媒体处理芯片智能视觉异构加速平台。该平台包含了CPU、DSP、NNIE(NeuralNetworkInferenceEngine)等多个…

  • Qt OpenGL教程[通俗易懂]

    原文:http://qiliang.net/old/nehe_qt/QtOpenGL教程最近一段时间除了学习Qt,翻译Qt文档之外,由于工作和兴趣的原因,开始着手看QtOpenGL编程。在网上搜索了有关OpenGL的教程,发现NeHe的OpenGL教程的还很不错,作者是NeHe。上面有很多种语言的实现,但是没有Qt和Gtk的,所以我就想着手写这个QtOp

  • SpringBoot使用Websocket(一)

    SpringBoot使用Websocket(一)webSocket是HTML5的一种新协议,它实现了服务端与客户端的全双工通信,建立在传输层,tcp协议之上,即浏览器与服务端需要先建立tcp协议,再发送webSocket连接建立请求。webSocket的连接:客户端发送请求信息,服务端接受到请求并返回相应的信息。连接建立。客户端发送http请求时,通过Upgrade:webSocketConnection:Upgrade告知服务器需要建…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号