搜索优化能过吗
查看原帖
搜索优化能过吗
476620
TempestJueMu楼主2022/7/9 08:37

rt,我的搜索90pts(O2),TLE on #10

虽然就一句剪枝

int n,m;
struct node
{
	int v,w,q;
}a[70];
int lst[65];//后缀和
int ans;
bool buy[65];
inline void dfs(int now,int hv,int ls)
{
	if(hv+lst[now]<=ans)return;
	if(now==m+1){ans=max(ans,hv);return;}
	if(ls>=a[now].v&&(a[now].q==0||buy[a[now].q]))buy[now]=1,dfs(now+1,hv+a[now].w,ls-a[now].v),buy[now]=0;
	dfs(now+1,hv,ls);
}
int main()
{
	n=read(),m=read();n/=10;
	for(register int i=1;i<=m;++i)
		a[i].v=read(),a[i].w=read(),a[i].q=read(),a[i].v/=10,a[i].w=a[i].w*a[i].v;
	for(register int i=m;i>=1;--i)lst[i]=lst[i+1]+a[i].w;
	dfs(1,0,n);
	printf("%d",ans*10);
	return 0;
}
2022/7/9 08:37
加载中...