ACM模版
由:
|x+y|≡0 mod (2∗a)
|x + y| \equiv 0\ mod\ (2 * a)
|x−y|≡0 mod (2∗b)
|x - y| \equiv 0\ mod\ (2 * b) 可得,
x+y=n∗(2∗a)
x + y = n * (2 * a)
x−y=m∗(2∗b)
x - y = m * (2 * b)
此时,画一下图就很容易发现,沼泽都是连在一起的,并且都是对角线,两个公式,一个是主对角线组,一个是副对角线组,由于 aa 和 bb 的不同导致对角线密度不同,进而可以发现,最少经过的沼泽地等于起点和终点的主副对角线跨越条数最多的那个。
可能描述不是特别清晰,画一下图大概就能懂了。这个题是规律题,属于只要弄清楚样例就一定可以 ACAC 的题,放在 55 级题有些夸张了,导致有的人想多了。
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main()
{
double a, b, x1, x2, y1, y2;
while (~scanf("%lf%lf%lf%lf%lf%lf", &a, &b, &x1, &y1, &x2, &y2))
{
int n = abs(ceil((x1 + y1) / (2 * a)) - ceil((x2 + y2) / (2 * a)));
int m = abs(ceil((x1 - y1) / (2 * b)) - ceil((x2 - y2) / (2 * b)));
printf("%d\n", max(n, m));
}
return 0;
}