10pts求调
查看原帖
10pts求调
788951
TLE_AK楼主2022/11/13 11:23
#include<bits/stdc++.h>
using namespace std;

int n,m;
int A[30][2];
long long Ji[30010][27];


long long dfs(int c,int bg,long long j)
{
	if(c==m+1)return j;
	if(Ji[bg][c]!=-1)return Ji[bg][c];
	long long dfs1=-1,dfs2=-1;
	if(bg+A[c][0]<=n)dfs1=dfs(c+1,bg+A[c][0],j+A[c][0]*A[c][1]);
	dfs2=dfs(c+1,bg,j);
	return Ji[bg][c]=max(dfs1,dfs2);
}

int main()
{
	memset(Ji,-1,sizeof(Ji));
	cin>>n>>m;
	for(int i=1;i<=m;i++) 
	{
		cin>>A[i][0]>>A[i][1];
	}
	cout<<dfs(1,0,0);
	return 0;
}

用记搜做的,不知道哪错了

2022/11/13 11:23
加载中...