在这篇题解中提到了一个结论:答案为最小的满足 ∣x−∑i=0m−1ximodn∣+∣y−∑i=0m−1yimodn∣≤mk。的 m。但是对于
2 10 10 10
-9 0
-10 0
这样的数据,虽然该题解代码输出的答案是对的(39),但是这样的答案并不符合上述的式子。按照 m=39 计算,上式左边是 400,而右边为 390。不等号显然不成立。我算了很多遍都是这个结果。然后使用这份代码
#include <iostream>
using namespace std;
int x[100005], y[100005];
int Abs(int x) { return (x < 0 ? -x : x); }
int main() {
int n, X, Y, k;
cin >> n;
cin >> X >> Y >> k;
for (int i = 0; i < n; i++) cin >> x[i];
for (int i = 0; i < n; i++) cin >> y[i];
int m;
cin >> m;
for (int i = 0; i < m; i++) {
X -= x[i % n];
Y -= y[i % n];
}
cout << Abs(X) + Abs(Y) << " " << m * k << "\n";
return 0;
}
进行计算,得到的结果也是 m=39 时式子不成立。所以这篇题解能够通过到底是因为这个式子成立而我是小丑,还是因为这篇题解的代码实际上并没有照着这个式子写?