• Comet OJ 夏季欢乐赛 距离产生美


    距离产生美

    https://cometoj.com/contest/59/problem/B?problem_id=2680

    题目描述

     

    JWJU放暑假了,于是鸡尾酒就和女朋友璇璇一起出去玩。但是外面太热了,只要他们牵牵手就会手心出汗。鸡尾酒觉得在这些热的地方就应该保持距离,不然就实在热的受不了了!

    现在鸡尾酒获得了一个长度为n的数组,且第i个元素为a_{i}ai

    这个数组他看着都热——相邻两个元素实在太接近了。他觉得对于任意的 i(1 < i le n)i(1<in),都必须满足 |a_{i}-a_{i-1}| ge kaiai1k,才能被称为“凉快的数组”。

    多管闲事的鸡尾酒想帮这个数组降降温。他每一次可以把一个元素改成 [0,10^{18}][0,1018] 中的任意值,请问他最少修改几个元素,才能使得这个数组变为“凉快的数组”。

     
     

    输入描述

     

    第一行一个正整数输入 n, kn,k,

    接下来一行包含 nn 个正整数,依次表示 a_{i}ai

    (1 le n le 10^{5}1n105 ,0 le  a_{i},k le 10^{9}0 ai,k109)

    输出描述

     

    输出一行一个正整数表示最少的修改次数

    样例输入 1 

    3 5
    1 1 2
    

    样例输出 1

    1

    提示

    可以将中间的数字改为8,这样原数组变为[1,8,2][1,8,2],满足“凉快的数组”的定义,且这样的修改次数是最少的。(当然也有其他的方案只修改1次就使得数组满足要求)

     这场比赛最水的题。

    标记+模拟,轻松AC

    CODE

    #include<cstdio>
    #include<cmath>
    using namespace std;
    int n,k,ans;
    int a[100000001];
    int main()
    {
        scanf("%d%d",&n,&k);
        if(n==1)
        {
            printf("0");
            return 0;
        }
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=2;i<=n;i++)
        {
            if(a[i]==-1 || a[i-1]==-1)
                continue;
            if(abs(a[i]-a[i-1])<k)
                a[i]=-1,ans++;
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    Git之不明觉厉11-利其器source tree
    GUI for git|SourceTree|入门基础
    UIButton
    NSDictionary
    注释方法、代码块加快捷键注释
    UIActionSheet
    UIActivityIndicatorView
    UIPickerView
    UIImageView
    UIAlertView
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11262325.html
Copyright © 2020-2023  润新知