zoukankan      html  css  js  c++  java
  • bzoj4590: [Shoi2015]自动刷题机(二分答案)

    4590: [Shoi2015]自动刷题机

    题目:传送门 


    题解:

       很明显的一道二分题。

       对于二分性的判断:如果n越大,那么AC的题就越少,n越小,AC的题就越多,那么最大最小值都满足单调性,直接瞎搞。

       PS:上界有点大...搞得我WA了一次


    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cstdlib>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 typedef long long LL;
     8 LL n,m,l,r;
     9 LL a[110000];
    10 LL check(LL x)
    11 {
    12     LL sum=0,cnt=0;
    13     for(int i=1;i<=n;i++)
    14     {
    15         sum+=a[i];if(sum<=0)sum=0;
    16         if(sum>=x)cnt++,sum=0;
    17     }
    18     return cnt;
    19 }
    20 int main()
    21 {
    22     scanf("%lld%lld",&n,&m);
    23     for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    24     LL ans1=0,ans2=0;
    25     l=1;r=1e15;
    26     while(l<=r)
    27     {
    28         LL mid=(l+r)/2;
    29         if(check(mid)>m)l=mid+1,ans1=mid;
    30         else r=mid-1;
    31     }
    32     l=1;r=1e15;
    33     while(l<=r)
    34     {
    35         LL mid=(l+r)/2;
    36         if(check(mid)<m)r=mid-1,ans2=mid;
    37         else l=mid+1;
    38     }
    39     ans1++,ans2--;
    40     if(check(ans1)!=m || check(ans2)!=m)printf("-1
    ");
    41     else printf("%lld %lld
    ",ans1,ans2);
    42     return 0;
    43 }
  • 相关阅读:
    My Tornado Particle Effect
    [zz] 海洋环境的光能传递
    一道算法题
    Alembic
    一些莫名其妙的东东
    Python Q&A
    <<Exceptional C++>> notes
    CG Rendering v.s. Browser Rendering
    Modo
    Katana
  • 原文地址:https://www.cnblogs.com/CHerish_OI/p/8637496.html
Copyright © 2011-2022 走看看