• BZOJ 5106 [CodePlus2017]汀博尔


    【题解】

      二分答案。r要设好,不能随便设置为max(s,len),不然check的时候会爆long long

      

     1 #include<cstdio>
     2 #include<algorithm>
     3 #define rg register
     4 #define N 200010
     5 #define LL long long
     6 using namespace std;
     7 LL n,s,len,mx,h[N],a[N],l,r,mid;
     8 inline LL read(){
     9     LL k=0; char c=getchar();
    10     while(c<'0'||c>'9')c=getchar();
    11     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    12     return k;
    13 }
    14 inline bool check(){
    15     LL cnt=0; 
    16     for(rg int i=1;i<=n;i++) 
    17     if(1LL*h[i]+a[i]*mid>=len){
    18         cnt+=1LL*h[i]+a[i]*mid;
    19         if(cnt>=s) return 1;
    20     }
    21     return 0;
    22 }
    23 int main(){
    24     n=read(); s=read(); len=read();
    25     for(rg int i=1;i<=n;i++) h[i]=read();
    26     for(rg int i=1;i<=n;i++) a[i]=read(),mx=max(mx,a[i]);
    27     l=-1; r=max(s,len)/mx+1;
    28     while(l+1<r){
    29         mid=(l+r)>>1;
    30         if(check()) r=mid; else l=mid;
    31     }
    32     printf("%lld
    ",r);
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    MQ的导出备份
    js中this的使用
    wordpress目录文件结构说明
    css3 rem的用法
    初探Backbone
    call 和 apply使用
    公告栏放honehoneclock和喂小老鼠flash
    什么是好单位与坏单位
    常用正则表达式
    gulp入门教程
  • 原文地址:https://www.cnblogs.com/DriverLao/p/8899097.html
Copyright © 2020-2023  润新知