zoukankan      html  css  js  c++  java
  • Balanced Photo

    Balanced Photo

    农夫约翰正在安排他的N头牛拍照片, 每头牛有一个身高,从1到N编号,排列成一行(h1,h2...hn),每头牛i左边 
    比他高的牛的数量记为Li,右边比他高的牛的数量记为Ri,如果存在i满足max(Ri,Li)>2*min(Li,Ri)则这个牛i是 
    不平衡的,现在FJ需要你告诉他有多少头牛不平衡。 

    输入

    输入第一行为N(N<=1e5) 
    接下来的一行有N个数,每个数表示第i头牛的身高,不超过1e9 

    输出

    输出有多少头牛是不平衡的 

    样例

    输入

    7
    34
    6
    23
    0
    5
    99
    2
    

    输出

    3
     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 #define lowbit(x) x&(-x) 
     4 using namespace std;
     5 int n,sum[100005],r[100005],b[100005],l[100005],ans=0;
     6 struct data{
     7     int v,id;
     8 }a[100005];
     9 bool cmp(data x,data y)
    10 {
    11     if(x.v==y.v)
    12         return x.id<y.id;
    13     else
    14         return x.v<y.v;
    15 }
    16 void add(int x,int val)
    17 {
    18     while(x<=n)
    19     {
    20         sum[x]+=val;
    21         x+=lowbit(x);
    22     }
    23 } 
    24 int ask(int x)
    25 {
    26     int ans=0;
    27      while(x)
    28      {
    29          ans+=sum[x];
    30          x-=lowbit(x);
    31     }
    32     return ans;
    33 }
    34 int main()
    35 {
    36     scanf("%d",&n);
    37     for(int i=1;i<=n;i++)
    38     {
    39         scanf("%d",&a[i].v);
    40         a[i].id=i;
    41     }
    42     sort(a+1,a+1+n,cmp);
    43     for(int i=1;i<=n;i++)
    44     b[a[i].id]=i;
    45     for(int i=1;i<=n;i++)
    46     {
    47         int k=ask(b[i]);
    48         l[i]=i-k-1;
    49         add(b[i],1);
    50     }
    51     memset(sum,0,sizeof(sum));
    52     for(int i=n;i>=1;i--)
    53     {
    54         int k=ask(b[i]);
    55         r[i]=n-i-k;
    56         add(b[i],1);
    57     }
    58     for(int i=1;i<=n;i++)
    59     {
    60         int maxx=max(l[i],r[i]);
    61         int minn=min(l[i],r[i]);
    62         if(maxx>2*minn)
    63         ans++;
    64     }
    65     printf("%d",ans);
    66     return 0;
    67 }
  • 相关阅读:
    idhttp post 上传或下载时显示进度条(对接idhttp1.OnWork事件)
    DBGridEh列宽自动适应内容的简单方法
    好的python链接
    Git安装和使用
    Git及码云学习总结
    创建编写博客园写博客
    Git和Github的使用
    sql sever 两数据表差异比较EXCEPT、INTERSECT
    Vue学习(七)capture模式
    Vue学习(六)计算属性和侦听属性的区别以及应用场景
  • 原文地址:https://www.cnblogs.com/sbwll/p/13304341.html
Copyright © 2011-2022 走看看