QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#606877 | #6406. Stage Clear | ucup-team2818 | WA | 47ms | 69628kb | C++14 | 2.1kb | 2024-10-03 12:49:21 | 2024-10-03 12:49:21 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const ll inf = 0x3f3f3f3f3f3f3f3f;
int n, m, f[30];
ll a[40], b[40], dp[33554432];
void Solve1()
{
for (int i = 1; i <= m; i++)
{
int u, v; cin >> u >> v;
if (u > 1) f[v] |= (1 << (u - 2));
}
int N = 1 << (n - 1);
for (int st = 0; st < N; st++) dp[st] = inf; dp[0] = 0;
for (int st = 0; st < N; st++)
{
bool Fl = true;
for (int i = 0; i < n - 1; i++)
if (!((st >> i) & 1) && f[i + 2] && (st & f[i + 2]) == f[i + 2]) { Fl = false; break; }
if (!Fl) continue;
for (int i = 0; i < n - 1; i++)
if (!((st >> i) & 1)) dp[st | (1 << i)] = min(dp[st | (1 << i)], max(0ll, dp[st] - b[i + 2]) + a[i + 2]);
}
cout << dp[N - 1];
}
ll res = inf;
int fa[40], id[40], rk[40];
vector<int> g[40], h[40];
void work()
{
for (int i = 1; i <= n; i++) h[i].clear(), id[i] = i;
for (int i = 2; i <= n; i++) h[fa[i]].emplace_back(i);
sort(id + 1, id + n + 1, [&](int x, int y) { if ((a[x] <= b[x]) ^ (a[y] <= b[y])) return a[x] <= b[x]; return (a[x] <= b[x]) ? (a[x] < a[y]) : (b[x] > b[y]); });
for (int i = 1; i <= n; i++) rk[id[i]] = i;
priority_queue<pii> pq; pq.push(make_pair(-rk[1], 1));
ll sum = 0, mxd = 0;
while (pq.size())
{
int u = pq.top().second; pq.pop();
for (int v : h[u]) pq.push(make_pair(-rk[v], v));
mxd = max(mxd, sum + a[u]); sum += a[u] + b[u];
}
res = min(res, mxd);
}
void dfs(int ind)
{
if (ind == n + 1)
{
work();
return;
}
for (int u : g[ind]) fa[ind] = u, dfs(ind + 1);
}
void Solve2()
{
for (int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
g[v].emplace_back(u);
}
dfs(2); cout << res;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for (int i = 2; i <= n; i++) cin >> a[i] >> b[i];
if (n <= 26) Solve1();
else Solve2();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3620kb
input:
4 4 4 2 5 3 2 6 1 2 1 3 2 4 3 4
output:
4
result:
ok 1 number(s): "4"
Test #2:
score: 0
Accepted
time: 1ms
memory: 3752kb
input:
15 14 254040392438309 117083115436273 500005748229691 557255157630172 821034233718230 865199673774998 659892147898798 987564141425694 81172575487567 811635577877255 751768357864605 341103322647288 454926350150218 140191090713900 921608121471585 659295670987251 223751724062143 505619245326640 8907765...
output:
1665396301509143
result:
ok 1 number(s): "1665396301509143"
Test #3:
score: 0
Accepted
time: 2ms
memory: 5988kb
input:
18 17 636830992776530 847574431876821 330869946457865 78274534165482 450581372553540 11565219334965 8736347226844 17186323694285 870805093198860 559070167736042 674369178493171 930151818400874 641605209598997 222521062460239 450936030349531 469197172169023 831295459816974 626096008793091 53095460351...
output:
2375957544280218
result:
ok 1 number(s): "2375957544280218"
Test #4:
score: 0
Accepted
time: 0ms
memory: 8420kb
input:
20 19 539893468691183 767805205447882 240338186903141 960937349402327 942645580569365 896509929612645 542601575005817 191461109090531 540992546866047 765080044816119 904535155855114 858111921213175 452499200048240 115895143306864 983856946412026 838504718536099 586421298181479 265212699386882 677124...
output:
800919806038419
result:
ok 1 number(s): "800919806038419"
Test #5:
score: 0
Accepted
time: 47ms
memory: 69628kb
input:
24 23 114281007218527 308690671179962 145951034437731 718976086594208 709172151907814 926071954787084 224496444610281 498657753059525 874422017133378 857676356343078 532175866197017 818525693672607 303837639402605 374469705563954 512244364294540 952911486867703 748959419417502 249992707230361 512696...
output:
114281007218527
result:
ok 1 number(s): "114281007218527"
Test #6:
score: -100
Wrong Answer
time: 0ms
memory: 3532kb
input:
36 35 389328367777319 678636570542258 32216944647452 612585362150577 891592845704885 596030605892036 688825276167602 461516360471825 916552899998310 106733202183953 400050408958777 670724326933521 995792861502757 894514508573875 14511185222713 612305257166443 175168368096281 508263855969282 85578802...
output:
34308295611563165
result:
wrong answer 1st numbers differ - expected: '171942144116875', found: '34308295611563165'