--- title: "机器人跳跃问题" created: 2025-11-28 tags: - 算法 --- # 机器人跳跃问题 ## 题目 [机器人跳跃问题](https://www.acwing.com/problem/content/732/) ![[image-9ac3091f.png]] ## 思路分析 如果H(k+1)>E,那么机器人就失去H(k+1)−E的能量值,否则它将得到E−H(k+1)的能量值,那我们就可以写一个check函数,其中判断条件就是任何一步的能量值都不能小于0,如果小于0,就返回false,如果其中有任何一步使得能量大于最大高度返回true,否则就返回false ![[image-c600aa31.png]] 合并为e=2e-h[i] ![[image-7d193679.png]] 可能爆int变负数 加个特判 ## 代码实现 ```cpp #include using namespace std; #define endl '\n' const int N=100010; int n; int h[N]; bool check(int m){ for(int i=1;i<=n;i++){ m=m*2-h[i]; if(m>=1e5) return true; if(m<0) return false; } return true; } int main() { ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n; for(int i=1;i<=n;i++) cin>>h[i]; int l=0,r=1e5; while(l>1; if(check(m)) r=m; else l=m+1; } cout<