hack?
查看原帖
hack?
743373
Vitamin_B楼主2024/8/22 21:31

rt,莫队块长老问题

被hack代码:

//# pragma GCC optimize("Ofast,no-stack-protector")
//
//# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

# include <bits/stdc++.h>

# define I return

# define AK 0

# define IOI ;

using namespace std;

typedef long long ll;

typedef pair <int, int> pii;

int n, m, len, a[50005], pie[50005], c[50005], l = 1, r;

ll sum, ans[50005];

struct node {

	int l, r, id;

	bool operator < (const node& x) const {

		return pie[l] != pie[x.l] ? pie[l] < pie[x.l] : pie[l] & 1 ? r > x.r : r < x.r;

	}

} q[50005];

void add (const int x) {

	sum += c[a[x]] * 2 + 1;

	++ c[a[x]];

	return ;

}

void del (const int x) {

	sum -= c[a[x]] * 2 - 1;

	-- c[a[x]];

	return ;

}

int main () {

	ios::sync_with_stdio (0);

	cin.tie (0);

	cout.tie (0);

	cin >> n >> m >> len;

	len = n / sqrt (m);

	for (int i = 1; i <= n; ++ i)
		cin >> a[i], pie[i] = i / len;

	for (int i = 0; i < m; ++ i)
		cin >> q[i].l >> q[i].r, q[i].id = i;

	sort (q, q + m);

	for (int i = 0; i < m; ++ i) {

		while (l > q[i].l)
			add (-- l);

		while (r < q[i].r)
			add (++ r);

		while (l < q[i].l)
			del (l ++);

		while (r > q[i].r)
			del (r --);

		ans[q[i].id] = sum;

	}

	for (int i = 0; i < m; ++ i)
		cout << ans[i] << '\n';

	I AK IOI

}

hack.in:

1 2 1
1
1 1
1 1

hack.out

1
1

被hack代码会re,原因是块长len=n/sqrt(m)=0

2024/8/22 21:31
加载中...