题解 | #[CQOI2009]中位数图#

[CQOI2009]中位数图

https://ac.nowcoder.com/acm/problem/19913

#include<iostream>
using namespace std;

int main(){
    int n,b,b1,s1[100010]={0},s3[200010]={0},sumy=0;
    
    cin >> n >> b;
    for(int i = 0,s;i<n;i++){
        scanf("%d",&s);/*段错误:忘打‘&’*/
        if(s > b){
            s1[i] = 1;
        }else if(s < b){
            s1[i] = -1;
        }else{
            s1[i] = 0;
            b1 = i;
        }
    }
    
    for(int i=b1,sum=0;i>=0;i--){    //左侧,不同的和存在不同的下标(因为有负数,所以下标统一加100000),右侧检索相反数个数会更快
        sum+=s1[i];/*段错误:忘令sum=0*/
        s3[sum+100000]++;
        if(sum==0)sumy++;  /*只有左半侧区间和只有b一个数都算 ! ! !*/
    }
    for(int i = b1+1,sum=0;i<n;i++){   //右侧
        sum+=s1[i];
        sumy+=s3[-sum+100000];/*段错误:忘加100000*/
    }
    
    cout << sumy;
    
    return 0;
}
编写注意点:
1,段错误可能由各种错误引起,如忘加"&",要仔细检查

全部评论

相关推荐

头像
07-01 18:39
已编辑
门头沟学院 Java
白火同学:我刚出学校那会沟通过最逆天的公司是一家初创公司,老板亲自在BOSS上当HR,说初创公司人没多少,前期比较艰苦,运维实施前后端都得干。问工资有多少,答两千,给技术入股。我寻思我饭都吃不起了,你跟我谈股份。
我的求职精神状态
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务