zoukankan      html  css  js  c++  java
  • P2381 圆圆舞蹈

    题意:一个圆,上面有n头牛(卧槽)

       给出相邻两头牛顺时针的距离

       问两只最远的牛的距离(min(顺时针距离,逆时针距离))

    最远距离一定$le$距离和/2

    先求个前缀和

    那么问题转化为:找到

    $s_j-s_i<(dis/2)$的最大的$s_j-s_i$

    我们可以发现,只要枚举了i,j,时间复杂度不可能$le n^2$

    变个形$s_j<s_i+(dis/2)$

    而且s是递增的!!upperbound!

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cctype>
    #include<algorithm>
    using namespace std;
    #define int long long
    #define olinr return
    #define _ 0
    #define love_nmr 0
    #define DB double
    inline int read()
    {
        int x=0,f=1;
        char ch=getchar();
        while(!isdigit(ch))
        {
            if(ch=='-')
                f=-f;
            ch=getchar();
        }
        while(isdigit(ch))
        {
            x=(x<<1)+(x<<3)+(ch^48);
            ch=getchar();
        }
        return x*f;
    }
    inline void put(int x)
    {
        if(x<0)
        {
            x=-x;
            putchar('-');
        }
        if(x>9)
            put(x/10);
        putchar(x%10+'0');
    }
    int n;
    int tot;
    int s[105050];
    int d[105050];
    int ans;
    signed main()
    {
        n=read();
        for(int i=1;i<=n;i++)
            s[i]=s[i-1]+(d[i]=read());
        tot=s[n]>>1;
        for(int i=1;i<=n;i++)
        {
            int pos=upper_bound(s+1,s+n+1,tot+s[i])-s-1;
            ans=max(ans,s[pos]-s[i]);
        }
        put(ans);
        olinr ~~(0^_^0)+love_nmr;
    }
  • 相关阅读:
    日期转换DateTime
    linux 常用命令
    springcloud集成 xxl-job
    maven-阿里云镜像
    mysql 8.0+忘记root密码-linux
    java注解与自定义注解
    mysql联合索引的生效规则
    Maven常用命令及其作用、常见问题、常用命令使用场景举例
    反射的理解
    VirtualBox创建centos
  • 原文地址:https://www.cnblogs.com/olinr/p/9583608.html
Copyright © 2011-2022 走看看