90分WA第6点的看过来
查看原帖
90分WA第6点的看过来
221002
hytree楼主2020/10/12 14:16

注意pd_DFS回溯时,waste-=a[i],要写在a[i]+=b[x];之前,我Debug搞了2个小时,还以为自己二分写错了.应该像这样,

for(int i=1;i<=m;i++)
{
	if(a[i]>=b[x])
	{
		a[i]-=b[x];
		if(a[i]<b[1]) waste+=a[i];
		if(pd_DFS(x-1,waste,mid)){a[i]+=b[x];return 1;}
		if(a[i]<b[1]) waste-=a[i];
		a[i]+=b[x];
	}
}

而不是

   for(int i=1;i<=m;i++)
   {
   	if(a[i]>=b[x])
   	{
   		a[i]-=b[x];
   		if(a[i]<b[1]) waste+=a[i];
   		if(pd_DFS(x-1,waste,mid)){a[i]+=b[x];return 1;}
   		a[i]+=b[x];
           if(a[i]<b[1]) waste-=a[i];
   		
   	}
   }
2020/10/12 14:16
加载中...