如果你在不开 O2 的情况下 TLE 了
查看原帖
如果你在不开 O2 的情况下 TLE 了
533160
rainbow_cat楼主2025/1/21 14:50

事实证明 map 太慢了,并且此题卡 gp_hash_tablecc_hash_table
使用自定义 hash 后用 unordered_map 即可。 OI wiki 上的自定义 hash:

struct my_hash {
	static uint64_t splitmix64(uint64_t x) {
		x += 0x9e3779b97f4a7c15;
		x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
		x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
		return x ^ (x >> 31);
	}
	
	size_t operator()(uint64_t x) const {
		static const uint64_t FIXED_RANDOM =
		chrono::steady_clock::now().time_since_epoch().count();
		return splitmix64(x + FIXED_RANDOM);
	}
	size_t operator()(pair<uint64_t, uint64_t> x) const {
		static const uint64_t FIXED_RANDOM =
		chrono::steady_clock::now().time_since_epoch().count();
		return splitmix64(x.first + FIXED_RANDOM) ^
		(splitmix64(x.second + FIXED_RANDOM) >> 1);
	}
};
2025/1/21 14:50
加载中...