提出 #20159067
ソースコード 拡げる
#include<bits/stdc++.h>
using namespace std;
const int maxN = 200009;
int N, dp[maxN], vol[maxN], t[maxN], curr[maxN];
vector < int > v[maxN];
int main ()
{
//freopen ("input", "r", stdin);
//freopen ("output", "w", stdout);
scanf ("%d", &N);
for (int i=2; i<=N; i++)
scanf ("%d", &t[i]), v[t[i]].push_back (i);
for (int i=N; i>=1; i--)
vol[i] ++, vol[t[i]] += vol[i];
for (int i=N; i>=1; i--)
{
///dp[i] = solution to subtree i
dp[i] = 1;
int unwantedControlKeptDp = 0, unwantedControlKeptVolDp = 0;
int K = 0;
for (auto j : v[i])
if (vol[j] % 2 == 0)
{
if (vol[j] - dp[j] > dp[j])
dp[i] += dp[j]; ///aoki wins out of these and he can force me at the very beginning to take them
else
{
///these are unwanted: because the controller loses and keeps control, so will be taken in the end
unwantedControlKeptDp += dp[j]; ///better one for the one who is not controller
unwantedControlKeptVolDp += vol[j] - dp[j];
}
}
else
{
///I can keep precisely [(K + 1) / 2] of these
dp[i] += vol[j] - dp[j]; ///pretend all go for Tak
curr[++K] = dp[j] - (vol[j] - dp[j]);
}
if (K % 2 == 0) dp[i] += unwantedControlKeptDp; ///bad for Aoki who stays controller in the end
else dp[i] += unwantedControlKeptVolDp;
sort (curr + 1, curr + K + 1);
for (int j=1; j<=K; j+=2)
dp[i] += curr[j];
}
printf ("%d\n", dp[1]);
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - DFS Game |
| ユーザ | geniucos |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 500 |
| コード長 | 1615 Byte |
| 結果 | AC |
| 実行時間 | 35 ms |
| メモリ | 12824 KiB |
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:14:7: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
14 | scanf ("%d", &N);
| ~~~~~~^~~~~~~~~~
./Main.cpp:16:11: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
16 | scanf ("%d", &t[i]), v[t[i]].push_back (i);
| ~~~~~~^~~~~~~~~~~~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample.txt, sample_2.txt, sample_3.txt |
| All | contract_10.txt, contract_10_2.txt, contract_10_3.txt, contract_10_4.txt, contract_2.txt, contract_2_2.txt, contract_2_3.txt, contract_2_4.txt, contract_3000.txt, contract_3000_2.txt, contract_3000_3.txt, contract_3000_4.txt, contract_500.txt, contract_500_2.txt, contract_500_3.txt, contract_500_4.txt, lucky.txt, min.txt, random.txt, random_10.txt, random_2.txt, random_3.txt, random_4.txt, random_5.txt, random_6.txt, random_7.txt, random_8.txt, random_9.txt, sample.txt, sample_2.txt, sample_3.txt, uni.txt, unlucky.txt, unu.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| contract_10.txt | AC | 34 ms | 12220 KiB |
| contract_10_2.txt | AC | 31 ms | 12480 KiB |
| contract_10_3.txt | AC | 27 ms | 12224 KiB |
| contract_10_4.txt | AC | 26 ms | 12460 KiB |
| contract_2.txt | AC | 32 ms | 11900 KiB |
| contract_2_2.txt | AC | 30 ms | 11900 KiB |
| contract_2_3.txt | AC | 32 ms | 11744 KiB |
| contract_2_4.txt | AC | 26 ms | 11680 KiB |
| contract_3000.txt | AC | 28 ms | 12444 KiB |
| contract_3000_2.txt | AC | 28 ms | 12440 KiB |
| contract_3000_3.txt | AC | 29 ms | 12452 KiB |
| contract_3000_4.txt | AC | 27 ms | 12608 KiB |
| contract_500.txt | AC | 32 ms | 12792 KiB |
| contract_500_2.txt | AC | 26 ms | 12152 KiB |
| contract_500_3.txt | AC | 31 ms | 12632 KiB |
| contract_500_4.txt | AC | 27 ms | 12612 KiB |
| lucky.txt | AC | 32 ms | 12704 KiB |
| min.txt | AC | 9 ms | 8268 KiB |
| random.txt | AC | 17 ms | 9088 KiB |
| random_10.txt | AC | 28 ms | 11004 KiB |
| random_2.txt | AC | 27 ms | 10008 KiB |
| random_3.txt | AC | 9 ms | 8608 KiB |
| random_4.txt | AC | 35 ms | 11136 KiB |
| random_5.txt | AC | 17 ms | 9364 KiB |
| random_6.txt | AC | 16 ms | 9484 KiB |
| random_7.txt | AC | 16 ms | 9116 KiB |
| random_8.txt | AC | 13 ms | 9076 KiB |
| random_9.txt | AC | 32 ms | 10984 KiB |
| sample.txt | AC | 12 ms | 8320 KiB |
| sample_2.txt | AC | 10 ms | 8400 KiB |
| sample_3.txt | AC | 8 ms | 8456 KiB |
| uni.txt | AC | 22 ms | 10088 KiB |
| unlucky.txt | AC | 33 ms | 12824 KiB |
| unu.txt | AC | 25 ms | 10888 KiB |