题解:AT_jag2016secretspring_b 豪邸と宅配便

· · 题解

AT_jag2016secretspring_b 豪邸と宅配便 题解

首先,假设太郎没有快递要取,即太郎在 1 至 T 的时间内都可以学习,即定义结果变量 jieg,使之等于 T,再减去拿快递的时间。

由于太郎的起点在书房,肯定要花 M 的时间去门口拿第一个快递,故 jieg 减去 M。如果两个快递之间间隔的时间大于来回的时间,可以让太郎学习一段时间,将 jieg 减去 {M\times2};如果不大于(小于等于),就在门口等待下一个快递的到来,jieg 减去 {a_i-a_{i-1}}。避雷:第一次取快递的时间已经去掉,循环要从 2 开始。

到了最后,如果拿完 n 个快递后还有时间,则输出 ans-M;如果没时间,输出 ans-(t-a_n) 即可。

最后的最后,写个奇怪的避雷:记得行末换行,不然会WA 0。

附上我的简单代码

#include<iostream>
using namespace std;

int n,m,t,a[105],jieg;
int main(){
    cin>>n>>m>>t;
    jieg=t;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    jieg-=m;
    for(int i=2;i<=n;i++){
        if(a[i]-a[i-1]>2*m) jieg-=2*m;
        else jieg-=a[i]-a[i-1];
    }
    if(t-a[n]>m) cout<<jieg-m;
    else cout<<jieg-(t-a[n]);
    cout<<"\n";
    return 0;
}
蒟蒻第一次写题解,给个关注呗
跪求管理员大大给过QWQ