P2868 [USACO07DEC]观光奶牛Sightseeing Cows
P2868 [USACO07DEC]观光奶牛Sightseeing Cows

错误日志: dfs 判负环没有把初值赋为 \(0\) 而是 \(INF\), 速度变慢
Solution
设现在走到了一个环, 环内有 \(n\) 个点, \(n\) 条边, 点权为 \(f_{i}\), 边权为 \(e_{i}\)
设 \(k = \sum_{i = 1}^{n}\frac{f_{i}}{e_{i}}\), 显然是 0/1分数规划模型, 变形可得: \(\sum_{i = 1}^{n}f_{i} - k * ei \geq 0\) 时 \(k\) 合法
此式不太好判断, 我们在不等式两边乘上 \(-1\), 得 \(\sum_{i = 1}^{n}k * e_{i} - f_{i} \leq 0\) ,转换为图中负环的判定
若存在负环则此 \(k\) 合法
二分求解0/1分数规划即可
求负环的时候, 初始距离全部设为 \(0\)
如果有负环的话此个距离 \(0\) 肯定能变得更小, 赋0可以减少更新量, 加快效率
Code
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#define LL long long
#define REP(i, x, y) for(int i = (x);i <= (y);i++)
using namespace std;
int RD(){
int out = 0,flag = 1;char c = getchar();
while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
return flag * out;
}
const int maxn = 2019,INF = 1e9, maxv = 20019;;
int head[maxn],nume = 1;
struct Node{
int v,dis,nxt;
}E[maxv << 3];
void add(int u,int v,int dis){
E[++nume].nxt = head[u];
E[nume].v = v;
E[nume].dis = dis;
head[u] = nume;
}
int num, nr;
double f[maxn];//愉♂悦值
double d[maxn];
bool ins[maxn], vis[maxn], flag;
void SPFA_dfs(int u, double k){
ins[u] = 1, vis[u] = 1;
for(int i = head[u];i;i = E[i].nxt){
int v = E[i].v;
double dis = E[i].dis;
if(d[u] + k * dis - f[v] <= d[v]){
if(ins[v] || flag){flag = 1;return ;}
d[v] = d[u] + k * dis - f[v];
SPFA_dfs(v, k);
}
}
ins[u] = 0;
}
bool check(double k){
REP(i, 1, num)d[i] = 0, vis[i] = 0, ins[i] = 0;
flag = 0;
REP(i, 1, num){
if(!vis[i])d[i] = 0, SPFA_dfs(i, k);
if(flag)return 1;
}
return flag;
}
double search(double l, double r){
double ans;
while(r - l >= 1e-3){
double mid = (l + r) / 2;
if(check(mid))ans = mid, l = mid;
else r = mid;
}
return ans;
}
double maxx = 0;
int main(){
num = RD(), nr = RD();
REP(i, 1, num)f[i] = RD(), maxx += f[i];
REP(i, 1, nr){
int u = RD(), v = RD(), dis = RD();
add(u, v, dis);
}
printf("%.2lf\n", search(0, maxx));
return 0;
}
P2868 [USACO07DEC]观光奶牛Sightseeing Cows的更多相关文章
- 洛谷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 ...
- 洛谷 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 但是 ...
- [USACO07DEC]观光奶牛Sightseeing Cows 二分答案+判断负环
题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...
- POJ3621或洛谷2868 [USACO07DEC]观光奶牛Sightseeing Cows
一道\(0/1\)分数规划+负环 POJ原题链接 洛谷原题链接 显然是\(0/1\)分数规划问题. 二分答案,设二分值为\(mid\). 然后对二分进行判断,我们建立新图,没有点权,设当前有向边为\( ...
- Luogu 2868 [USACO07DEC]观光奶牛Sightseeing Cows
01分数规划复习. 这东西有一个名字叫做最优比率环. 首先这个答案具有单调性,我们考虑如何检验. 设$\frac{\sum_{i = 1}^{n}F_i}{\sum_{i = 1}^{n}T_i} = ...
- 洛谷 2868 [USACO07DEC]观光奶牛Sightseeing Cows
题目戳这里 一句话题意 L个点,P条有向边,求图中最大比率环(权值(Fun)与长度(Tim)的比率最大的环). Solution 巨说这是0/1分数规划. 话说 0/1分数规划 是真的难,但貌似有一些 ...
随机推荐
- ECMAScript6——异步操作之Promise
Promise对象的参数为一个回调函数,这个回调函数有两个参数,分别是resolve, reject(这俩参数的名字可任取),resolve,reject分别表示异步操作执行成功后的回调函数和异步操作 ...
- 设计模式 笔记 解释器模式 Interpreter
//---------------------------15/04/26---------------------------- //Interpreter 解释器模式----类行为型模式 /* 1 ...
- Android几行代码实现监听微信聊天
原创作品,转载请注明出处,尊重别人的劳动果实. 2017.2.7更新: *现在适配微信版本更加容易了,只需要替换一个Recourse-ID即可 *可以知道对方发的是小视频还是语音,并获取秒数. *可以 ...
- win10+anaconda3+python3.6+opencv3.1.0
最近用windows系统比较多,就想在win10下搞一下深度学习这一方面的研究,那么就需要配置好环境巴拉巴拉的一堆东西.默默记个笔记,正所谓“好记性不如烂笔头”. 1.安装Anaconda 这个是一个 ...
- Unity 2D相机公式换算(从其他博客上抄的)
2d camera, unit坐标,单位换算 2d游戏可以使用平行投影的camera,这种camera需要设置size (orthographicSize),size的含义为屏幕高度的一半,不过单位不 ...
- Unity实现简单的AR
,本篇是我在博客园上第一次写随笔,有什么不对或者问题可以在评论区留言告诉我哈! 关于AR(增强现实技术(Augmented Reality))简单的概念,在这里就不说了,有兴趣的同学可以上网详细了解, ...
- A1043 Is It a Binary Search Tree (25 分)
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...
- 实验吧CTF天网管理系统
天网你敢来挑战嘛 格式:ctf{ } 解题链接: http://ctf5.shiyanbar.com/10/web1/ 打开链接后,嗯,光明正大的放出账号密码,肯定是登不进的,查看源代码 看来是和md ...
- 微软职位内部推荐-Software Development Engineer II_Commerce
微软近期Open的职位: Are you looking for a high impact project that involves processing of billions of dolla ...
- [!] CocoaPods could not find compatible versions for pod "Folly"问题举例
$ pod install 后出现下面错误: [!] CocoaPods could not find compatible versions for pod "Folly": I ...