Submission #446220

# Submission time Handle Problem Language Result Execution time Memory
446220 2021-07-21T09:40:13 Z ics0503 Stray Cat (JOI20_stray) C++17
15 / 100
60 ms 16520 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 state[turnNum + 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] == 0 && y[1] == 1) {
				flag = 1;
				return befSelection = 1;
			}
			if (y[0] == 1 && y[1] == 0) {
				flag = 1;
				return befSelection = 0;
			}
			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][4-j] != state[j])qq = 0;
				}
				if (qq) {
					flag = 1;
					return befSelection = state[4];
				}
			}
			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:132:1: warning: control reaches end of non-void function [-Wreturn-type]
  132 | }
      | ^
# Verdict Execution time Memory Grader output
1 Correct 47 ms 15528 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 36 ms 14876 KB Output is correct
4 Correct 56 ms 16488 KB Output is correct
5 Correct 56 ms 16520 KB Output is correct
6 Correct 45 ms 15380 KB Output is correct
7 Correct 45 ms 15184 KB Output is correct
8 Correct 54 ms 15984 KB Output is correct
9 Correct 52 ms 15940 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 47 ms 15528 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 36 ms 14876 KB Output is correct
4 Correct 56 ms 16488 KB Output is correct
5 Correct 56 ms 16520 KB Output is correct
6 Correct 45 ms 15380 KB Output is correct
7 Correct 45 ms 15184 KB Output is correct
8 Correct 54 ms 15984 KB Output is correct
9 Correct 52 ms 15940 KB Output is correct
10 Correct 42 ms 13376 KB Output is correct
11 Correct 40 ms 13512 KB Output is correct
12 Correct 41 ms 13464 KB Output is correct
13 Correct 46 ms 13304 KB Output is correct
14 Correct 43 ms 13684 KB Output is correct
15 Correct 46 ms 13964 KB Output is correct
16 Correct 52 ms 15988 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 13020 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 37 ms 12656 KB Output is correct
4 Correct 60 ms 14444 KB Output is correct
5 Correct 57 ms 14336 KB Output is correct
6 Correct 43 ms 13080 KB Output is correct
7 Correct 42 ms 13024 KB Output is correct
8 Correct 51 ms 13772 KB Output is correct
9 Correct 54 ms 13788 KB Output is correct
10 Correct 52 ms 13472 KB Output is correct
11 Correct 48 ms 13368 KB Output is correct
12 Correct 45 ms 13576 KB Output is correct
13 Correct 46 ms 13428 KB Output is correct
14 Correct 49 ms 13720 KB Output is correct
15 Correct 49 ms 13660 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 13020 KB Output is correct
2 Correct 1 ms 996 KB Output is correct
3 Correct 37 ms 12656 KB Output is correct
4 Correct 60 ms 14444 KB Output is correct
5 Correct 57 ms 14336 KB Output is correct
6 Correct 43 ms 13080 KB Output is correct
7 Correct 42 ms 13024 KB Output is correct
8 Correct 51 ms 13772 KB Output is correct
9 Correct 54 ms 13788 KB Output is correct
10 Correct 52 ms 13472 KB Output is correct
11 Correct 48 ms 13368 KB Output is correct
12 Correct 45 ms 13576 KB Output is correct
13 Correct 46 ms 13428 KB Output is correct
14 Correct 49 ms 13720 KB Output is correct
15 Correct 49 ms 13660 KB Output is correct
16 Correct 36 ms 11608 KB Output is correct
17 Correct 38 ms 11596 KB Output is correct
18 Correct 37 ms 11428 KB Output is correct
19 Correct 39 ms 11620 KB Output is correct
20 Correct 45 ms 12136 KB Output is correct
21 Correct 40 ms 11832 KB Output is correct
22 Correct 48 ms 13788 KB Output is correct
23 Correct 40 ms 11616 KB Output is correct
24 Correct 38 ms 11536 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 1260 KB Output is correct
2 Correct 1 ms 1044 KB Output is correct
3 Correct 2 ms 1256 KB Output is correct
4 Correct 2 ms 1256 KB Output is correct
5 Correct 2 ms 1384 KB Output is correct
6 Incorrect 2 ms 1384 KB Wrong Answer [5]
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 38 ms 11172 KB Output is correct
2 Incorrect 35 ms 11796 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 36 ms 11112 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -