• BZOJ 1303 中位数图


    注意细节啊。。。。典型的乱搞。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #define maxn 100500
    using namespace std;
    long long n,a[maxn],mx[maxn],mi[maxn],cnta[maxn][3],cntb[maxn][3],regis[4],b,rec;
    long long num[maxn],kk=0,ans=0;
    long long vv(long long x)
    {
        if (x<0) return -x;
        return x;
    }
    int main()
    {
        scanf("%lld%lld",&n,&b);
        for (long long i=1;i<=n;i++)
        {
            scanf("%lld",&a[i]);
            if (a[i]>b) {mx[i]=mx[i-1]+1;mi[i]=mi[i-1];}
            else if (a[i]<b) {mx[i]=mx[i-1];mi[i]=mi[i-1]+1;}
            else {rec=i;mx[i]=mx[i-1];mi[i]=mi[i-1];}
        }
        for (long long i=1;i<=n;i++)
        {
            if (i<=rec-1)
            {
                num[i]=(mx[rec-1]-mx[i-1])-(mi[rec]-mi[i-1]);
                if (vv(num[i])>kk) kk=vv(num[i]);
            }
            else if (i>=rec+1)
            {
                num[i]=(mx[i]-mx[rec])-(mi[i]-mi[rec]);
                if (vv(num[i])>kk) kk=vv(num[i]);
            }
        }    
        for (long long i=1;i<=rec-1;i++)
        {
            if (num[i]<0) cntb[-num[i]][1]++;
            else if (num[i]>0) cnta[num[i]][1]++;
            else regis[1]++;
        }
        for (long long i=rec+1;i<=n;i++)
        {
            if (num[i]<0) cntb[-num[i]][2]++;
            else if (num[i]>0) cnta[num[i]][2]++;
            else regis[2]++;
        }
        for (long long i=1;i<=kk;i++)
        {
            ans+=cnta[i][1]*cntb[i][2];
            ans+=cntb[i][1]*cnta[i][2];
        }
        ans=ans+regis[1]*regis[2]+regis[1]+regis[2]+1;
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    linux创建www用户组和用户
    php+nginx改为socket
    laravel重写
    centos7精简版(minimal)killall: command not found
    php+nginx 整合
    php编译安装
    Nginx的编译安装
    sql 中常见的控制流语句
    sqlserver 中常见的函数 数学函数
    sqlserver 中常见的函数字符串函数
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5350628.html
Copyright © 2020-2023  润新知