求助
查看原帖
求助
443023
chenkuo楼主2022/9/26 21:56

请大佬指点,我的程序样例都不能过,可以帮忙看看吗?

#include<bits/stdc++.h>
using namespace std;
int n,s,q,l[1000],r[1000],x[1000],y[1000],f[201][73],p;
void make(int k,int o){
	n++;
	cin>>x[n]>>y[n];
	if(o==1) l[k]=n;
	if(o==2) r[k]=n;
	int u=n;
	if(y[n]!=0){
		make(u,1);
		make(u,2);
	}
}
void sc(int k){
	if(l[k]==0&&r[k]==0){
		f[k][0]=0;
		for(int i=1;i<=y[k];i++){
			f[k][i]=i*5+x[k]*2;
		}
		return;
	}
	if(l[k]!=0) sc(l[k]);
	if(r[k]!=0) sc(r[k]);
	for(int i=1;i<=72;i++){
		for(int j=1;j<=72-i;j++){
			if(f[k][i+j]>f[l[k]][i]+f[r[k]][j]+x[k]*2){
				f[k][i+j]=f[l[k]][i]+f[r[k]][j]+x[k]*2;
			}
		}
	}
}
int main(){
	cin>>q;
	make(1,1);
	for(int i=1;i<=200;i++)
    	for(int j=1;j<=72;j++) f[i][j]=1000;
	sc(2);
	int i=72;
	while(f[2][i]>=q) i--;
	cout<<i;
}
2022/9/26 21:56
加载中...