CF1349B Orac and Medians 题解
解题思路
一个比较显然的结论:
- 若序列中存在一段连续的长度大于
的区间,且区间中的数均为 ,那么一定可以将整个序列转化为 。
进一步的,我们可以推出,若序列中有一段区间的中位数为
最后特判
AC 代码
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#define N 100005
#define inf 2e9+7
int n,k,a[N],p[N],ce;
int l[N],r[N],cl,cr;
inline void work(){
scanf("%d%d",&n,&k);ce=0;
for(register int i=1;i<=n;++i)
scanf("%d",&a[i]);
for(register int i=1;i<=n;++i)
if(k==a[i]) p[++ce]=i;
if(!ce){puts("No");return;}
if(n==1){puts("Yes");return;}
for(register int i=1;i<=ce;++i){
int now=p[i];
if(now>1&&a[now-1]>=k){
puts("Yes");return;
}
else if(now<n&&a[now+1]>=k){
puts("Yes");return;
}
}
for(register int i=1;i<n;++i)
if(a[i]>=k&&a[i+1]>=k){
puts("Yes");return;
}
for(register int i=2;i<n;++i)
if(a[i-1]>=k&&a[i+1]>=k){
puts("Yes");return;
}
puts("No");
}
signed main(){
int T;scanf("%d",&T);
while(T--) work();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示