TLE60pts求卡常

也帮我卡一下

#include<bits/stdc++.h>
#define int long long
using namespace std;
int c, t, n, m, ans;
int hs[5000005];
map<int, int> mp; 
signed main() {
    freopen("set.in", "r", stdin);
    freopen("set.out", "w", stdout);
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	srand(time(0));
	cin >> c >> t;
	while (t--) {
		ans = 0;
		cin >> n >> m;
		memset(hs, 0, sizeof hs);
		mp.clear();
		while (m--) {
			int base = rand();
			int k;
			cin >> k;
			while (k--) {
				int l, r;
				cin >> l >> r;
				hs[l] ^= base;
				hs[r + 1] ^= base;
			}
		}
		for (int i = 1; i <= n; i++) hs[i] ^= hs[i - 1];
		for (int i = 1; i <= n; i++) mp[hs[i]]++;
		for (int i = 1; i <= n; i++) ans += mp[hs[i]] == 1;
		cout << ans << "\n";
	}
	return 0;
}

开新帖

1 个赞