首届华中区程序设计邀请赛暨第十届武汉大学程序设计大赛网络预赛G题(HDOJ-4221)

      这题的题目是 贪心? 好吧..真的是贪心..只是稍微的尝试了一种方案..就过了...这种反感是将所有的项目按D排序..按这个顺序来安排工作..找到过程中最大的penalty就是..原理..只是感性的觉得先到期的工作先做比后做得到的差距要小吧...没有证明...


Program:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<math.h>
#define ll long long
using namespace std;
struct node
{
      ll C,D;
}a[100005];
ll T,t,n,i,ans,m;
bool cmp(node a,node b)
{
      if (a.D!=b.D) return a.D<b.D;
      return a.C<b.C;
}
int main()
{
      freopen("input.txt","r",stdin);
      freopen("output.txt","w",stdout);
      scanf("%I64d",&T);
      for (t=1;t<=T;t++)
      {
            scanf("%I64d",&n); 
            for (i=1;i<=n;i++) scanf("%I64d%I64d",&a[i].C,&a[i].D);
            sort(a+1,a+1+n,cmp);
            ans=0;
            m=0; 
            for (i=1;i<=n;i++)
            { 
                  m+=a[i].C;
                  if (m>a[i].D && m-a[i].D>ans) ans=m-a[i].D;
            }
            printf("Case %I64d: %I64d\n",t,ans);
      }
      return 0;
}


你可能感兴趣的:(c,工作,网络)