1 条题解

  • 0
    @ 2025-8-24 21:35:32

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar KEVIN_L
    这个家伙很勤奋,什么也没有留下

    搬运于2025-08-24 21:35:32,当前版本为作者最后更新于2020-03-02 12:22:48,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    蒟蒻第一次写题解,请多多包涵。

    这是一道简单的排序+贪心题目。看到这么多题解都是一个解法,我来发一个相似但是更好理解的。

    我们可以假设每一个坑都被管制了,但是由于管制的路段数量有限,所以就要减去尽可能大的没有坑路段,然后剩下的就是答案了。

    见代码(C++):

    #include<cstdio>
    #include<algorithm>           //包含sort
    int n,m;
    int a[15005],b[15005],ans;
    bool cmp(int k,int h){        //cmp函数用于让sort从大到小排列
    	return k>h;
    }
    
    int main(){
       scanf("%d%d",&n,&m);
       for(int i=1;i<=n;i++)
           scanf("%d",&a[i]);
       ans = a[n] - a[1] + 1;
       for(int i=1;i<n;i++)       //计算出每一个坑的距离
           b[i] = a[i+1] - a[i];
       std::sort(b+1,b+n,cmp);    //从大到小排序
       for(int i=1;i<m;i++){      //从中间舍去m-1段不需要的最长的路段 
           ans = ans - b[i] + 1;
       }
       printf("%d\n",ans);
    	
       return 0;                  //华丽的结束QAQ
    }
    
    • 1

    信息

    ID
    1181
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者