[CQOI2009]中位数图

简介: [CQOI2009]中位数图

[CQOI2009]中位数图 这是一道OI真题,我们来看看题目:

顺便放下地址吧:[CQOI2009]中位数图

读了题目之后发现直接枚举是不行的,会超时,那么我们就得换种思路了,我们可以把大于目标数的数设置为1,小于目标数(题目中的b,下同)的设置为-1,然后只要包含目标数的区间的和为1则符合要求,然后应用前缀和的思想便可以快速解决!

我们来看看成功AC的代码吧:

#include<bits/stdc++.h>
using namespace std;
int n,b;
int a[100010],cnt[2*100010];
int ans;
int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    cin>>n>>b;
    int pos=0;//标记目标数的位置
    for(int i=1;i<=n;i++){
        int x;  cin>>x;
        if(x==b) a[i]=0,pos=i;
        if(x<b) a[i]=-1;
        if(x>b) a[i]=1;
    }
    int s=0;//s用来装前缀/后缀和
    for(int i=pos-1;i>=1;i--){
        s+=a[i];
        cnt[s+n]++;
        if(!s) ans++;//后缀和为0的,符合要就 ,ans++
    }
    s=0;
    for(int i=pos+1;i<=n;i++){
       s+=a[i];
       ans+=cnt[n-s];//与左边的进行匹配
       if(!s) ans++;//前缀和为0的,符合要就 ,ans++
    }
    cout<<ans+1;
    return 0;
}


相关文章
|
13天前
|
算法 测试技术 C++
【差分数组】【图论】【分类讨论】【整除以2】3017按距离统计房屋对数目
【差分数组】【图论】【分类讨论】【整除以2】3017按距离统计房屋对数目
|
13天前
6366. 在网格图中访问一个格子的最少时间(dijkstra在矩阵上的运用)
6366. 在网格图中访问一个格子的最少时间(dijkstra在矩阵上的运用)
|
13天前
|
算法 测试技术 C#
【差分数组】【图论】【分类讨论】【整除以2】100213按距离统计房屋对数目
【差分数组】【图论】【分类讨论】【整除以2】100213按距离统计房屋对数目
【差分数组】【图论】【分类讨论】【整除以2】100213按距离统计房屋对数目
LeetCode 1828. 统计一个圆中点的数目
给你一个数组 points ,其中 points[i] = [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。
90 0
|
数据处理
集中趋势中均值、中位数、众数以及偏态分布、偏度和峰度计算相关
集中趋势中均值、中位数、众数以及偏态分布、偏度和峰度计算相关
373 0
集中趋势中均值、中位数、众数以及偏态分布、偏度和峰度计算相关
每日三题-旋转图像、合并区间、除自身以外数组的乘积
每日三题-旋转图像、合并区间、除自身以外数组的乘积
51 0
每日三题-旋转图像、合并区间、除自身以外数组的乘积
|
数据挖掘
一维数组实验题:计算平均数、中位数和众数 在调查数据分析(Survey data analysis)中经常需要计算平均数、中位数和众数。用函数编程计算40个输入数据(是取值1—10之间的任意整数)的平
一维数组实验题:计算平均数、中位数和众数 在调查数据分析(Survey data analysis)中经常需要计算平均数、中位数和众数。用函数编程计算40个输入数据(是取值1—10之间的任意整数)的平
152 0
L1-048 矩阵A乘以B (15 分)
L1-048 矩阵A乘以B (15 分)
99 0
L1-048 矩阵A乘以B (15 分)
7-32 中位数 (10 分)
7-32 中位数 (10 分)
65 0

热门文章

最新文章