程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu4442-Physical Examination

hdu4442-Physical Examination

編輯:C++入門知識

題目統計最短時間,只需要判斷 t  +  a1 + a2 + t * b1  + t  * b2 +  a1 * b2 和 t + a1 + a2 + t * b1 + t * b2 + a2 * b1 大小來排列 ;

                                    約分,就是按照a1 * b2 < a2 * b1 來排序

 

[cpp]
// 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; 

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved