题解:P12643 [KOI 2024 Round 1] 回收退货
大家好我是_S_MY,这是我的第一篇题解。
废话不多说 最好不说,开始做题。
目测算法为模拟加一点点数学,不是很难哈。
模拟分两个部分。
首先,卡车第一次经过所有人家。
假设司机第一趟在摸鱼,经过一户人家,如果还没把东西放出来,好的,直接开溜。不然就顺便把东西带上,用
第二趟,司机折返。
司机摸完鱼,发现自己还落下了一堆货物。检查
注意:有可能有一些人家第一趟还没把货物放出来,第二趟走到半路就放出来了,不需要等待。
学废了吗?如果还不会,可以看代码。
#include<bits/stdc++.h>
using namespace std;
long long n,x[3001],t[3001],i,l,r,md,tt,f[3001];
int main(){
cin>>n;
for(i=1;i<=n;i++){
cin>>x[i];
if(x[i]>r) r=x[i];
}
for(i=1;i<=n;i++)
cin>>t[i];
for(i=1;i<=n;i++)
if(tt>=t[i]) f[i]=1;//标记已经拿了的货物
tt=x[n];//一路走来的时间
if(t[n]>tt) tt=t[n];//回头时的特判,因为必须要等最后一户人家把货物放出来才能掉头
for(i=n-1;i>=1;i--){//第二趟
tt+=x[i+1]-x[i];
if(f[i]!=1) if(tt<t[i]) tt=t[i];
}
cout<<tt+x[1];//回到起点
return 0;
}
完全看懂之后再copy,否则遭天谴