样例能过,但是爆零了
查看原帖
样例能过,但是爆零了
137723
pencil楼主2021/8/29 10:39
#include<iostream>
using namespace std;
int ans=-1,a[666],b[666],son[666][4],cnt=1;
void gg(int wz) {
	cin>>a[wz]>>b[wz];
	if(!b[wz]) {
		son[wz][1]=++cnt;
		gg(cnt);
		son[wz][2]=++cnt;
		gg(cnt);
	}
}
void dfs(int wz,int time,int wt,int draw) {
	if(!wz)return;
	wt+=a[wz];
 	while(b[wz]&&time-wt*2>=5) {
		time-=5;
		draw++;
		b[wz]--;
	}
	if(time-wt*2<5) {
		ans=max(draw,ans);
		return;
	}
	dfs(son[wz][1],time,wt,draw);
	dfs(son[wz][2],time,wt,draw);
}
int main() {
	int n;
	cin>>n;
	gg(1);
//	for(int i=1; i<=n; i++)
//		cin>>a[i]>>b[i];
	dfs(1,n,0,0);
	cout<<ans;
	return 0;
}
2021/8/29 10:39
加载中...