30pts(深搜),TLE
查看原帖
30pts(深搜),TLE
1288331
hjb13357896690楼主2024/10/29 20:27

rt。深搜是不是不行,得宽搜啊(不会)。

#include <bits/stdc++.h>
using namespace std;
int n,v,ans=INT_MIN,a[105],b[105];
void dr()
{
	cin>>v>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i]>>b[i];
	}
}
void dg(int dep,int sumt,int sumv)
{
	if(n<dep)
	{
		if(sumv>ans)
		{
			ans=sumv;
		}
	}
	else
	{
		dg(dep+1,sumt,sumv);
		if(sumt+a[dep]<=v)
		{
			dg(dep+1,sumt+a[dep],sumv+b[dep]);
		}
	}
}
int main()
{
    dr();
	dg(1,0,0);
	cout<<ans;
    return 0;
}

By the way:壶关

2024/10/29 20:27
加载中...