hdu 4296 (成都赛区2012网络赛)

 1 #include <iostream>

 2 #include <cstring>

 3 #include <cstdio>

 4 #include <algorithm>

 5 

 6 using namespace std;

 7 

 8 #define maxn 100005

 9 

10 struct blo

11 {

12     int w;

13     int d;

14 }block[maxn];

15 

16 bool cmp(const blo&a,const blo&b)

17 {

18     return a.w+a.d<b.w+b.d;

19 }

20 

21 int main()

22 {

23     int n;

24     while(scanf("%d",&n) != EOF)

25     {

26         for(int i=0;i<n;i++)

27             scanf("%d%d",&block[i].w,&block[i].d);

28         sort(block,block+n,cmp);

29         __int64 sum=block[0].w;

30         __int64 ans=0;

31         for(int i=1;i<n;i++)

32         {

33             __int64 tmp = sum - block[i].d;

34             if(tmp>ans)

35                 ans=tmp;

36             sum+=block[i].w;

37         }

38         printf("%I64d\n",ans);

39     }

40     return 0;

41 

42 }

悲剧的孩子啊,,,比赛的时候把题意搞错了,,其实是使得最大的PDV尽可能地小,想想常理也该这样的,我们竟然求和了。以为是和最少。o(︶︿︶)o 唉。

你可能感兴趣的:(2012)