80pts求助
查看原帖
80pts求助
764239
ABCgfed楼主2023/7/20 10:30
#include<iostream>
using namespace std;
long long n,m,x[10020000]={0};//x[j+(i*(n+1))]等价于二维的x[i][j]
int main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int t,v;
		cin>>t>>v;
		for(int j=1;j<=n;j++){
			if(i==0){
				if(j>=t){
					x[j+(i*(n+1))]=v;
				}
				else{
					x[j+(i*(n+1))]=0;
				}
				continue;
			}
			if(j>=t){
				if(x[j-t+(i*(n+1))]+v>x[j+((i-1)*(n+1))]){
					x[j+(i*(n+1))]=x[j-t+(i*(n+1))]+v;
				}
				else{	
					x[j+(i*(n+1))]=x[j+((i-1)*(n+1))];
				}
			}
			else{
				x[j+(i*(n+1))]=x[j+((i-1)*(n+1))];
			}
		}
	}
	cout<<x[n+((m-1)*(n+1))];
	return 0;
}
2023/7/20 10:30
加载中...