题目戳这里

一句话题意

L个点,P条有向边,求图中最大比率环(权值(Fun)与长度(Tim)的比率最大的环)。

Solution

巨说这是0/1分数规划。

话说 0/1分数规划 是真的难,但貌似有一些规律,总是离不开一个二分和带mid的不等式。

记环S=({vi},{ei}), 其中{vi}为环上结点的集合,{ei}为环上的边的集合

我们先分析一波公式:不过是要求\(\sum_{i=1}^{t}Fun[v[i]]/\sum_{i=1}^{t}Tim[e[i]]>mid\) 最小

不难想到要二分一个mid然后判定图上是否存在一个环S

使得

\[\sum_{i=1}^{t}Fun[e[i]]+\sum_{i=1}^{t}Tim[v[i]]>0
\]

也相当于判断

\[\sum_{i=1}^{t}{Fun[vi​]−mid∗Tim[ei​]}>0
\]

因为每个点有许多条出边,这样很难处理,但是每条边都只有一个连向的点,所以我们把左右两边都乘以-1,将对点的处理转变成对边的处理:

\[\sum_{i=1}^{t}mid∗Tim[ei​]-Fun[v[i]]<0
\]

那么思路便很明显了,对于每一个二分出来的mid,都跑一遍SPFA,而边权就是 mid*长度-连向点的点权,若有负环则L=mid,否则R=mid, 直到达到精度要求。

Coding

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4;
int vis[N],num[N],cnt,head[N],n,m;
double f[N],dis[N];
struct road
{
int to,next;
double t;
}e[N*10];
void add(int x,int y,double w)
{
cnt++;
e[cnt].to=y;
e[cnt].next=head[x];
e[cnt].t=w;
head[x]=cnt;
}
bool check(double mid)
{
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].next)
{
int v=e[i].to;
if(dis[v]>dis[u]+mid*e[i].t-f[u])
{
dis[v]=dis[u]+mid*e[i].t-f[u];
if(!vis[v])
{
q.push(v);
vis[v]=1;
num[v]++;
if(num[v]>=n) return 1;
}
}
}
}
return 0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>f[i];
for(int i=1;i<=m;i++)
{
int x,y;
double w;
cin>>x>>y>>w;
add(x,y,w);
}
double mid,l=0,r=1000;
while(r-l>0.0001)
{
mid=(l+r)/2;
//printf("%lf %lf\n",l,r);
if(check(mid)) l=mid;
else r=mid;
}
printf("%.2lf",l);
return 0;
}

洛谷 2868 [USACO07DEC]观光奶牛Sightseeing Cows的更多相关文章

  1. POJ3621或洛谷2868 [USACO07DEC]观光奶牛Sightseeing Cows

    一道\(0/1\)分数规划+负环 POJ原题链接 洛谷原题链接 显然是\(0/1\)分数规划问题. 二分答案,设二分值为\(mid\). 然后对二分进行判断,我们建立新图,没有点权,设当前有向边为\( ...

  2. 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows

    P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题目描述 Farmer John has decided to reward his cows for their har ...

  3. 洛谷P2868 [USACO07DEC]观光奶牛 Sightseeing Cows

    题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...

  4. 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows

    题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...

  5. 洛谷P2868 [USACO07DEC]观光奶牛Sightseeing Cows(01分数规划)

    题意 题目链接 Sol 复习一下01分数规划 设\(a_i\)为点权,\(b_i\)为边权,我们要最大化\(\sum \frac{a_i}{b_i}\).可以二分一个答案\(k\),我们需要检查\(\ ...

  6. 洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解

    题面 这道题是一道标准的01分数规划: 但是有一些细节可以优化: 不难想到要二分一个mid然后判定图上是否存在一个环S,该环是否满足∑i=1t(Fun[vi]−mid∗Tim[ei])>0 但是 ...

  7. Luogu 2868 [USACO07DEC]观光奶牛Sightseeing Cows

    01分数规划复习. 这东西有一个名字叫做最优比率环. 首先这个答案具有单调性,我们考虑如何检验. 设$\frac{\sum_{i = 1}^{n}F_i}{\sum_{i = 1}^{n}T_i} = ...

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

    P2868 [USACO07DEC]观光奶牛Sightseeing Cows [](https://www.cnblogs.com/images/cnblogs_com/Tony-Double-Sky ...

  9. [USACO07DEC]观光奶牛Sightseeing Cows 二分答案+判断负环

    题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...

随机推荐

  1. 2016集训测试赛(十九)Problem A: 24点大师

    Solution 这到题目有意思. 首先题目描述给我们提供了一种非常管用的模型. 按照题目的方法, 我们可以轻松用暴力解决20+的问题; 关键在于如何构造更大的情况: 我们发现 \[ [(n + n) ...

  2. Using CLEAR_BLOCK To Prevent Save Confirmation Dialogs In Oracle Forms

    Clear_Block built-in clears all records from the current data block and if the user had made some ch ...

  3. ThinkPHP模板包含功能(转载)

    对于一些有共同属性的页面(如页脚),可以单独制作成一个模板,再利用 ThinkPHP 提供的模板包含功能包含进来.这样,当要修改这些公共页面时,只需修改对应的模板即可而不必修改每一个页面.模板的包含使 ...

  4. uiaotumator ui測试 高速调试

    1. uiaotumator ui測试 Demo.java package uiautomatorDemo1; import java.io.File; import android.graphics ...

  5. nginx rewrite arg 带问号的地址转发参数处理?Nginx重定向的参数问题

    Nginx重定向的参数问题 在给某网站写rewrite重定向规则时,碰到了这个关于重定向的参数处理问题.默认的情况下,Nginx在进行rewrite后都会自动添加上旧地址中的参数部分,而这对于重定向到 ...

  6. maven仓库中有jar包pom还报错

    maven仓库中有jar包pom还报错 就报错,咋啦? 这个包来源不明,自己拷贝进来的吧?你当我mvn是傻子?我要去网上验证一下: 我自己有个_remote.respositories文件,如果自己用 ...

  7. maven 配置jetty插件

    <build>        <finalName>shiroweb</finalName>        <plugins>            & ...

  8. 移植MonkeyRunner的图片对照和获取子图功能的实现-UiAutomator/Robotium篇

    依据前一篇文章<移植MonkeyRunner的图片对照和获取子图功能的实现-Appium篇>所述,由于Appium和MonkeyRunner有一个共同点--代码控制流程都是在client实 ...

  9. CentOS下配置iptables防火墙 linux NAT(iptables)配置

    CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/syscon ...

  10. $ is not defined

    $ is not defined 引入Jquery的顺序不正确,要把它放在第一个引入