hdu4442-Physical Examination

http://acm.hdu.edu.cn/showproblem.php?pid=4442

题目统计最短时间,只需要判断 t  +  a1 + a2 + t * b1  + t  * b2 +  a1 * b2 和 t + a1 + a2 + t * b1 + t * b2 + a2 * b1 大小来排列 ;

                                    约分,就是按照a1 * b2 < a2 * b1 来排序

// File Name: hdu4442.cpp
// Author: bo_jwolf
// Created Time: 2013年05月24日 星期五 11:42:02

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 100005;
const int MOD=365*24*60*60;
struct node 
{
	int a , b ;
}edge[ maxn ] ;

int cmp( node  x , node y )
{
	return (long long )x.a * y.b < ( long long )x.b * y.a ;
}

int main()
{
	int n ;
	int i ;
	while( ~scanf( "%d" , &n ) && n)
	{
		for( i = 0 ; i < n ; i++ )
		{
			scanf( "%d%d" , &edge[ i ].a , &edge[ i ].b ) ;
		}
		sort( edge , edge + n , cmp ) ;
		long long ans = 0 ;
		long long t = 0 ;
		for( i = 0; i < n ; i++ )
		{
			ans += (edge[ i ].a + t*edge[ i ].b)%MOD;
			ans %= MOD;
			t += (edge[ i ].a + t * edge[ i ].b)%MOD ;
			t %= MOD;
		}
		printf( "%I64d\n" , ans );
	}
	return 0;
}


你可能感兴趣的:(杭电)