树状数组开启o2优化可过
查看原帖
树状数组开启o2优化可过
820829
KoKoRo_楼主2023/10/19 11:54

贴上我的代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
#include <algorithm>
#define int long long int
using namespace std;
const int N = 1e7 + 100;
int n, m, idx[N], d2[N], id2i[N], a[N];

int lowbit(int x)
{
	return x & -x;
}

void add(int x, int w)
{
	for (int i = x; i <= n; i += lowbit(i))
	{
		d2[i] += w;
		id2i[i] += (x - 1) * w;
	}
}

int get_sum(int x)
{
	int res = 0;
	for (int i = x; i >= 1; i -= lowbit(i))
	{
		res += x * d2[i] - id2i[i];
	}
	return res;
}

signed main()
{
	//cin >> n >> m;
	scanf("%lld%lld", &n, &m);
	while (m--)
	{
		int l, r, k, d, s, e;
		scanf("%lld%lld%lld%lld", &l, &r, &s, &e);
		//cin >> l >> r >> s >> e;
		k = s;
		d = (e - s) / (r - l);
		add(l, k);
		add(l + 1, d - k);
		add(r + 1, -(k + (r - l) * d + d));
		add(r + 2, ((r - l) * d) + k);
	}

	int maxx = -1, ans = get_sum(1), x = get_sum(1);
	for (int i = 2; i <= n; i++)
	{
		x = get_sum(i);
		ans ^= x;
		maxx = max(maxx, x);
	}
	cout << ans << ' ' << maxx << '\n';
	return 0;
}

最慢的点400多ms

2023/10/19 11:54
加载中...