QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#244330#7687. Randias Permutation Taskucup-team2432#WA 0ms3652kbC++201.5kb2023-11-08 23:12:572023-11-08 23:12:57

Judging History

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

  • [2023-11-08 23:12:57]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3652kb
  • [2023-11-08 23:12:57]
  • 提交

answer

#include<bits/stdc++.h>

using LL = long long;
const LL inf = 1e9;
const LL P[2] = {1000000007,1000000009};
const LL K = 7653524;

void solve() {

	std::mt19937 rnd(std::random_device{}());

	int n,m;std::cin >> n >> m;
	std::vector pmt(m,std::vector<LL>(n+1));
	for (int i = 0; i < m; ++i) {
		for (int j = 0; j < n; ++j) {
			std::cin >> pmt[i][j];
		}
	}
	std::shuffle(pmt.begin(),pmt.end(),rnd);
	std::map<std::vector<LL>,int> mp;
	std::priority_queue<std::pair<int,std::vector<LL>>,std::vector<std::pair<int,std::vector<LL>>>,std::greater<>> q;
	for (int i = 0; i < m; ++i) {
		pmt[i][n] = i;
		q.emplace(i+1,pmt[i]);
	}
	LL ans = 0;
	while (!q.empty()) {
		auto [point,vec] = q.top();q.pop();
		if (!mp.count(vec)) {
			mp[vec] = vec.back();
			ans ++;
		} else {
			if (mp[vec]+10 < vec.back()) {
				continue;
			}
		}
		if (point == m) continue;
		q.emplace(point+1,vec);
		std::vector<LL> now(n+1);
		for (int i = 0; i < n; ++i) {
			now[i] = vec[pmt[point][i] - 1];
		}
		now[n] = point;
		q.emplace(point+1,now);
	}
	std::cout << ans % P[0];
}

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(nullptr);

//    clock_t st = clock();
//    std::cout << std::fixed << std::setprecision(12);

//    freopen("test.in", "r", stdin);
//    freopen("test.out", "w", stdout);

	int T = 1;
//	std::cin >> T;
	while (T --) {
		solve();
	}

//    std::cout << (double)(clock()-st)/CLOCKS_PER_SEC;

	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3652kb

input:

5 4
1 2 3 4 5
5 1 3 4 2
3 4 1 5 2
5 2 4 1 3

output:

11

result:

wrong answer 1st numbers differ - expected: '8', found: '11'