P2868
Sightseeing Cows G
我们先考虑如何求平均乐趣值。
1.总乐趣为 \(\sum^n_{i = 1}f_i \times s_i\),其中 \(f_i\) 为第 \(i\) 个点的乐趣值,\(s_i\) 表示选不选。
2.路径是个环,总长度为 \(\sum^n_{i = 1}e_i \times s_i\) 其中 \(e_i\) 为从点 \(i\) 出发所走的边。
所以最大平均乐趣值就是 \(\max \dfrac{\sum^n_{i = 1}f_i \times s_i}{\sum^n_{i = 1}e_i \times s_i}\)。
于是就是 \(0/1\) 分数规划了。当然我们在处理时需要把整个式子 \(\times -1\),因为 SPFA 在处理负环时无法计算出一条大于 \(0\) 的路径。
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e4 + 10,maxm = 5e4 + 5;
struct edge
{
int to,nxt;
double w;
}e[maxm << 1];
int head[maxm],tot;
void add_edge(int u,int v,double w)
{
e[++tot].nxt = head[u];
head[u] = tot;
e[tot].to = v;
e[tot].w = w;
}
double dis[maxn];
int f[maxn],u[maxm],v[maxm],w[maxm];
int num[maxn];
int n,m;
void init()
{
memset(head,0,sizeof(head));
tot = 0;
}
bool vis[maxn];
bool spfa(int s)
{
queue<int> q;
for(int i = 1;i <= n;i++)
{
q.push(i);
dis[i] = 0;
vis[i] = num[i] = 1;
}
while(!q.empty())
{
int u = q.front();
q.pop();
vis[u] = 0;
for(int i = head[u];i;i = e[i].nxt)
{
int v = e[i].to;
if(dis[v] > dis[u] + e[i].w)
{
dis[v] = dis[u] + e[i].w;
if(!vis[v])
{
q.push(v);
vis[v] = 1;
if(++num[v] >= n)
{
return 1;
}
}
}
}
}
return 0;
}
bool check(double x)
{
init();
for(int i = 1;i <= m;i++)
{
add_edge(u[i],v[i],x * w[i] - f[u[i]]);
}
return spfa(1);
}
int main()
{
cin >> n >> m;
double l = 0,r = 0;
for(int i = 1;i <= n;i++)
{
cin >> f[i];
r += f[i];
}
for(int i = 1;i <= m;i++)
{
cin >> u[i] >> v[i] >> w[i];
}
while(r - l > 1e-5)
{
double mid = l + (r - l) / 2;
if(check(mid))
{
l = mid;
}
else
{
r = mid;
}
}
printf("%.2lf",l);
return 0;
}
P2868的更多相关文章
- P2868 [USACO07DEC]观光奶牛Sightseeing Cows
P2868 [USACO07DEC]观光奶牛Sightseeing Cows [](https://www.cnblogs.com/images/cnblogs_com/Tony-Double-Sky ...
- 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows
P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题目描述 Farmer John has decided to reward his cows for their har ...
- 递归型SPFA判负环 + 最优比例环 || [Usaco2007 Dec]奶牛的旅行 || BZOJ 1690 || Luogu P2868
题外话:最近差不多要退役,复赛打完就退役回去认真读文化课. 题面:P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解:最优比例环 题目实际是要求一个ans,使得对于图中 ...
- 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows(01分数规划)
题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\ ...
- 【洛谷P2868】Sightseeing Cows
题目大意:给定一个 N 个点,M 条边的有向图,点有点权,边有边权,求该有向图中的一个环,使得环上点权和与环上边权和之比最大. 题解:0/1 分数规划思想,每次二分一个 mid,在新图上跑 spfa, ...
- 洛谷P2868 [USACO07DEC]观光奶牛 Sightseeing Cows
题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...
- 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows
题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...
- 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解
题面 这道题是一道标准的01分数规划: 但是有一些细节可以优化: 不难想到要二分一个mid然后判定图上是否存在一个环S,该环是否满足∑i=1t(Fun[vi]−mid∗Tim[ei])>0 但是 ...
- P2868 [USACO07DEC]Sightseeing Cows G
题意描述 Sightseeing Cows G 给定一张有向图,图中每个点都有点权 \(a_i\),每条边都有边权 \(e_i\). 求图中一个环,使 "环上个点权之和" 除以 & ...
- POJ3621:Sightseeing Cows——题解
http://poj.org/problem?id=3621 全文翻译参自洛谷:https://www.luogu.org/problemnew/show/P2868 题目大意:一个有向图,每个点都有 ...
随机推荐
- 文件上传之Webshell连接方法
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" Websh ...
- Java实现查看手机配置与功能
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 `` ...
- 基于Delta lake、Hudi格式的湖仓一体方案
简介: Delta Lake 和 Hudi 是流行的开放格式的存储层,为数据湖同时提供流式和批处理的操作,这允许我们在数据湖上直接运行 BI 等应用,让数据分析师可以即时查询新的实时数据,从而对您的 ...
- Alibaba FFI -- 跨语言编程的探索
简介: 跨语言编程时现代程序语言中非常重要的一个方向,也被广泛应用于复杂的设计与实现中. 跨语言编程是现代程序语言中非常重要的一个方向,也被广泛应用于复杂系统的设计与实现中.本文是 GIAC 202 ...
- [FAQ] gormV2 Too many connections
gormV2 中不再有v1的 db.Close() 方法. 取而代之的 close 方式是如下: sqlDB, err := DB.DB() sqlDB.Close() https://github. ...
- [Go] Viper 加载项目配置,go build 打包配置文件进二进制
Viper 的传统用法局部,加载到某个 package 下的全局变量后,其它 package 可以继续使用. var Conf *viper.Viper func init() { // File n ...
- Java设计模式-观察者模式-SpringBoot实现
观察者模式 项目:https://gitee.com/KakarottoChen/blog-code.git 的:JavaSpringListener 一.Java观察者模式 Java观察者模式是一种 ...
- Java数字转中文数字——支持:Integer、BigDecimal
1.效果 public static void main(String[] args) { System.out.println(int2chineseNum(3456)); System.out.p ...
- Gem离线包安装
Gem离线包安装 项目环境 以 rest-client 为例 本地如果是rails项目环境: ruby '2.7.0' gem 'rails', '~> 6.0.3', '>= 6.0.3 ...
- Git/SourceTree版本管理
目录 视频课程: 工作区: 文件状态: 回退版本: 合并分支 合并提交 冲突 删除分支 忽略文件 汉英对照表 多端同步 添加远程仓库 推送代码到远程仓库 拉取代码 视频课程: https://www. ...