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
AC × 1
AC × 39
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