zoukankan      html  css  js  c++  java
  • 洛谷 1843 奶牛晒衣服

    【题解】

      二分答案。check的时候如果ai>A*mid,就把sum加上[(ai-A*mid)/B]上取整,最后判断sum是不是小于二分出来的最小时间mid即可。

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #define LL long long
     5 #define rg register
     6 #define N 500010
     7 using namespace std;
     8 int n,m,k,a[N],l,r,mid;
     9 inline int read(){
    10     int k=0,f=1; char c=getchar();
    11     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    12     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    13     return k*f;
    14 }
    15 inline bool check(){
    16     int sum=0;
    17     for(rg int i=1;i<=n;i++)if(a[i]>1ll*m*mid)
    18         sum+=(a[i]-m*mid)/k+((a[i]-m*mid)%k?1:0);
    19     return sum<=mid;
    20 }
    21 int main(){
    22     n=read(); m=read(); k=read();
    23     for(rg int i=1;i<=n;i++) a[i]=read(),r=max(r,a[i]);
    24     while(l+1<r){
    25         mid=(l+r)>>1;
    26         if(check()) r=mid; else l=mid;
    27     }
    28     printf("%d
    ",r);
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    富文本
    管理员状态
    分页
    tp。3.2中的模板基础
    get和post之间的区别
    RegExp
    获取各种类型的节点
    节点的层次关系
    创建元素节点
    JavaScript 正则
  • 原文地址:https://www.cnblogs.com/DriverLao/p/9425506.html
Copyright © 2011-2022 走看看