zoukankan      html  css  js  c++  java
  • [AtCoder Regular Contest 101] C.Candles

    [AtCoder Regular Contest 101] C.Candles

    image-20210120115924817

    做题真不能纯用脑袋硬想- -这题早有思路了,但是处理一些边界条件有点复杂花了10分钟

    简单来说,你所选择点亮的蜡烛一定是连续分布的。假如你选择了一个间断的蜡烛,那么中间那一部分的距离与其浪费不如将那些蜡烛点亮。因此,最终得到的点亮的蜡烛一定处于一个长度为K的连续区间上。不妨假设这个区间的左端点,求出最短距离。这个操作可以在(O(n))的复杂度内完成。

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e5+10;
    int arr[N];
    
    int main(){
        int n,k;
        scanf("%d%d",&n,&k);
        for(int i = 1; i <= n; ++i){
            scanf("%d",&arr[i]);
        }
        int maxl = n-k+1;
        int ans = 0x3fffffff;
    
        for(int l = 1; l <= maxl; ++l){
            int r = l + k - 1;
            // [l,r] 
            if(arr[r] <= 0){
                ans = min(ans,-arr[l]);
            }else if(arr[l] >= 0){
                ans = min(ans,arr[r]);
            }else{
                ans = min(ans,min(arr[r] - 2 * arr[l],2 * arr[r] - arr[l]));
            }
        }
    
        printf("%d",ans);
        // system("pause");
        return 0;
    }
    
    ---- suffer now and live the rest of your life as a champion ----
  • 相关阅读:
    队列
    生物信息 perl 脚本实战
    Linux 命令速查
    perl 语法速查 | 模块安装
    Falcon Genome Assembly Tool Kit Manual
    Falcon:三代reads比对组装工具箱
    白话经典算法系列
    八大排序算法
    七大查找算法(附C语言代码实现)
    samtools常用命令详解(转)
  • 原文地址:https://www.cnblogs.com/popodynasty/p/14310359.html
Copyright © 2011-2022 走看看