• Luogu P2920 时间管理【二分答案】


    二分答案水题。

    (像我这么蒻的人都能十几分钟A掉)

    https://www.luogu.org/problemnew/show/P2920

    开始时间一定在从0到min(t[i]-s[i])的一段区间上,因此我们可以愉快地二分答案。

    在二分答案之前,我们贪心地把结束时间从小到大排一遍序,于是就可以二分了。

    最后如果结果是负数,证明无解,不能完成任务。输出-1。

    Check函数里,模拟累加一下当前的时间加上最靠近ddl任务所花的时间,看能不能完成,进行判断。

    code

     1 #include<cstdio>
     2 #include<algorithm>
     3 #define inf 0x3f3f3f3f
     4 
     5 using namespace std;
     6 int n,ans;
     7 int l,r=inf;
     8 struct task{
     9     int t,s;
    10 }a[2000];
    11 bool cmp(task x,task y)
    12 {
    13     return x.s<y.s;
    14 }
    15 bool check(int x)
    16 {
    17     int now=x;
    18     for(int i=1;i<=n;i++)
    19     {
    20          if(now+a[i].t<=a[i].s) now+=a[i].t;
    21          else return false;
    22     }
    23     return true; 
    24 }
    25 
    26 int main()
    27 {
    28     scanf("%d",&n);
    29     for(int i=1;i<=n;i++)
    30     {
    31         scanf("%d%d",&a[i].t,&a[i].s);
    32         r=min(r,a[i].s-a[i].t);
    33     }
    34     sort(a+1,a+1+n,cmp);
    35     while(l<r)
    36     {
    37         int mid=(l+r+1)>>1;
    38         if(check(mid)) l=mid;
    39         else r=mid-1;
    40     }
    41     ans=l ? l : -1;
    42     printf("%d",ans);
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    jxl导出Excel文件
    IOC容器中bean的生命周期
    Hibernate缓存
    Hibernate关联映射及高级查询
    Hibernate简介
    jsp中自定义Taglib案例
    面向对象设计原则
    struts2进阶篇(5)
    Spring核心概念之AOP
    struts2进阶篇(4)
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9330073.html
Copyright © 2020-2023  润新知