1 条题解
-
0
解题思路 打开宝箱只有两种最优行走策略
策略 1:先拿钥匙,再去宝箱。
策略 2:先拿箱子,再去拿钥匙扛箱子行走受体力限制:
若体力足够(宝箱钥匙距离 ≤k):直接扛箱子走到钥匙处;
若体力不足:扛箱子走 k 秒后放下,空手往返剩余路程拿钥匙。
#include <bits/stdc++.h> using namespace std; #define int long long int x,y,k,ans=1000; signed main(){ cin>>x>>y>>k; //拿到0到箱子的距离 0到钥匙的距离 和箱子到钥匙的距离 int nx=abs(x),ny=abs(y),d=abs(x-y); //先拿钥匙 int timea=ny+d; //先拿箱子 int timeb; if(d<=k){//可以抗箱子到拿钥匙 timeb=nx+d; } else{//否则先拿到箱子 然后抗k距离 此时箱子与钥匙差d-k 需要跑两趟 timeb=nx+k+(d-k)*2; } ans=min(timea,timeb); cout<<ans; }
信息
- ID
- 601
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 266
- 已通过
- 45
- 上传者