[CQOI2009]中位数图
Posted cq.tiancx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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;
谢谢你的阅读
,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!
以上是关于[CQOI2009]中位数图的主要内容,如果未能解决你的问题,请参考以下文章