ABC D 求调
  • 板块学术版
  • 楼主No_Rest
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/5/18 21:41
  • 上次更新2024/5/19 07:11:47
查看原帖
ABC D 求调
550821
No_Rest楼主2024/5/18 21:41
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll read(){
	char ch;
	ll f = 0, r = 0;
	ch = getchar();
	while(ch > '9' || ch < '0') f |= ch == '-', ch = getchar();
	while(ch <= '9' && ch >= '0') r = (r << 3) + (r << 1) + (ch ^ 48), ch = getchar();
	return f ? -r : r;
}
ll a = read(), b = read(), c = read(), d = read(), x, y, e, f, g, h, ans, mp[10][10];
int main(){
	if(c - a >= 4) x = a + (c - a) / 4 * 4;
	else x = a;
	if(d - b >= 2) y = b + (d - b) / 2 * 2;
	else y = b;
	ans = (x - a) / 4 * (d - b) * 4;
	mp[1][1] = 2, mp[2][1] = 1, mp[4][1] = 1, mp[1][2] = 1, mp[2][2] = 2, mp[3][2] = 1;
	e = ((x % 4) + 4) % 4, f = ((y % 4) + 4) % 4, g = ((c % 4) + 4) % 4, h = ((d % 4) + 4) % 4;
	for(ll i = 1; i <= 4; ++i)
		for(ll j = 1; j <= 2; ++j) mp[i][j] += mp[i - 1][j];
	if(g < e && b != d) ans += (mp[4][(y & 1 ^ 1 + 2) & 1] - mp[e][y & 1 ^ 1] + mp[g][(y & 1 ^ 1 + 2) & 1]) * ((d - b) & 1) + (mp[4][1] - mp[e][1] + mp[g][1] + mp[4][2] - mp[e][2] + mp[g][2]) * ((d - b) / 2);
	else if(g > e && b != d) ans += (mp[g][(y & 1 ^ 1 + 2) & 1] - mp[e][(y & 1 ^ 1 + 2) & 1]) * ((d - b) & 1) + (mp[g][1] - mp[e][1] + mp[g][2] - mp[e][2]) * ((d - b) / 2);
	printf("%lld", ans);
    return 0;
}

ACx60,WAx8,崩溃。

希望是本质错误,不是什么大智的错。

2024/5/18 21:41
加载中...