• 洛谷 桶哥的问题——送桶——题解


     

    一读题,发现与贪心中的任务调度有点类似。保证答案大于等于零,言外之意即为所有任务都可以在合法时间内完成。那么只要按照任务调度的思路做就行了:

    用结构体(方便sort)数组t读入所有ai、bi后按照结束时间从大到小排序。设ans为答案,i为当前要处理的任务在排序后的编号。ans初始为t[1].b,i=1,2,…,n。

    对于每个i:1、若ans比第i号任务的截止时间晚,则让ans等于该任务的截止时间;

          2、ans-=第i号任务的耗时。

    最后ans的值即为答案。

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cctype>
     6 using namespace std;
     7 struct tong{
     8     int a,b;
     9 }t[1000001];
    10 int ans;
    11 char ch;
    12 inline int read()
    13 {
    14     ans=0;
    15     ch=getchar();
    16     while(!isdigit(ch)) 
    17     ch=getchar();
    18     while(isdigit(ch)) ans=(ans<<3)+(ans<<1)+ch-'0',ch=getchar();
    19     return ans;
    20 }
    21 inline bool cmp(tong a,tong b)
    22 {
    23     return a.b>b.b;
    24 }
    25 int main()
    26 {
    27     int n;
    28     n=read();
    29     for(register int i=1;i<=n;i++)
    30     {
    31         t[i].a=read();t[i].b=read();
    32     }
    33     sort(t+1,t+n+1,cmp);
    34     ans=t[1].b;
    35     for(register int i=1;i<=n;i++)
    36     {
    37         if(ans>t[i].b) ans=t[i].b;
    38         ans-=t[i].a;
    39     }
    40     printf("%d",ans);
    41     return 0;
    42 }

     

  • 相关阅读:
    YUM软件管理
    RPM软件包管理
    Linux系统启动详解
    Linux命令行文本处理工具
    Linux多命令协作:管道及重定向
    Linux网络基础配置
    网络基础
    Linux扩展权限
    Linux权限机制
    Linux用户基础
  • 原文地址:https://www.cnblogs.com/InductiveSorting-QYF/p/10939668.html
Copyright © 2020-2023  润新知