QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#422820#5956. Paradox Sort251Sec32 ✓52ms3972kbC++141.6kb2024-05-27 19:37:022024-05-27 19:37:03

Judging History

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

  • [2024-05-27 19:37:03]
  • 评测
  • 测评结果:32
  • 用时:52ms
  • 内存:3972kb
  • [2024-05-27 19:37:02]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T;
bool del[105];
int deg[105], e[105][105], n, a;
void Add(int u, int w) {
	for (int i = 1; i <= n; i++) if (!e[u][i] && i != u) deg[i] += w;
	del[u] = w != 1;
}
struct P {
	int u, d;
	bool operator<(const P &b) const { return d < b.d; }
} p[105];
int pC;
int C(int u, int v) { return e[u][v] ? v : u; }
bool Chk(int s) {
	pC = 0;
	for (int i = 1; i <= n; i++) if (!del[i]) p[++pC] = { i, deg[i] };
	sort(p + 1, p + pC + 1);
	bool flg = false, anyE = false;
	for (int i = 1, x = 0, las = 0; i <= n; i++) {
		anyE |= e[s][p[i].u];
		x += p[i].d;
		if (x == i * (i - 1) / 2) {
			bool hasA = false;
			for (int j = las + 1; j <= i; j++) hasA |= (p[j].u == a);
			if (hasA) flg = true;
			if (!flg) {
				for (int j = las + 1; j <= i; j++) if (!e[p[j].u][s]) return false;
			}
			las = i;
		}
	}
	return anyE || s == a;
}
int main() {
	scanf("%d", &T);
	for (int tid = 1; tid <= T; tid++) {
		printf("Case #%d: ", tid);
		memset(del, 0, sizeof(del));
		memset(deg, 0, sizeof(deg));
		int cur = 0;
		scanf("%d%d", &n, &a), a++;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				char c; scanf(" %c", &c);
				e[i][j] = (c == 'N');
				deg[i] += e[i][j];
			}
			e[0][i] = true;
		}
		if (!Chk(0)) puts("IMPOSSIBLE");
		else {
			for (int i = 1; i <= n; i++) {
				for (int j = 1; j <= n; j++) {
					if (!del[j]) {
						Add(j, -1);
						if (Chk(C(cur, j))) {
							cur = C(cur, j);
							printf("%d%c", j - 1, " \n"[i == n]);
							break;
						}
						Add(j, 1);
					}
				}
			}
		}
	}
	return 0;
}

详细

Subtask #1:

score: 4
Accepted

Test #1:

score: 4
Accepted
time: 1ms
memory: 3836kb

input:

100
3 0
-YN
N-Y
YN-
2 0
-Y
N-
5 0
-YNNN
N-YNN
YN-YN
YYN-Y
YYYN-
5 1
-NYYY
Y-NNN
NY-NY
NYY-N
NYNY-
6 5
-YYNNY
N-YYNY
NN-NYN
YNY-NY
YYNY-Y
NNYNN-
4 0
-YYY
N-YN
NN-N
NYY-
2 0
-Y
N-
5 1
-NYNY
Y-YYY
NN-YY
YNN-N
NNNY-
7 5
-YYYYYY
N-NNYYN
NY-YNNN
NYN-NYN
NNYY-NN
NNYNY-N
NYYYYY-
8 0
-YNNNNNN
N-YNNNNN
YN-YNN...

output:

Case #1: 1 2 0
Case #2: 0 1
Case #3: 3 4 2 1 0
Case #4: 0 2 3 4 1
Case #5: 0 1 3 4 2 5
Case #6: 0 1 2 3
Case #7: 0 1
Case #8: 0 1 2 3 4
Case #9: IMPOSSIBLE
Case #10: 6 7 5 4 3 2 1 0
Case #11: 0 1 2
Case #12: 0 1
Case #13: 0 1
Case #14: IMPOSSIBLE
Case #15: IMPOSSIBLE
Case #16: 7 8 6 5 4 3 1 2 0
Case...

result:

ok 100 lines

Subtask #2:

score: 28
Accepted

Test #2:

score: 28
Accepted
time: 52ms
memory: 3972kb

input:

100
39 0
-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
N-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
YN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
YYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
YYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
YYYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
YYYYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
YYYYYYN-YNN...

output:

Case #1: 37 38 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Case #2: 0 13 23 28 30 34 38 40 41 42 43 46 49 51 52 33 5 1 17 32 15 29 19 10 16 47 48 9 4 27 6 7 18 31 8 11 26 50 3 37 25 35 45 20 24 39 22 12 44 36 2 21 14
Case #3: 0 1 2 3 4 5 6 8 9...

result:

ok 100 lines

Extra Test:

score: 0
Extra Test Passed