リモコン
题意:
题目描述: 高桥君要调整空调的设定温度。现在的设定温度是A度,而他想调到B度。 空调遥控器按一次可以:
- 上调或下调1度
- 上调或下调5度
- 上调或下调10度 高桥君想求出从A调到B度的最小操作数
很经典的bfs题,直接暴力跑就可以。
#include <bits/stdc++.h>
#define int long long
const int N = 1e6 + 9;
int q[N];
int f[N];
signed main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int a, b;
std::cin >> a >> b;
int hh = 0, tt = -1;
q[++tt] = a;
while (hh <= tt) {
int t = q[hh];
hh++;
if (t == b) {
std::cout << f[t] << "\n";
break;
}
if (!f[t + 1] && t + 1 <= 40) f[t + 1] = f[t] + 1, q[++tt] = t + 1;
if (!f[t - 1] && t - 1 >= 0) f[t - 1] = f[t] + 1, q[++tt] = t - 1;
if (!f[t + 5] && t + 5 <= 40) f[t + 5] = f[t] + 1, q[++tt] = t + 5;
if (!f[t - 5] && t - 5 >= 0) f[t - 5] = f[t] + 1, q[++tt] = t - 5;
if (!f[t + 10] && t + 10 <= 40) f[t + 10] = f[t] + 1, q[++tt] = t + 10;
if (!f[t - 10] && t - 10 >= 0) f[t - 10] = f[t] + 1, q[++tt] = t - 10;
}
return 0;
}
还打了cfdiv4,后续更新div4A~G全题解。