답안 #257647

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
257647 2020-08-04T13:59:10 Z sjimed Snowy Roads (JOI16_snowy) C++14
0 / 100
27 ms 1792 KB
#include "Anyalib.h"
#include<bits/stdc++.h>
using namespace std;

#define fast ios::sync_with_stdio(false); cin.tie(NULL)
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define em emplace
#define all(v) (v).begin(), (v).end()
#define pre(a) cout<<fixed; cout.precision(a)
#define mp make_pair

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,pii> pipii;
const int inf = 1e9;
const ll INF = 1e18;

static int n;
static int a[555];
static int b[555];
static int p[555];
static vector<int> g[555];
static int sum[555];
static int num[555];
static int cnt = 500;

static int edge[555];

static int dist[555];

static void dfs(int x) {
	sum[x] = 1;
	for(auto i : g[x]) {
		if(i == p[x]) continue;

		p[i] = x;
		dfs(i);

		sum[x] += sum[i];
	}

	if(sum[x] >= 10) {
		sum[x] = 0;
		num[x] = cnt;
		cnt += 9;
	}
}

void InitAnya(int N , int A[] , int B[]) {
	n = N;

	for(int i=0; i<n-1; i++) {
		a[i] = A[i];
		b[i] = B[i];

		g[a[i]].eb(b[i]);
	}

	dfs(0);

	for(int i=0; i<n-1; i++) {
		if(p[a[i]] == b[i]) edge[a[i]] = i;
		else edge[b[i]] = i;
	}
}

void Anya(int C[]) {
	for(int i=0; i<n-1; i++) {
		Save(i, C[i]);
	}

	for(int i=1; i<n; i++) {
		if(sum[i] > 0) continue;

		dist[i] = 0;
		for(int j=i; j; j = p[j]) {
			dist[i] += C[edge[j]];
		}

		for(int j=num[i]; j < num[i] + 9; j++) {
			if(dist[i] & (1 << j - num[i])) Save(j, 1);
			else Save(j, 0);
		}
	}
}
#include "Borislib.h"
#include<bits/stdc++.h>
using namespace std;

#define fast ios::sync_with_stdio(false); cin.tie(NULL)
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define em emplace
#define all(v) (v).begin(), (v).end()
#define pre(a) cout<<fixed; cout.precision(a)
#define mp make_pair

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,pii> pipii;
const int inf = 1e9;
const ll INF = 1e18;

static int n;
static int a[555];
static int b[555];
static int p[555];
static vector<int> g[555];
static int sum[555];
static int num[555];
static int cnt = 500;

static int edge[555];

static void dfs(int x) {
	sum[x] = 1;
	for(auto i : g[x]) {
		if(i == p[x]) continue;

		p[i] = x;
		dfs(i);

		sum[x] += sum[i];
	}

	if(sum[x] >= 10) {
		sum[x] = 0;
		num[x] = cnt;
		cnt += 9;
	}
}

void InitBoris(int N , int A[] , int B[]) {
	n = N;

	for(int i=0; i<n-1; i++) {
		a[i] = A[i], b[i] = B[i];

		g[a[i]].eb(b[i]);
	}

	dfs(0);

	for(int i=0; i<n-1; i++) {
		if(p[a[i]] == b[i]) edge[a[i]] = i;
		else edge[b[i]] = i;
	}
}

int Boris(int city) {
	int i;
	int ans = 0;

	for(i = city; i; i = p[i]) {
		if(1 || sum[i]) ans += Ask(edge[i]);
		else {
			for(int j = num[i]; j < num[i] + 9; j++) {
				ans += Ask(j) << (j - num[i]);
			}
			break;
		}
	}

	return ans;
}

Compilation message

Anya.cpp: In function 'void Anya(int*)':
Anya.cpp:85:25: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
    if(dist[i] & (1 << j - num[i])) Save(j, 1);
                       ~~^~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 984 KB Output is correct
2 Incorrect 0 ms 776 KB Wrong Answer [2]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 1000 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 27 ms 1792 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 980 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -