Luogu 2868 [USACO07DEC]观光奶牛Sightseeing Cows
01分数规划复习。
这东西有一个名字叫做最优比率环。
首先这个答案具有单调性,我们考虑如何检验。
设$\frac{\sum_{i = 1}^{n}F_i}{\sum_{i = 1}^{n}T_i} = e$,我们需要检验的就是$\sum_{i = 1}^{n}(F_i - mid * T_i) \geq 0$是否存在。
感觉这玩意不好算,再变形一下:$\sum_{i = 1}^{n}(e * T_i - F_i) < 0$,就变成一个负环的检验了。
$F_i$应当可以任取一条有向边的入点和出点。
注意二分时的边界问题。
时间复杂度$O(logn (spfa???))$。
Code:
#include <cstdio>
#include <cstring>
using namespace std;
typedef long double db; const int N = ;
const int M = ;
const db inf = 1e10;
const db eps = 1e-; int n, m, tot = , head[N];
db dis[N], a[N];
bool vis[N], ex; struct Edge {
int to, nxt;
db val;
} e[M]; inline void add(int from, int to, db val) {
e[++tot].to = to;
e[tot].val = val;
e[tot].nxt = head[from];
head[from] = tot;
} template <typename T>
inline void chkMax(T &x, T y) {
if(y > x) x = y;
} template <typename T>
inline void chkMin(T &x, T y) {
if(y < x) x = y;
} void dfs(int x, db mid) {
if(ex) return;
vis[x] = ;
for(int i = head[x]; i; i = e[i].nxt) {
int y = e[i].to;
if(dis[y] > dis[x] + mid * e[i].val - a[y]) {
dis[y] = dis[x] + mid * e[i].val - a[y];
if(vis[y]) {
ex = ;
return;
}
dfs(y, mid);
}
}
vis[x] = ;
} inline bool chk(db mid) {
for(int i = ; i <= n; i++) {
dis[i] = 0.0;
vis[i] = ;
}
ex = ; for(int i = ; i <= n; i++) {
dfs(i, mid);
if(ex) break;
} return ex;
} int main() {
scanf("%d%d", &n, &m);
db ln = 0.0, rn = 0.0, mid, res;
for(int i = ; i <= n; i++) scanf("%Lf", &a[i]);
for(int i = ; i <= m; i++) {
int x, y; db v;
scanf("%d%d%Lf", &x, &y, &v);
add(x, y, v);
rn += v;
} for(; ln + eps <= rn; ) {
mid = (ln + rn) * 0.5;
if(chk(mid)) ln = mid, res = mid;
else rn = mid;
} printf("%.2Lf\n", res);
return ;
}
Luogu 2868 [USACO07DEC]观光奶牛Sightseeing Cows的更多相关文章
- POJ3621或洛谷2868 [USACO07DEC]观光奶牛Sightseeing Cows
一道\(0/1\)分数规划+负环 POJ原题链接 洛谷原题链接 显然是\(0/1\)分数规划问题. 二分答案,设二分值为\(mid\). 然后对二分进行判断,我们建立新图,没有点权,设当前有向边为\( ...
- 洛谷 2868 [USACO07DEC]观光奶牛Sightseeing Cows
题目戳这里 一句话题意 L个点,P条有向边,求图中最大比率环(权值(Fun)与长度(Tim)的比率最大的环). Solution 巨说这是0/1分数规划. 话说 0/1分数规划 是真的难,但貌似有一些 ...
- 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 ...
- 洛谷P2868 [USACO07DEC]观光奶牛 Sightseeing Cows
题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...
- [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分数规划)
题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\ ...
- 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解
题面 这道题是一道标准的01分数规划: 但是有一些细节可以优化: 不难想到要二分一个mid然后判定图上是否存在一个环S,该环是否满足∑i=1t(Fun[vi]−mid∗Tim[ei])>0 但是 ...
随机推荐
- win键盘映射成mac键盘
在win7系统下安装了mac虚拟机,mac的快捷键与win的键盘不一样,所以ctrl+c,ctrl+v都用不了,于是找方法映射. 搜索到 keyremap4macbook,,进到官网Karabiner ...
- python 的os的总结
转:http://www.cnblogs.com/BeginMan/p/3327291.html
- 手把手使用 Webpack 4 建立 VUE 项目
手把手使用 Webpack 4 建立 VUE 项目 安装 node.js 略 安装 cnpm 略 安装 webpack cnpm install webpack -g 安装 vue-cli cnpm ...
- Java文件压缩优化工具(ProGuard) 软件介绍 Soft content
ProGuard是一款免费的Java类文件的压缩.优化.混肴器.它可以帮你删除没用的类,字段,方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类.字段和方法 .目前eclipse已经 ...
- EditText动态转换只读/编辑状态
public class MyActivity extends Activity { private KeyListener listener; private EditText editText; ...
- Linux Samba目录服务搭建与Java客户端访问
前言: 本文比较简略,只求快速入门,若要了解详情,推荐一篇文章:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 1,安装sa ...
- Java-Maven-Runoob:Maven 自动化部署
ylbtech-Java-Maven-Runoob:Maven 自动化部署 1.返回顶部 1. Maven 自动化部署 项目开发过程中,部署的过程包含需如下步骤: 将所的项目代码提交到 SVN 或者代 ...
- 融云rongCloud聊天室的使用
融云提供了两种途径的接口, 一个是app端,一个是服务器端的. app端 1.连接融云,监听消息 rong = api.require('rongCloud2'); rong.init(functio ...
- oracle 11g r2 rac +openfiler 2.99 +centos 6.5+vbox
继上篇openfiler 2.99安装之后,这一篇讲介绍openfiler的存储配置和oracle 端的服务配置 参考文档:https://www.oracle.com/technetwork/cn/ ...
- node.js的了解
在node环境上面运行js代码,js相当于php,node相当于apache环境 第一步装 node 环境1.从官网下载 dmg 文件安装 2.通过命令行安装 需要用到 homebrew(mac上专门 ...