QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#302162#15. 虫逢Unknown1508Compile Error//C++202.0kb2024-01-10 17:03:552024-01-10 17:03:56

Judging History

你现在查看的是最新测评结果

  • [2024-01-10 17:03:56]
  • 评测
  • [2024-01-10 17:03:55]
  • 提交

answer

#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("arch=skylake")

#include <bits/stdc++.h>
using namespace std;

void main_program();

signed main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	main_program();
}

using u8 = uint8_t;
template <class T>
using uset = unordered_set<T>;

int n, M, L;
string s;

vector<int> mapping, answer;
vector<vector<int>> A;
vector<uset<int>> content;

void create_mapping(){
	mapping.assign(256, 0);
	int crr = 0;
	for (char c = 'a'; c <= 'z'; c++) mapping[c] = crr++;
	for (char c = 'A'; c <= 'Z'; c++) mapping[c] = crr++;
	for (char c = '0'; c <= '9'; c++) mapping[c] = crr++;
	for (char c: "~!@#$%^&()[]`:;\"'<>,.?/|\\=-{}") mapping[c] = crr++;
}

inline bool has(int a, int val) { return content[a].find(val) != content[a].end(); }

map<pair<int, int>, bool> cache;
bool equivalent(int a, int b){
	if (a > b) swap(a, b);
	if (cache.count({a, b})) return cache[{a, b}];
	int cnt = 0;
	for (int x = 0; x < L; x++){
		cnt += has(b, A[a][x]);
	}
	return cnt >= L/2;
}

void main_program(){
	cin >> n >> M >> L;
	cin >> s;

	create_mapping();
	answer.assign(n * 2, -1);
	content.resize(n * 2);
	A.assign(n * 2, vector<int>(L));
	map<int, vector<int>> mp;

	for (int i = 0; i < n * 2; i++){
		for (int j = 0; j < L; j++){
			int H = 0;
			for (int k = 0; k < 4; k++){
				H = H * 92 + mapping[s[i * L * 4 + j * 4 + k]];
			}
			mp[H].push_back(i);
			A[i][j] = H;
			content[i].insert(H);
		}
	}

	auto rand_1n = uniform_int_distribution<>(0, L-1);
	mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

	for (int i = 0; i < n * 2; i++){
		while (answer[i] < 0){
			int j1 = rand_1n(rng);
			int j2 = rand_1n(rng);
			if (j1 == j2) continue;

			int val1 = A[i][j1], val2 = A[i][j2];

			for (auto k: mp[val1]){
				if (answer[k] >= 0) continue;
				if (!has(k, val2)) continue;

				if (equivalent(i, k)){
					answer[i] = k; answer[k] = i;
					break;
				}
			}
		}
	}

	for (int i = 0; i < n * 2; i++) cout << answer[i] + 1 << "\n";
}

Details

In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/gthr.h:148,
                 from /usr/include/c++/11/ext/atomicity.h:35,
                 from /usr/include/c++/11/bits/ios_base.h:39,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from answer.code:4:
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:102:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  102 | __gthrw(pthread_once)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:102:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:103:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  103 | __gthrw(pthread_getspecific)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:103:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:104:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  104 | __gthrw(pthread_setspecific)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:104:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:106:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  106 | __gthrw(pthread_create)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:106:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:107:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  107 | __gthrw(pthread_join)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:107:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:108:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  108 | __gthrw(pthread_equal)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:108:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:109:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  109 | __gthrw(pthread_self)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:109:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:110:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  110 | __gthrw(pthread_detach)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:110:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:112:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  112 | __gthrw(pthread_cancel)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:112:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:114:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  114 | __gthrw(sched_yield)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:114:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:116:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  116 | __gthrw(pthread_mutex_lock)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:116:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:117:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  117 | __gthrw(pthread_mutex_trylock)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:117:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:119:1: error: attribute value ‘arch=skylake’ was already specified in ‘target’ attribute
  119 | __gthrw(pthread_mutex_timedlock)
      | ^~~~~~~
/usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:119:1: error: attribute value ‘arch=skylake’ was already specified i...