80分记忆化求条
查看原帖
80分记忆化求条
1434846
ACs_King楼主2025/8/29 17:32
#include<bits/stdc++.h>
using namespace std;
int dp[505][2005],n,L,c[505],l[505],ans;
void dfs(int pos,int x,int m){
	if(x>=L){
		ans=min(ans,m);
		return;
	}
	if(pos>n) return;
	dfs(pos+1,x+l[pos],m+c[pos]);
	dfs(pos+1,x,m);
	return;
}
int main(){
	scanf("%d%d",&n,&L);
	for(int i=1;i<=n;i++) scanf("%d%d",&c[i],&l[i]);
	for(int i=1;i<=n;i++) ans+=l[i];
	if(ans<L){
		printf("no solution");
		return 0;
	}
	ans=1e9;
	dfs(1,0,0);
	printf("%d",ans);
	return 0;
}

知道要加记忆化,但是总是有不对的地方,本蒟蒻新学动态规划,不大会转移方程和记忆化,求条

2025/8/29 17:32
加载中...