为啥最后两个点TLE(求助大佬)???
查看原帖
为啥最后两个点TLE(求助大佬)???
474522
Anduin_Urien楼主2021/7/8 19:40
#include<bits/stdc++.h>
using namespace std;
long long dp[10000005];
long long w[1000005],v[1000005];
int main(){
	int t,m;
	scanf("%d%d",&t,&m);
	int mi=0x3f3f3f3f;
	for(int i=1;i<=m;i++){
		scanf("%lld%lld",w+i,v+i);
		if(w[i]<mi)mi=w[i];
	}
	for(int i=1;i<=m;i++){
		for(int j=t;j>=0;j--){
			for(int k=0;k<=t/mi+1;k++){
				
				if(j>=w[i]*k){
					dp[j]=max(dp[j-w[i]*k]+v[i]*k,dp[j]);
				}
				else break;
			}
			
		}
	}
	printf("%lld",dp[t]);
	
	
	return 0;
}
2021/7/8 19:40
加载中...