码迷,mamicode.com
首页 > 其他好文 > 详细

CF1350D Orac and Medians(找规律)

时间:2020-05-23 16:49:31      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:题意   个数   ==   for   code   ++   通过   长度   规律   

题意:

给出一个序列,每次操作可以选择一段子序列,使得里面的最小的比中位数大的值为t,子序列所有的值都变成这个t。(子序列长度len,中位数(len+1)/2)。

现在给出一个数k,询问能否通过操作把整个序列变成k。

题解:

找规律可以发现,我们需要序列里有一个数是k,同时需要存在两个大于等于k的数同时它们之间的距离要小于等于2。

对n是1的情况特判一下。

#include<bits/stdc++.h>
 
using namespace std;
const int maxn=1e5+100;
int a[maxn];
int n,k;
int main () {
    int t;
    cin>>t;
    while (t--) {
        cin>>n>>k;
        for (int i=1;i<=n;i++) cin>>a[i];
        if (n==1) {
            if (a[1]==k) printf("yes\n");
            else printf("no\n");
            continue;
        }
        int f=0;
        for (int i=1;i<=n;i++) if (a[i]==k) f=1;
 
        if (!f) {
            printf("no\n");
            continue;
        }
        f=0;
        int pre=0;
        for (int i=1;i<=n;i++) {
            if (pre&&a[i]>=k&&i-pre<=2) {
                //printf("%d %d\n",pre,i);
                f=1;
            }
            if (a[i]>=k) pre=i;
        }
        if (!f) printf("no\n");
        else printf("yes\n");
    }
}

 

CF1350D Orac and Medians(找规律)

标签:题意   个数   ==   for   code   ++   通过   长度   规律   

原文地址:https://www.cnblogs.com/zhanglichen/p/12942647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!