Submission #48212117
Source Code Expand
// LUOGU_RID: 138317508
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
#define rep(i,l,r) for(int i(l);i<=(r);++i)
#define per(i,r,l) for(int i(r);i>=(l);--i)
#define eb emplace_back
#define File(filename) freopen(filename ".in","r",stdin),freopen(filename ".out","w",stdout)
#ifdef EXODUS
#define Debug(...) fprintf(stderr,__VA_ARGS__)
#else
#define Debug(...) 0
#endif
//=========================================================================================================
// Something about IO
template<typename T>
void read(T &x){
x=0;T flg=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')flg=-1;ch=getchar();}
while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
x*=flg;
}
template<typename T,typename... Args>
void read(T &x,Args &...args){read(x),read(args...);}
//=========================================================================================================
// Define the global variables here.
bool membg=0;
constexpr int N=1e4+7,inf=1e9+7;
int n,A,B,C;
vector<int>g[N];
int f[N][N][2],siz[N],tmp[N][2];
bool memed=0;
//=========================================================================================================
// Code here.
void dfs(int u){
if((int)g[u].size()==0){
siz[u]=1;
f[u][0][0]=0,f[u][1][1]=1;
return;
}
for(auto v:g[u])dfs(v);
f[u][0][0]=0;f[u][0][1]=1;siz[u]=0;
for(auto v:g[u]){
for(int i=0;i<=siz[u];i++)
tmp[i][0]=f[u][i][0],tmp[i][1]=f[u][i][1];
for(int i=siz[u]+1;i<=siz[u]+siz[v];i++)
tmp[i][0]=tmp[i][1]=-inf;
for(int i=0;i<=siz[u];i++)
for(int j=0;j<=siz[v];j++)
tmp[i+j][0]=max(tmp[i+j][0],f[u][i][0]+max(f[v][j][0],f[v][j][1])),
tmp[i+j][1]=max(tmp[i+j][1],f[u][i][1]+f[v][j][0]);
for(int i=0;i<=siz[u]+siz[v];i++)
f[u][i][0]=tmp[i][0],f[u][i][1]=tmp[i][1];
siz[u]+=siz[v];
}
}
void solve(){
read(n,A,B,C);
for(int i=1;i<=n;i++)g[i].clear();
for(int i=1;i<=n;i++)
for(int j=0;j<=n;j++)
f[i][j][0]=f[i][j][1]=-inf;
for(int i=2,anc;i<=n;i++)
read(anc),g[anc].eb(i);
if(C&1)return printf("No\n"),void();
dfs(1);
if((0<=B-C/2&&B-C/2<=siz[1]&&f[1][B-C/2][0]>=B)||(0<=B-C/2+1&&B-C/2+1<=siz[1]&&f[1][B-C/2+1][1]>=B+1))
printf("Yes\n");
else printf("No\n");
return;
}
//=========================================================================================================
int main(){
Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
int timbg=clock();
int T=1;read(T);
while(T--)solve();
int timed=clock();
Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
fflush(stdout);
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - XXYX Binary Tree |
| User |
EXODUS |
| Language |
C++ 17 (gcc 12.2) |
| Score |
700 |
| Code Size |
2744 Byte |
| Status |
AC |
| Exec Time |
393 ms |
| Memory |
786308 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:18:28: warning: statement has no effect [-Wunused-value]
18 | #define Debug(...) 0
| ^
Main.cpp:94:9: note: in expansion of macro ‘Debug’
94 | Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
| ^~~~~
Main.cpp:18:28: warning: statement has no effect [-Wunused-value]
18 | #define Debug(...) 0
| ^
Main.cpp:99:9: note: in expansion of macro ‘Debug’
99 | Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
| ^~~~~
Main.cpp:95:13: warning: unused variable ‘timbg’ [-Wunused-variable]
95 | int timbg=clock();
| ^~~~~
Main.cpp:98:13: warning: unused variable ‘timed’ [-Wunused-variable]
98 | int timed=clock();
| ^~~~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
700 / 700 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00-sample-001.txt |
| All |
00-sample-001.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt, 01-037.txt, 01-038.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00-sample-001.txt |
AC |
1 ms |
3800 KiB |
| 01-001.txt |
AC |
333 ms |
785832 KiB |
| 01-002.txt |
AC |
336 ms |
785740 KiB |
| 01-003.txt |
AC |
336 ms |
785728 KiB |
| 01-004.txt |
AC |
333 ms |
785712 KiB |
| 01-005.txt |
AC |
333 ms |
785784 KiB |
| 01-006.txt |
AC |
338 ms |
785792 KiB |
| 01-007.txt |
AC |
383 ms |
786152 KiB |
| 01-008.txt |
AC |
381 ms |
786236 KiB |
| 01-009.txt |
AC |
385 ms |
786176 KiB |
| 01-010.txt |
AC |
33 ms |
44908 KiB |
| 01-011.txt |
AC |
31 ms |
44872 KiB |
| 01-012.txt |
AC |
239 ms |
560968 KiB |
| 01-013.txt |
AC |
238 ms |
560940 KiB |
| 01-014.txt |
AC |
31 ms |
44936 KiB |
| 01-015.txt |
AC |
242 ms |
561012 KiB |
| 01-016.txt |
AC |
239 ms |
560988 KiB |
| 01-017.txt |
AC |
237 ms |
560916 KiB |
| 01-018.txt |
AC |
332 ms |
673428 KiB |
| 01-019.txt |
AC |
334 ms |
673476 KiB |
| 01-020.txt |
AC |
119 ms |
219484 KiB |
| 01-021.txt |
AC |
117 ms |
219372 KiB |
| 01-022.txt |
AC |
118 ms |
219280 KiB |
| 01-023.txt |
AC |
148 ms |
219572 KiB |
| 01-024.txt |
AC |
146 ms |
219580 KiB |
| 01-025.txt |
AC |
1 ms |
3920 KiB |
| 01-026.txt |
AC |
1 ms |
3860 KiB |
| 01-027.txt |
AC |
1 ms |
3884 KiB |
| 01-028.txt |
AC |
1 ms |
3884 KiB |
| 01-029.txt |
AC |
1 ms |
4020 KiB |
| 01-030.txt |
AC |
1 ms |
3904 KiB |
| 01-031.txt |
AC |
1 ms |
3768 KiB |
| 01-032.txt |
AC |
333 ms |
785836 KiB |
| 01-033.txt |
AC |
55 ms |
94016 KiB |
| 01-034.txt |
AC |
241 ms |
560952 KiB |
| 01-035.txt |
AC |
331 ms |
785808 KiB |
| 01-036.txt |
AC |
393 ms |
786308 KiB |
| 01-037.txt |
AC |
143 ms |
219396 KiB |
| 01-038.txt |
AC |
64 ms |
94248 KiB |