답안 #446215

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
446215 2021-07-21T09:24:23 Z ics0503 길고양이 (JOI20_stray) C++17
15 / 100
62 ms 16536 KB
#include "Anthony.h"
#include <vector>
#include<algorithm>
#include<deque>
using namespace std;

// pattern: 110100110100

vector<pair<int,int>>edge[21212];
vector<int> X;
int st;
int pattern[6] = { 1,1,0,1,0,0 };
void dfs(int w, int bef,int befState) {
	if (bef == -1) {
		for (auto ne : edge[w]) {
			int nxt = ne.first;
			X[ne.second] = pattern[0];
			dfs(nxt, w, 0);
		}
		return;
	}
	if (edge[w].size() == 2) {
		for (auto ne : edge[w]) {
			int nxt = ne.first;
			if (nxt == bef)continue;
			int state = (befState + 1) % 6;
			X[ne.second] = pattern[state];
			dfs(nxt, w, state);
		}
	}
	else {
		for (auto ne : edge[w]) {
			int nxt = ne.first;
			if (nxt == bef)continue;
			int state = 0;
			if (pattern[befState] == 0) state = 0;
			else state = 2;
			X[ne.second] = pattern[state];
			dfs(nxt, w, state);
		}
	}
}

int dist[21212];
void bfs(int n) {
	deque<int>Q;
	Q.push_back(0);
	int i, j;
	for (i = 0; i < n; i++) dist[i] = n + 1;
	dist[0] = 0;
	while (!Q.empty()) {
		int now = Q.front(); Q.pop_front();
		for (auto ne : edge[now]) {
			int nxt = ne.first;
			if (dist[nxt] > dist[now] + 1) {
				dist[nxt] = dist[now] + 1;
				Q.push_back(nxt);
			}
		}
	}
}

vector<int> Mark(int n, int m, int a, int b, vector<int> U, vector<int> V) {
	int i, j;
	for (i = 0; i < m; i++)X.push_back(0);
	for (i = 0; i < m; i++) {
		int s = U[i], e = V[i];
		edge[s].push_back({ e,i }); edge[e].push_back({ s,i });
	}
	if (a == 2) {
		dfs(0, -1, 0);
	}
	else {
		bfs(n);
		for (i = 0; i < m; i++) {
			X[i] = min(dist[U[i]], dist[V[i]]) % 3;
		}
	}
	return X;
}
#include "Catherine.h"
#include <vector>
#include<deque>
using namespace std;
int a, b;

deque<int>state;
int flag = 0, befSelection;
void Init(int A, int B) {
	a = A, b = B;
	state.clear();
	befSelection = -1;
	flag = 0;
}
/*
11010
10100
10011
00110
01101
*/
int turnNum = 0;
int a2move(vector<int>&y) {
	if (flag == 2) {
		if (turnNum > 0) {
			turnNum--;
			return -1;
		}
		else {
			flag = 1;
			befSelection = state[1];
		}
	}
	if (flag == 1) {
		if (y[0] + y[1] == 1) {
			if (y[0])return befSelection = 0;
			if (y[1])return befSelection = 1;
		}
		if (befSelection == 0)return befSelection = 1;
		return befSelection = 0;
	}
	if (state.empty()) {
		if (y[0] + y[1] >= 3) {
			if (y[0] == 1) {
				flag = 1;
				return befSelection = 0;
			}
			else {
				flag = 1;
				return befSelection = 1;
			}
		}
		if (y[0] && y[1]) { state.push_back(1); state.push_back(0); return befSelection = 0; }
		else {
			if (y[0]) {
				if (y[0] >= 2)state.push_back(0);
				state.push_back(0);
				return befSelection = 0;
			}
			else {
				if (y[1] >= 2)state.push_back(1);
				state.push_back(1);
				return befSelection = 1;
			}
		}
	}
	else {
		if (y[0] + y[1] == 0) {
			flag = 2;
			turnNum = state.size() - 1;
			turnNum--;
			return -1;
		}
		if (y[0] + y[1] >= 2) {
			flag = 1;
			if (befSelection == 0)return befSelection = 1;
			else return befSelection = 0;
		}
		if (flag == 0 && state.size() == 4) {
			if (y[0]) state.push_back(0);
			if (y[1]) state.push_back(1);
			int allST[5][5] = {
					{ 1,1,0,1,0},
					{1,0,1,0,0},
					{1,0,0,1,1},
					{0,0,1,1,0},
					{0,1,1,0,1},
			};
			int i, j;
			for (i = 0; i < 5; i++) {
				int qq = 1;
				for (j = 0; j < 5; j++) {
					if (allST[i][j] != state[j])qq = 0;
				}
				if (qq) {
					flag = 1;
					return befSelection = state[4];
				}
				else {
					flag = 2;
					turnNum = 3;
					turnNum--;
					return -1;
				}
			}
		}
		if (y[0]) {
			state.push_back(0);
			return befSelection = 0;
		}
		else {
			state.push_back(1);
			return befSelection = 1;
		}
	}
}

