zoukankan      html  css  js  c++  java
  • BZOJ1303_中位数图_KEY

    题目传送门

    较水,开两个桶即可。

    题目可以理解为,将大于B的数看为1,小于B的数看为-1,将以B这个数为中位数的序列左右分为两半,加起来为0.

    code:

    #include <cstdio>
    using namespace std;
    
    char tc()
    {
        static char fl[10000000],*A=fl,*B=fl;
        return A==B&&(B=(A=fl)+fread(fl,1,10000000,stdin),A==B)?EOF:*A++;    
    }
    
    int read()
    {
        char c;while(c=tc(),c<'0'||c>'9');int x=c-'0';
        while(c=tc(),c>='0'&&c<='9')x=x*10+c-'0';
        return x;
    }
    
    int N,B,x,sum,t1[200005],t2[200005],P,num[100005];
    int main()
    {
        N=read(),B=read();
        long long ans=0;
            for(int i=1;i<=N;i++){
                x=read();
                if(x>B)num[i]=1;
                if(x==B)P=i;
                if(x<B)num[i]=-1;
            }
        t1[N]=1,t2[N]=1; 
            for(int i=P-1;i>0;i--){
                sum=sum+num[i];
                t1[sum+N]++;
            }sum=0;
            for(int i=P+1;i<=N;i++){
                sum=sum+num[i];
                t2[sum+N]++;
            }
            for(int i=0;i<2*N;i++)ans+=t1[i]*t2[2*N-i];
        printf("%lld",ans);
        return 0;
    }
  • 相关阅读:
    Git
    java类加载
    DES-加解密C语言实现
    Android消息队列初识 && ThreadLocl 简述
    DbUTils
    JDBC(二)
    jdbc工具类
    JDBC(一)
    数据库
    MySQL数据库学习: 01 —— 数据库的概述
  • 原文地址:https://www.cnblogs.com/Cptraser/p/8075719.html
Copyright © 2011-2022 走看看