zoukankan      html  css  js  c++  java
  • LOJ P10012 Best Cow Fences 题解

    每日一题 day48 打卡

    Analysis

    二分答案,判断序列的平均值是否大于等于mid

    具体怎么实现呢?

    将序列减去mid,再用前缀和来维护平均值就好了

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define int long long
     6 #define maxn 100000+10
     7 #define INF 2147483647
     8 #define rep(i,s,e) for(register int i=s;i<=e;++i)
     9 #define dwn(i,s,e) for(register int i=s;i>=e;--i)
    10 using namespace std;
    11 inline int read()
    12 {
    13     int x=0,f=1;
    14     char c=getchar();
    15     while(c<'0'||c>'9') {if(c=='-') f=-1; c=getchar();}
    16     while(c>='0'&&c<='9') {x=x*10+c-'0'; c=getchar();}
    17     return f*x;
    18 }
    19 inline void write(int x)
    20 {
    21     if(x<0) {putchar('-'); x=-x;}
    22     if(x>9) write(x/10);
    23     putchar(x%10+'0');
    24 }
    25 
    26 int n,L,l,r,ans;
    27 int a[maxn],sum[maxn],b[maxn];
    28 inline bool check(int x)
    29 {
    30     rep(i,1,n) b[i]=a[i];
    31     rep(i,1,n) b[i]-=x;
    32     rep(i,1,n) sum[i]=sum[i-1]+b[i];
    33     int min_val=INF;
    34     rep(i,L,n)
    35     {
    36         min_val=min(min_val,sum[i-L]);
    37         if(sum[i]-min_val>=0) return true;
    38     }
    39     return false;
    40 }
    41 signed main()
    42 {
    43     n=read();L=read();
    44     rep(i,1,n) 
    45     {
    46         a[i]=read(); 
    47         a[i]*=1000;
    48     }
    49     l=0,r=100000000;
    50     while(l<r)
    51     {
    52         int mid=(l+r+1)/2;
    53         if(check(mid)==true) 
    54         {
    55             ans=mid;
    56             l=mid;
    57         }
    58         else r=mid-1;
    59     }
    60     if(ans%10==9) write(ans+1);
    61     else write(ans);
    62     return 0;
    63 }

    请各位大佬斧正(反正我不认识斧正是什么意思)

  • 相关阅读:
    Opencv3.4:显示一张图片
    Windows编译Opencv
    FFmpeg4.0笔记:rtsp2rtmp
    FFmpeg4.0笔记:file2rtmp
    Ubuntu编译安装crtmp-server
    python笔记:#014#综合应用
    python笔记:#012#函数
    Python学习--利用scapy库实现ARP欺骗
    metasploit——(三)渗透攻击之旅
    metasploit——(一)情报收集篇
  • 原文地址:https://www.cnblogs.com/handsome-zyc/p/11917568.html
Copyright © 2011-2022 走看看