int a3move(vector<int>y) {
	if(befSelection!=-1)y[befSelection]++;
	if (y[0] && y[1])return befSelection = 0;
	if (y[1] && y[2])return befSelection = 1;
	if (y[2] && y[0])return befSelection = 2;
	if (y[0])return befSelection = 0;
	if (y[1])return befSelection = 1;
	if (y[2])return befSelection = 2;
}

int Move(vector<int> y) {
	if (a == 2) return a2move(y);
	else return a3move(y);
}

Compilation message

Anthony.cpp: In function 'void bfs(int)':
Anthony.cpp:48:9: warning: unused variable 'j' [-Wunused-variable]
   48 |  int i, j;
      |         ^
Anthony.cpp: In function 'std::vector<int> Mark(int, int, int, int, std::vector<int>, std::vector<int>)':
Anthony.cpp:64:9: warning: unused variable 'j' [-Wunused-variable]
   64 |  int i, j;
      |         ^

Catherine.cpp: In function 'int a3move(std::vector<int>)':
Catherine.cpp:126:1: warning: control reaches end of non-void function [-Wreturn-type]
  126 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 15396 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 35 ms 14808 KB Output is correct
4 Correct 57 ms 16536 KB Output is correct
5 Correct 57 ms 16488 KB Output is correct
6 Correct 45 ms 15188 KB Output is correct
7 Correct 44 ms 15220 KB Output is correct
8 Correct 55 ms 15904 KB Output is correct
9 Correct 54 ms 15996 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 15396 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 35 ms 14808 KB Output is correct
4 Correct 57 ms 16536 KB Output is correct
5 Correct 57 ms 16488 KB Output is correct
6 Correct 45 ms 15188 KB Output is correct
7 Correct 44 ms 15220 KB Output is correct
8 Correct 55 ms 15904 KB Output is correct
9 Correct 54 ms 15996 KB Output is correct
10 Correct 41 ms 13384 KB Output is correct
11 Correct 38 ms 13364 KB Output is correct
12 Correct 42 ms 13492 KB Output is correct
13 Correct 39 ms 13328 KB Output is correct
14 Correct 41 ms 13776 KB Output is correct
15 Correct 46 ms 14128 KB Output is correct
16 Correct 62 ms 16024 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 13104 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 34 ms 12732 KB Output is correct
4 Correct 62 ms 14340 KB Output is correct
5 Correct 53 ms 14288 KB Output is correct
6 Correct 41 ms 13112 KB Output is correct
7 Correct 42 ms 13072 KB Output is correct
8 Correct 54 ms 13688 KB Output is correct
9 Correct 48 ms 13788 KB Output is correct
10 Correct 45 ms 13452 KB Output is correct
11 Correct 45 ms 13456 KB Output is correct
12 Correct 45 ms 13404 KB Output is correct
13 Correct 46 ms 13520 KB Output is correct
14 Correct 49 ms 13832 KB Output is correct
15 Correct 55 ms 13792 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 13104 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 34 ms 12732 KB Output is correct
4 Correct 62 ms 14340 KB Output is correct
5 Correct 53 ms 14288 KB Output is correct
6 Correct 41 ms 13112 KB Output is correct
7 Correct 42 ms 13072 KB Output is correct
8 Correct 54 ms 13688 KB Output is correct
9 Correct 48 ms 13788 KB Output is correct
10 Correct 45 ms 13452 KB Output is correct
11 Correct 45 ms 13456 KB Output is correct
12 Correct 45 ms 13404 KB Output is correct
13 Correct 46 ms 13520 KB Output is correct
14 Correct 49 ms 13832 KB Output is correct
15 Correct 55 ms 13792 KB Output is correct
16 Correct 37 ms 11464 KB Output is correct
17 Correct 37 ms 11412 KB Output is correct
18 Correct 38 ms 11560 KB Output is correct
19 Correct 39 ms 11444 KB Output is correct
20 Correct 44 ms 12172 KB Output is correct
21 Correct 40 ms 11900 KB Output is correct
22 Correct 47 ms 13928 KB Output is correct
23 Correct 40 ms 11640 KB Output is correct
24 Correct 40 ms 11540 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1256 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 2 ms 1256 KB Output is correct
4 Incorrect 2 ms 1256 KB Wrong Answer [5]
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 42 ms 11136 KB Output is correct
2 Incorrect 35 ms 11852 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 36 ms 11208 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -