【POJ3621】Sightseeing Cows 分数规划
【POJ3621】Sightseeing Cows
题意:在给定的一个图上寻找一个环路,使得总欢乐值(经过的点权值之和)/ 总时间(经过的边权值之和)最大。
题解:显然是分数规划,二分答案ans,将每条边的权值变成(ans*边权-2*起始点点权),然后我们希望找出一个环,使得环上的总边权<0
(一开始我把题意理解错了,题中给的是单向边,我把它当成是双向边+每条边只能走一次了~,想出一堆做法都接连pass掉)
然后就直接用SPFA判负环就好了嘛!由于原图不一定联通,所以一开始就把所有点都入队就完事了
- #include <cstdio>
- #include <iostream>
- #include <queue>
- #include <cstring>
- using namespace std;
- int n,m,cnt;
- int f[1010],to[10010],next[10010],head[1010];
- int pa[5010],pb[5010],pt[5010],len[1010],inq[1010];
- double dis[1010],val[10010];
- queue<int> q;
- void add(int a,int b,double c)
- {
- to[cnt]=b,val[cnt]=c,next[cnt]=head[a],head[a]=cnt++;
- }
- int solve(double sta)
- {
- memset(head,-1,sizeof(head));
- memset(len,0,sizeof(len));
- cnt=0;
- int i,u;
- for(i=1;i<=m;i++) add(pa[i],pb[i],sta*pt[i]-f[pa[i]]);
- while(!q.empty()) q.pop();
- for(i=1;i<=n;i++) q.push(i),dis[i]=0.0,len[i]=1;
- while(!q.empty())
- {
- u=q.front(),q.pop(),inq[u]=0;
- for(i=head[u];i!=-1;i=next[i])
- {
- if(dis[to[i]]>dis[u]+val[i]+1e-4)
- {
- dis[to[i]]=dis[u]+val[i];
- len[to[i]]=len[u]+1;
- if(len[to[i]]>n) return 1;
- if(!inq[to[i]])
- {
- inq[to[i]]=1;
- q.push(to[i]);
- }
- }
- }
- }
- return 0;
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- int i,a,b,c;
- double l=0.0,r=0.0,mid;
- for(i=1;i<=n;i++) scanf("%d",&f[i]),r=max(r,1.0*f[i]);
- for(i=1;i<=m;i++) scanf("%d%d%d",&pa[i],&pb[i],&pt[i]);
- while(r-l>1e-4)
- {
- mid=(l+r)*0.5;
- if(solve(mid)) l=mid;
- else r=mid;
- }
- printf("%.2f",l);
- return 0;
- }
【POJ3621】Sightseeing Cows 分数规划的更多相关文章
- POJ3621 Sightseeing Cows(最优比率环)
题目链接:id=3621">http://poj.org/problem?id=3621 在一个有向图中选一个环,使得环上的点权和除以边权和最大.求这个比值. 经典的分数规划问题,我认 ...
- POJ3621 Sightseeing Cows 最优比率环 二分法
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
- poj3621 Sightseeing Cows
01分数规划 二分+spfa负环(SLF优化) #include<cstdio> #include<iostream> #include<cstring> #inc ...
- poj3621 Sightseeing Cows --- 01分数规划
典型的求最优比例环问题 參考资料: http://blog.csdn.net/hhaile/article/details/8883652 此题中,给出每一个点和每条边的权值,求一个环使 ans=∑点 ...
- POJ3621 Sightseeing Cows【最短路】
题目大意:在一个无向图里找一个环,是的点权和除以边权和最大 思路:UVA11090姊妹题 事实上当这题点权和都为1时就是上一题TUT #include <stdio.h> #include ...
- [转]01分数规划算法 ACM 二分 Dinkelbach 最优比率生成树 最优比率环
01分数规划 前置技能 二分思想最短路算法一些数学脑细胞? 问题模型1 基本01分数规划问题 给定nn个二元组(valuei,costi)(valuei,costi),valueivaluei是选择此 ...
- 【POJ3621】【洛谷2868】Sightseeing Cows(分数规划)
[POJ3621][洛谷2868]Sightseeing Cows(分数规划) 题面 Vjudge 洛谷 大意: 在有向图图中选出一个环,使得这个环的点权\(/\)边权最大 题解 分数规划 二分答案之 ...
- POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
- [USACO07DEC]Sightseeing Cows(负环,0/1分数规划)
[USACO07DEC]Sightseeing Cows Description Farmer John has decided to reward his cows for their hard w ...
随机推荐
- 线程池c3p0和dbcp2的配置初始化实例
一.c3p0 public class ConnectionManager { public static ComboPooledDataSource dataSource; static { try ...
- Web服务(Web Service)相关概念
1.概述 Web服务技术(Web Service )是一种面向服务的架构技术,通过标准的Web协议提供服务,保证不同平台的应用服务能够互相操作. 因为Web服务公布的数据基于XML格式和 SOAP协议 ...
- Informix 語法
1.修改表名稱 RENAME TABLE old_table_name TO new_table_name; 2.分頁 select SKIP 0 FIRST 1 * from tablename ...
- 使用Secure Boot后,导致VMware无法启动虚拟机
最初安装vmware时就报错 Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk- ...
- action(二)
RemoveSelf :消失 CCFiniteTimeAction* action = CCSequence::create( CCMoveBy::create( , ccp(,)), CCRotat ...
- ADT离线安装教程
安装eclipse软件.安装后点击HELP菜单,找到下面的Install New Software并点击. 之后会弹出一个对话框,然后我们点击add,接下来弹出ADD对话框,然后我们再点击arch ...
- CR, LF, CR/LF区别与关系
前言 在文本处理中,CR(Carriage Return),LF(Line Feed),CR/LF是不同操作系统上使用的换行符,具体如下: Dos和Windows采用回车+换行CR/LF表示下一行 而 ...
- fastjson常用操作
一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object&g ...
- QT在CT上的安装及运行
http://www.cubie.cc/forum.php?mod=viewthread&tid=2662&highlight=qt
- API - 使用Default对象 - 基础篇
在编写Spider Studio脚本时, Default对象是最常用最重要的一个, 其类型定义如下: Webus3.Spider.Controls.JQueryBrowser Default; 下面介 ...