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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值