• 1303: [CQOI2009]中位数图


    早起一AC,整天萌萌哒。

                

     Problem: 1303
        User: forgot93
        Language: C++
        Result: Accepted
        Time:56 ms
        Memory:2108 kb
    ****************************************************************/
     
    #include <cstdio>
     
    const int MAXN = 111111;
     
    int a[MAXN], h[MAXN << 1];
     
    int main() {
        int n, b;
        scanf("%d%d", &n, &b);
        int k;
        for (int i = 1;i <= n; ++i) {
            scanf("%d", &a[i]);
            if (a[i]==b) k=i;
          }
     
          for (int i=k,t=0;i<=n;i++){
          if (a[i]>b) t++;
          else if (a[i]<b) t--;
          h[t+MAXN]++;
         }
     
         int ans=h[MAXN];
         for (int i=k-1,t=0;i>=1;i--)
         {
             if (a[i]>b) t++;
             else t--;
             ans+=h[MAXN-t];
     
         }
         printf("%d
    ",ans);
         return 0;
    }
    

     分析:1:先确定B的位置k,

             2:统计k-n中大于B的数,小于B的数,

             3:从K-1到1枚举,大于B,t++,小于B,t--;当K前面的T与K后面的T相等是就是一个结果。

         输出

  • 相关阅读:
    TCP定时器 之 重传/延迟ACK/保活 定时器初始化
    指针03-指针和字符串
    指针02
    指针01
    switch语句分析
    结构体分析
    参数、返回值、局部变量、数组分析
    多维数组分析
    循环语句分析
    if语句分析
  • 原文地址:https://www.cnblogs.com/forgot93/p/3829465.html
Copyright © 2020-2023  润新知