当青训营遇上码上掘金,小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。
步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1
公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)
输入: 两个整数 N 和 K
输出: 小青到小码家所需的最短时间。现有 n 个宽度为 1 的柱子,给出 n 个非负整数依次表示柱子的高度,排列后如下图所示,此时均匀从上空向下撒青豆,计算按此排列的柱子能接住多少青豆。就拿字典选择下拉框来说,如果不做封装,我们是这样写的#include <bits/stdc++.h>
using namespace std;
int main() { int N, K; cin >> N >> K; if (N > K) { cout << N - K << endl; break; }
int f[100005];
memset(0, 0x3f, sizeof(f));
f[N] = 0;
queue<int> q;
q.push(N);
while (q.size()) {
int u = q.front();
q.pop();
if (u == K) {
cout << f[K] << endl;
break;
}
if (u > 0 && f[u - 1] > f[u] + 1) {
f[u - 1] = f[u] + 1;
q.push(u - 1);
}
if (u < 100000 && f[u + 1] > f[u] + 1) {
f[u + 1] = f[u] + 1;
q.push(u + 1);
}
if (u <= 50000 && f[u * 2] > f[u] + 1) {
f[u * 2] = f[u] + 1;
q.push(u * 2);
}
}
return 0;
}
-
点击“开始指引”:找到id为mask的元素,为该元素添加蒙层样式(setMask)
-
添加提示信息:找到id为tip的元素,将提示信息添加为该元素的子元素(setTip)
-
高亮当前步骤元素:找到当前目标元素,克隆目标元素,然后将克隆后的目标元素添加为curStepMask的子元素(setTip)
-
定位tip和curStepMask的元素:curStepMask元素在当前目标元素的正上方,tip元素根据情况而定
-
每次添加当前提示信息时要移除上一次添加的提示信息和覆盖元素(removeTip,removeStepMask)。