P3399 丝绸之路

AImee

\(dp_{i,j}表示第i天到达第j个城市\)

反正是线性的,那么要不是早就到了j在那休息,要不就是上一天从上一座城市过来

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int d[1001],c[1001];
int n,m;
int dp[1001][1001];
int znx=0x7ffffff;
int main(){
	scanf("%d%d",&n,&m);
	memset(dp,0x7f,sizeof(dp));
	for(int i=1;i<=n;++i){
		scanf("%d",&d[i]); 
	}
	for(int i=1;i<=m;++i){
		scanf("%d",&c[i]);
	}
	dp[0][0]=0;
	int maxn=dp[1][1];
	for(int i=1;i<=m;++i){
		int Ai=min(i,n);
		for(int j=0;j<=n;++j){
			if(j==0) dp[i][j]=0;
			else if(j==i) dp[i][j]=dp[i-1][j-1]+d[j]*c[i];
			else dp[i][j]=min(dp[i-1][j-1]+d[j]*c[i],dp[i-1][j]);
		}
	}
	cout<<dp[m][n];
	return 0;
} 
posted @ 2021-02-22 18:13  Simex  阅读(60)  评论(0编辑  收藏  举报