1 条题解

  • 0
    @ 2025-8-24 22:06:15

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Ark__Skadi
    **

    搬运于2025-08-24 22:06:15,当前版本为作者最后更新于2018-11-12 14:06:33,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    (其实是USACO原题)

    它就是一个贪心。

    题目里给的样例是4,3,2,5,3,5;

    可以选择一个区间进行“填坑”操作;

    所以我们的贪心策略是:

    若a[i]>a[i-1],计数器sum+=a[i]-a[i-1];

    那么为什么这样贪心是对的呢?

    贪心证明

    假设现在有一个坑,但旁边又有一个坑。

    你肯定会选择把两个同时减1;

    那么小的坑肯定会被大的坑“带着”填掉。

    大的坑也会减少a[i]-a[i-1]的深度,可以说是“免费的”;

    所以这样贪心是对的;

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int n,a[100005];
    long long ans=0;
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++)     cin>>a[i];
    	for(int i=2;i<=n;i++)     if(a[i]>a[i-1]) ans+=a[i]-a[i-1];
    	cout<<ans+a[1];
    	return 0;
    }
    

    记得要加上a[1],或者在前面填一个0; (这是本蒟蒻第一次写题解,支持一下哦。)

    • 1

    信息

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