답안 #1065742

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1065742 2024-08-19T11:24:21 Z raspy 봉쇄 시간 (IOI23_closing) C++17
29 / 100
94 ms 37036 KB
#include "closing.h"

#include <vector>
#include <queue>
#include <iostream>
#define ll long long
#define vi vector<ll>
#define pb push_back
#define ii pair<ll, ll>
#define f first
#define s second
#define inf 1'000'000'000'000'000'000

using namespace std;

vector<ii> graf[200005];
vi dis1, dis2;

void dfs(ll u, vi& dis, ll p = -1)
{
	for (auto [v, w]:graf[u])
	{
		if (v == p) continue;
		dis[v] = dis[u]+w;
		dfs(v, dis, u);
	}
}

ll sol1(ll n, ll x, ll y, ll k)
{
	priority_queue<ll, vi, greater<ll>> pq;
	for (ll i = 0; i < n; i++)
		pq.push(dis2[i]);
	ll tk = 0;
	ll rez = 0;
	while (pq.size() && tk+pq.top() <= k)
	{
		tk+=pq.top();
		pq.pop();
		rez++;
	}
	return rez;
}

ll sol2(ll n, ll x, ll y, ll k)
{
	priority_queue<ii, vector<ii>, greater<ii>> pq;
	priority_queue<ii, vector<ii>, greater<ii>> pq1;
	priority_queue<ii, vector<ii>, greater<ii>> pq2;
	int tk = 0;
	int rez = 0;
	vi dod(n);
	for (int i = 0; i < n; i++)
	{
		if (dis1[i]+dis2[i] == dis1[x])
		{
			rez++;
			tk += dis2[i];
			pq.push({dis1[i]-dis2[i], i});
		}
		else
		{
			if (dis2[i]*2 <= dis1[i])
			{
				pq.push({dis2[i], i});
				pq.push({dis1[i]-dis2[i], i});
			}
			else
			{
				pq1.push({dis1[i], i});
				pq2.push({dis2[i], i});
			}
		}
	}
	if (tk > k)
		return 0;
	while (pq1.size() && tk+pq1.top().f <= k)
	{
		if (pq.size() <= 1)
		{
			rez+=2;
			tk += pq1.top().f;
			dod[pq1.top().s] = 1;
			pq1.pop();
			continue;
		}
		ii pqt = pq.top();
		pq.pop();
		if (pqt.f+pq.top().f <= pq1.top().f)
		{
			tk += pqt.f;
			rez++;
			continue;
		}
		pq.push(pqt);
		rez+=2;
		tk += pq1.top().f;
		dod[pq1.top().s] = 1;
		pq1.pop();
	}
	while (pq.size() && tk+pq.top().f <= k)
	{
		auto [d, u] = pq.top();
		pq.pop();
		tk+=d;
		rez++;
	}
	while (pq2.size() && pq2.top().f+tk <= k)
	{
		if (dod[pq2.top().s]) {pq2.pop();continue;}
		rez++;
		tk+=pq2.top().f;
		pq2.pop();
	}
	return rez;
}

int max_score(int n, int x, int y, long long k, vector<int> U, vector<int> V, vector<int> W)
{
	for (ll i = 0; i < n; i++)
		graf[i].clear();
	dis1.clear();
	dis2.clear();
	dis1 = dis2 = vi(n, 0);
	for (ll i = 0; i < n-1; i++)
	{
		graf[U[i]].pb({V[i], W[i]});
		graf[V[i]].pb({U[i], W[i]});
	}
	dfs(x, dis1);
	dfs(y, dis2);
	for (ll i = 0; i < n; i++)
		if (dis1[i] < dis2[i])
			swap(dis1[i], dis2[i]);
	ll rez = sol1(n, x, y, k);
	rez = max(rez, sol2(n, x, y, k));
	return rez;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4952 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 94 ms 37036 KB 1st lines differ - on the 1st token, expected: '451', found: '130680'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4956 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4952 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4956 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4952 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 2 ms 4956 KB Output is correct
13 Correct 1 ms 5136 KB Output is correct
14 Correct 1 ms 4956 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Incorrect 1 ms 5212 KB 1st lines differ - on the 1st token, expected: '771', found: '1000'
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4956 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4952 KB Output is correct
4 Correct 1 ms 4956 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 2 ms 4956 KB Output is correct
13 Correct 1 ms 5136 KB Output is correct
14 Correct 1 ms 4956 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Incorrect 1 ms 5212 KB 1st lines differ - on the 1st token, expected: '771', found: '1000'
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4952 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 2 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 1 ms 4956 KB Output is correct
13 Correct 1 ms 4956 KB Output is correct
14 Correct 1 ms 4956 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4960 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Correct 1 ms 4956 KB Output is correct
20 Correct 2 ms 4956 KB Output is correct
21 Correct 1 ms 4956 KB Output is correct
22 Correct 1 ms 4956 KB Output is correct
23 Correct 1 ms 4956 KB Output is correct
24 Correct 1 ms 4956 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4952 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 1 ms 4956 KB Output is correct
13 Correct 2 ms 4956 KB Output is correct
14 Correct 1 ms 5136 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Correct 2 ms 4956 KB Output is correct
20 Correct 1 ms 4956 KB Output is correct
21 Correct 1 ms 4956 KB Output is correct
22 Correct 1 ms 4956 KB Output is correct
23 Correct 1 ms 4956 KB Output is correct
24 Correct 1 ms 4956 KB Output is correct
25 Correct 1 ms 4956 KB Output is correct
26 Correct 1 ms 4956 KB Output is correct
27 Correct 1 ms 4956 KB Output is correct
28 Correct 1 ms 4956 KB Output is correct
29 Correct 1 ms 4960 KB Output is correct
30 Correct 1 ms 4956 KB Output is correct
31 Correct 1 ms 4956 KB Output is correct
32 Correct 2 ms 4956 KB Output is correct
33 Correct 1 ms 4956 KB Output is correct
34 Correct 1 ms 4956 KB Output is correct
35 Correct 1 ms 4956 KB Output is correct
36 Correct 1 ms 4956 KB Output is correct
37 Correct 1 ms 4956 KB Output is correct
38 Correct 1 ms 4956 KB Output is correct
39 Correct 1 ms 4956 KB Output is correct
40 Correct 1 ms 4956 KB Output is correct
41 Correct 1 ms 4956 KB Output is correct
42 Correct 1 ms 4956 KB Output is correct
43 Correct 1 ms 4956 KB Output is correct
44 Correct 1 ms 4952 KB Output is correct
45 Correct 1 ms 4956 KB Output is correct
46 Correct 1 ms 4956 KB Output is correct
47 Correct 1 ms 4956 KB Output is correct
48 Correct 1 ms 4956 KB Output is correct
49 Correct 1 ms 4956 KB Output is correct
50 Correct 1 ms 4956 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4952 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 1 ms 4956 KB Output is correct
13 Correct 2 ms 4956 KB Output is correct
14 Correct 1 ms 5136 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Correct 1 ms 4956 KB Output is correct
20 Incorrect 1 ms 5212 KB 1st lines differ - on the 1st token, expected: '771', found: '1000'
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4952 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 1 ms 4956 KB Output is correct
13 Correct 2 ms 4956 KB Output is correct
14 Correct 1 ms 5136 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Correct 1 ms 4956 KB Output is correct
20 Incorrect 1 ms 5212 KB 1st lines differ - on the 1st token, expected: '771', found: '1000'
21 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4952 KB Output is correct
2 Correct 1 ms 4956 KB Output is correct
3 Correct 1 ms 4956 KB Output is correct
4 Correct 1 ms 4952 KB Output is correct
5 Correct 1 ms 4956 KB Output is correct
6 Correct 1 ms 4956 KB Output is correct
7 Correct 1 ms 4956 KB Output is correct
8 Correct 1 ms 4956 KB Output is correct
9 Correct 1 ms 4956 KB Output is correct
10 Correct 1 ms 4956 KB Output is correct
11 Correct 1 ms 4956 KB Output is correct
12 Correct 1 ms 4956 KB Output is correct
13 Correct 2 ms 4956 KB Output is correct
14 Correct 1 ms 5136 KB Output is correct
15 Correct 1 ms 4956 KB Output is correct
16 Correct 1 ms 4956 KB Output is correct
17 Correct 1 ms 4956 KB Output is correct
18 Correct 1 ms 4956 KB Output is correct
19 Correct 1 ms 4956 KB Output is correct
20 Incorrect 1 ms 5212 KB 1st lines differ - on the 1st token, expected: '771', found: '1000'
21 Halted 0 ms 0 KB -