题干:

链接:https://ac.nowcoder.com/acm/contest/370/E
来源:牛客网

Rinne 喜欢礼物,也喜欢送礼物
圣诞节快到了,Rinne 要去给给住在城市里的人送礼物
城市的交通可以抽象成一个 n 个点 m 条边的有向图
每条边上有 didi 个居民,Rinne 经过这条边的时候就会给她们每个人都送礼物
由于 Rinne 的礼物并不是很多,她只在城市平均居民数最少的路上送礼物
Rinne 不想破坏交通规则,于是她会选择一个能回到出发点的路
由于 Rinne 十分可爱,你需要求出这个平均值

输入描述:

第一个两个整数 n 和 m
接下来 m 行,每行三个整数 u,v,diu,v,di,表示一条从 u 到 v 居民数为 didi 的有向道路。

输出描述:

如果问题无解,也就是 Rinne 找不到一个能回到出发点的道路,则输出一行一个字符串`Rinne is cute`
否则,输出一行一个浮点数,表示平均损失值最小的回路的平均值大小,输出保留两位小数

示例1

输入

复制

2 2
1 2 2
2 1 3

输出

复制

2.50

示例2

输入

复制

2 1
1 2 1

输出

复制

Rinne is cute

备注:

1≤n≤2000,di≤109,m<=50001≤n≤2000,di≤109,m<=5000

解题报告:

首先可以明确的是:如果图不存在环那么肯定无解(因为走不回去啊)。(但是对于这道题,可以直接融合在二分中了,以为你如果没有环,那就ans = -1,直接就输出 “Rinne is cute” 了)

那么我们可以把一种路径的答案表示为:( n 表示经过边的数量)

考虑枚举答案 ans,可以得到判断式,通过移项可以得到

那么每次二分这个答案 ans,然后把所有的边权都减去 ans,找一遍图中有没有负环就可以了。如果有的话说明 ans 还可以更低。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
const double eps = 1e-4;
const double INF = 1e9 + 2333;
int n,m;
double dis[MAX];
struct Edge {int u,v;double w;
} e[MAX],ee[MAX];
bool bell() {for(int i = 1; i<=n; i++) dis[i] = INF;for(int i = 1; i<=n; i++) {for(int j = 1; j<=m; j++) {if(dis[e[j].u] + e[j].w < dis[e[j].v]) {dis[e[j].v] = dis[e[j].u] + e[j].w;}}}for(int j = 1; j<=m; j++) {if(dis[e[j].u] + e[j].w < dis[e[j].v]) return 1;//有负环}return 0 ;
}
bool ok(double x) {for(int i = 1; i<=m; i++) e[i] = ee[i];for(int i = 1; i<=m; i++) e[i].w -= x;bool res = bell();//for(int i = 1; i<=m; i++) e[i].w += x;//还原return res;
}int main()
{cin>>n>>m;double l = 0,r = INF;for(int i = 1; i<=m; i++) {scanf("%d%d%lf",&e[i].u,&e[i].v,&e[i].w);ee[i]=e[i];}double mid = (l+r)/2,ans = -1;while(l+eps < r) {mid = (l+r)/2;if(ok(mid)) r = mid,ans = mid;else l = mid;}if(ans < 0) printf("Rinne is cute\n");else printf("%.2lf\n",ans-eps);return 0 ;}

最后这个答案输出l也对,输出(l+ans)/2也对,,就是直接输出ans不对

【牛客 - 370E】Rinne Loves Gift(Bellman_Ford判负环,二分,分数规划)相关推荐

  1. [APIO2017]商旅——分数优化+floyd+SPFA判负环+二分答案

    题目链接: [APIO2017]商旅 枚举任意两个点$(s,t)$,求出在$s$买入一个物品并在$t$卖出的最大收益. 新建一条从$s$到$t$的边,边权为最大收益,长度为原图从$s$到$t$的最短路 ...

  2. 牛客-紫魔法师(仙人掌染色-判奇环)

    题目链接:https://ac.nowcoder.com/acm/contest/7016/F 博客园食用链接:https://www.cnblogs.com/lonely-wind-/p/13530 ...

  3. 牛客题霸 判断链表中是否有环 C++题解/答案

    牛客题霸 判断链表中是否有环 C++题解/答案 题目描述 判断给定的链表中是否有环 扩展: 你能给出空间复杂度的解法么? 题解: 在这介绍一个简便的方法:快慢指针 就是:一个指针走两步,一个指针走一步 ...

  4. poj 2049(二分+spfa判负环)

    poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...

  5. 【2019icpc南京站网络赛 - H】Holy Grail(最短路,spfa判负环)

    题干: As the current heir of a wizarding family with a long history,unfortunately, you find yourself f ...

  6. BZOJ3597 [Scoi2014]方伯伯运椰子 【二分 + 判负环】

    题目链接 BZOJ3597 题解 orz一眼过去一点思路都没有 既然是流量网络,就要借鉴网络流的思想了 我们先处理一下那个比值,显然是一个分数规划,我们二分一个\(\lambda = \frac{X ...

  7. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)

    BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详(并不)解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多 ...

  8. AcWing 904. 虫洞(SPFA or Djakarta or bellman判负环)

    题目连接 http://poj.org/problem?id=3259 思路 大概是想问我们能不能找到一个负环,那么再看一眼数据范围,500,感觉乱搞都能过,但是出题人很恶心啊,n的范围并不是500, ...

  9. dfs版SPFA判负环

    例题 Description 泡泡鱼是一条调皮的鱼,ta的家住在一片珊瑚礁上.在ta的眼里,这些珊瑚礁的形态可以脑补成一个n个节点,m条边的带权图,在海水的腐蚀下,这些珊瑚礁形成了许多的环,ta想考考 ...

最新文章

  1. springMVC参数绑定与数据回显
  2. 简单总结nodejs处理tcp连接的核心流程
  3. 负起责任、审慎对待论文创新和性能指数,ACM Fellow罗杰波教授分享他的审稿经验...
  4. 【结果很简单,过程很艰辛】记阿里云Ons消息队列服务.NET接口填坑过程
  5. 正则表达式 学习笔记1.3
  6. 第六天 选择与循环语句
  7. C语言 NULL与0 对应的地址
  8. boost::hana::is_subset用法的测试程序
  9. 微软将终止免费的条码标签服务
  10. python字符串用空格切片_Python切片操作去除字符串首尾的空格
  11. ajax请求会阻塞dom,Jquery ajax 同步阻塞引起的UI线程阻塞问题_jquery
  12. 联系——让世界动起来
  13. Linux CAT与ECHO命令详解 <<EOF EOF
  14. python异常处理时所使用的保留字_【2020年12月计算机二级Python语言考试冲刺题(二)】- 环球网校...
  15. 一款轻量的支付宝支付组件
  16. Hive性能调优之推测执行
  17. 对于图片倾斜做矫正处理
  18. 【洛谷P1516】青蛙的约会
  19. 计算机应用技术高数学几本书,高一下学期数学学必修几 学哪几本书
  20. 信号隔离器在PLC/DCS控制系统的应用

热门文章

  1. Some Notes About Design Pattern
  2. 欧几里得算法以及推论
  3. 专业对不对口重要吗_应届生求职,专业对口到底重不重要?
  4. mysql编译安装后目录空_MySQL源码安装完成后修改安装路径启动问题
  5. 1315B. Homecoming
  6. 解决问题的反馈机制_谈谈HBase中的Nonce机制
  7. 初中位似图形作图_[如何画位似图形] 位似图形的画法及步骤
  8. wpf的listbox循环数据滚动_滚动版 CentOS Stream 和 Fedora 的关系
  9. php索引数组相等,php二维数组中子数组的某一键相等,其余键值求和
  10. Asterisk权威指南/第一章 一场电话革命