B3974 [语言月赛 202405] 放行李 题解
ShiRoZeTsu · · 题解
Source & Knowledge
2024 年 5 月语言月赛,由洛谷网校入门计划/基础计划提供。
题目大意
给定两个长度为
题目分析
- 如何求出绝对值
首先,可以写一个函数 int f(int x) 用来求出
int f(int x) {
if(x >= 0) return x;
return -x;
}
其次,你也可以使用 c++ 自带的绝对值函数,即 abs(),直接就可以求出绝对值了。
- 解决问题
首先,我们可以用二维数组存储这两个 a,用
int a[2][1000005];
...
for(int i = 1; i <= n; i++) cin >> a[0][i];
for(int i = 1; i <= n; i++) cin >> a[1][i];
然后考虑求出答案。我们用
int ans = n, line = -1;
接下来,先循环遍历
for(int i = 1; i <= n; i++) if(a[p][i] == 0)
if(line == -1 || abs(i-q) < ans) ans = abs(i-q), line = p;
然后循环遍历
for(int i = 1; i <= n; i++) if(a[1-p][i] == 0)
if(line == -1 || abs(i-q) < ans) ans = abs(i-q), line = 1-p;
最后,如果
if(line == -1) cout << -1 << '\n';
else cout << line << ' ' << ans << '\n';