当前位置:编程学习 > C/C++ >>

hdu4221-Greedy?

使用C++输入输出TLE,输出使用 %lld 会WA,要用%i64d输出

题目没有什么陷阱

 

[html]
// File Name: hdu4221.cpp 
// Author: bo_jwolf 
// Created Time: Wednesday, May 08, 2013 PM01:15:20 HKT 
 
#include<vector> 
#include<list> 
#include<map> 
#include<set> 
#include<deque> 
#include<stack> 
#include<queue> 
#include<bitset> 
#include<algorithm> 
#include<functional> 
#include<numeric> 
#include<utility> 
#include<sstream> 
#include<iostream> 
#include<iomanip> 
#include<cstdio> 
#include<cmath> 
#include<cstdlib> 
#include<cstring> 
#include<ctime> 
 
using namespace std; 
typedef long long ll ; 
const int maxn = 100005 ; 
struct node  

    int a , b ; 
}edge[ maxn ] ; 
 
bool cmp( node x , node y ) 

    return x.b < y.b ; 

 
int main() 

    int t , n ; 
    int k = 0 ; 
    scanf( "%d" , &t ) ; 
    while( t-- ) 
    { 
        k++ ; 
        scanf( "%d" , &n ) ; 
        for( int i  = 0 ; i < n ; i++ ) 
            scanf( "%d%d" , &edge[ i ].a , &edge[ i ].b ) ; 
        long long sum = 0 ; 
        long long ans = 0 ; 
        sort( edge , edge + n , cmp ) ; 
        for( int i = 0 ; i < n ; i++ ) 
        { 
            sum += edge[ i ].a ; 
            if( sum - edge[ i ].b > ans ) 
                ans = sum - edge[ i ].b ; 
        } 
        printf( "Case %d: %I64d\n" , k , ans ) ; 
    } 
    return 0; 

// File Name: hdu4221.cpp
// Author: bo_jwolf
// Created Time: Wednesday, May 08, 2013 PM01:15:20 HKT

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<queue>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;
typedef long long ll ;
const int maxn = 100005 ;
struct node
{
 int a , b ;
}edge[ maxn ] ;

bool cmp( node x , node y )
{
 return x.b < y.b ;
}

int main()
{
 int t , n ;
 int k = 0 ;
 scanf( "%d" , &t ) ;
 while( t-- )
 {
  k++ ;
  scanf( "%d" , &n ) ;
  for( int i  = 0 ; i < n ; i++ )
   scanf( "%d%d" , &edge[ i ].a , &edge[ i ].b ) ;
  long long sum = 0 ;
  long long ans = 0 ;
  sort( edge , edge + n , cmp ) ;
  for( int i = 0 ; i < n ; i++ )
  {
   sum += edge[ i ].a ;
   if( sum - edge[ i ].b > ans )
    ans = sum - edge[ i ].b ;
  }
  printf( "Case %d: %I64d\n" , k , ans ) ;
 }
 return 0;
}

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,