QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#606877#6406. Stage Clearucup-team2818WA 47ms69628kbC++142.1kb2024-10-03 12:49:212024-10-03 12:49:21

Judging History

This is the latest submission verdict.

  • [2024-10-03 12:49:21]
  • Judged
  • Verdict: WA
  • Time: 47ms
  • Memory: 69628kb
  • [2024-10-03 12:49:21]
  • Submitted

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;
}

詳細信息

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'