POJ 3621Sightseeing Cows
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 9851 | Accepted: 3375 |
Description
Farmer John has decided to reward his cows for their hard work by taking them on a tour of the big city! The cows must decide how best to spend their free time.
Fortunately, they have a detailed city map showing the L (2 ≤ L ≤ 1000) major landmarks (conveniently numbered 1.. L) and the P (2 ≤ P ≤ 5000) unidirectional cow paths that join them. Farmer John will drive the cows to a starting landmark of their choice, from which they will walk along the cow paths to a series of other landmarks, ending back at their starting landmark where Farmer John will pick them up and take them back to the farm. Because space in the city is at a premium, the cow paths are very narrow and so travel along each cow path is only allowed in one fixed direction.
While the cows may spend as much time as they like in the city, they do tend to get bored easily. Visiting each new landmark is fun, but walking between them takes time. The cows know the exact fun values Fi (1 ≤ Fi ≤ 1000) for each landmark i.
The cows also know about the cowpaths. Cowpath i connects landmark L1i to L2i (in the direction L1i -> L2i ) and requires time Ti (1 ≤ Ti ≤ 1000) to traverse.
In order to have the best possible day off, the cows want to maximize the average fun value per unit time of their trip. Of course, the landmarks are only fun the first time they are visited; the cows may pass through the landmark more than once, but they do not perceive its fun value again. Furthermore, Farmer John is making the cows visit at least two landmarks, so that they get some exercise during their day off.
Help the cows find the maximum fun value per unit time that they can achieve.
Input
* Line 1: Two space-separated integers: L and P
* Lines 2..L+1: Line i+1 contains a single one integer: Fi
* Lines L+2..L+P+1: Line L+i+1 describes cow path i with three space-separated integers: L1i , L2i , and Ti
Output
* Line 1: A single number given to two decimal places (do not perform explicit rounding), the maximum possible average fun per unit time, or 0 if the cows cannot plan any trip at all in accordance with the above rules.
Sample Input
5 7
30
10
10
5
10
1 2 3
2 3 2
3 4 5
3 5 2
4 5 5
5 1 3
5 2 2
Sample Output
6.00
Source
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
const int N = + , M = + ;
#define inf 1000000000
using namespace std ;
int cnt , n , m , node[N] , head[N] , cs[N] ; double r ;
bool used[N] ; double dis[N] ;
struct id
{
int fro , to , nxt , val ; double w ;
} edge[M] ;
queue< int > Q ; void add( int u , int v , int c )
{
edge[++cnt].fro = u , edge[cnt].to = v ;
edge[cnt].val = c , edge[cnt].nxt = head[u] ; head[u] = cnt ;
} void Init( )
{
scanf( "%d%d" , &n , &m ) ;
for( int x = ; x <= n ; ++x )
{
scanf( "%d" , node + x ) ;
r += node[x] ;
}
int u , v , c ;
for( int x = ; x <= m ; ++x )
{
scanf( "%d%d%d" , &u , &v , &c ) ;
add( u , v , c ) ;
}
} bool spfa( double l )
{
while( !Q.empty( ) ) Q.pop( ) ;
for( int x = ; x <= n ; ++x ) dis[x] = inf ;
for( int x = ; x <= cnt ; ++x ) edge[x].w = edge[x].val * l - node[edge[x].fro] ;
memset( cs , , sizeof(cs) ) ;
memset( used , , sizeof( used ) ) ;
Q.push( ) ; dis[] = ; used[] = true ;
while( !Q.empty( ) )
{
int u = Q.front( ) ; Q.pop( ) ;used[u] = false ; ++cs[u] ;
if( cs[u] == n ) return ;
for( int i = head[u] ; i ; i = edge[i].nxt )
{
int v = edge[i].to ;
if( dis[v] >= dis[u] + edge[i].w )
{
dis[v] = dis[u] + edge[i].w ;
if( !used[v] ) used[v] = true , Q.push( v ) ;
} }
}
return false ;
} void Sovle( )
{
double l = ;
while( r - l > 1e- )
{
double mid = l + ( r - l ) / ;
if( spfa( mid ) ) l = mid ;
else r = mid ;
}
printf( "%.2f\n" , l ) ;
} int main( )
{
Init( ) ;
Sovle( ) ;
return ;
}
POJ 3621Sightseeing Cows的更多相关文章
- POJ 3621Sightseeing Cows 0/1 分数规划
Description 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地 讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的 ...
- 树状数组 POJ 2481 Cows
题目传送门 #include <cstdio> #include <cstring> #include <algorithm> using namespace st ...
- POJ 2481 Cows
Cows Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16546 Accepted: 5531 Description ...
- 2018.07.08 POJ 2481 Cows(线段树)
Cows Time Limit: 3000MS Memory Limit: 65536K Description Farmer John's cows have discovered that the ...
- POJ 2481 Cows (线段树)
Cows 题目:http://poj.org/problem?id=2481 题意:有N头牛,每仅仅牛有一个值[S,E],假设对于牛i和牛j来说,它们的值满足以下的条件则证明牛i比牛j强壮:Si &l ...
- POJ 2481 Cows(树状数组)
Cows Time Limit: 3000MS Memory L ...
- POJ 3348 - Cows 凸包面积
求凸包面积.求结果后不用加绝对值,这是BBS()排序决定的. //Ps 熟练了template <class T>之后用起来真心方便= = //POJ 3348 //凸包面积 //1A 2 ...
- POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)
题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认 ...
- POJ 2481 Cows (数组数组求逆序对)
题目链接:http://poj.org/problem?id=2481 给你n个区间,让你求每个区间被真包含的区间个数有多少,注意是真包含,所以要是两个区间的x y都相同就算0.(类似poj3067, ...
随机推荐
- tomcat+apache 实现负载均衡之一:同一台电脑部署2个以上tomcat
1. 下载tomcat 8.0.17 http://apache.fayea.com/tomcat/tomcat-8/v8.0.17/bin/apache-tomcat-8.0.17.tar.gz ...
- 带节假日JS万年历控件代码
<form name="CLD" class="content"> <table width="100%" border= ...
- js和Jquery获取选中select值和文本
<body> <select name="PaymentType" style="width:110px" > <option v ...
- POJ 1961 Period(KMP)
http://poj.org/problem?id=1961 题意 :给你一个字符串,让你输出到第几个字符时,循环结的个数. 思路 :这个题和2409差不多,稍微修改一下,加一个循环就行了,用的也是K ...
- easyui源码翻译1.32--panel(面板)
前言 昨天发布了表格datagrid的翻译源码 ,easyui的许多插件有依赖关系 比如datagrid 的渲染需要panel.resizable.linkbutton.pagination 今 ...
- *[topcoder]LittleElephantAndString
http://community.topcoder.com/stat?c=problem_statement&pm=12854&rd=15709 这道题DIV1 250的,还有点意思. ...
- strspn和strcspn妙用
http://blog.csdn.net/aidenliu/article/details/5460201
- Ember.js demo3
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery.j ...
- ruby mysql数据库操作
require 'mysql' con=Mysql.new('localhost','root','root','test') con.query('set names utf8') rs=con.q ...
- 【HDOJ】1042 N!
肯定是大叔,本来以为用加法做乘法,后来想想这样麻烦,还是可以使用乘法的,按位乘,ov可以看成不止一位,程序如下所示: #include <stdio.h> #define MAX 4000 ...