Hot Start Up (easy version) CF1799

发布时间 2023-04-04 14:21:53作者: towboat

你有两个 CPU,n个程序(m个类型)要运行

在不同条件下程序运行的时间不同,但连续运行的时间满足小于等于在不连续状态下运行的时间。

 

 

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
 const int N =5002;
 #define int long long
 #define inf 1e17
 int n,K,c[N],a[N],b[N];
 int f[N][N] ;
 
 void sov(){
 	int i,j; 
 	cin>>n>>K;
 	for(i=1;i<=n;i++) cin>>c[i];
 	for(i=1;i<=K;i++) cin>>b[i];
 	for(i=1;i<=K;i++) cin>>a[i];
 	for(i=0;i<=n;i++)
 	 for(j=0;j<=K;j++) f[i][j]=inf;
 	
 	f[1][0]=b[c[1]];
 	for(i=2;i<=n;++i){
 		int t=c[i-1];
	 	for(j=0;j<=K;j++){
	 	 	f[i][j]=min(f[i][j],f[i-1][j]+ 
	 	 	(c[i]==t?a[c[i]]:b[c[i]]));
	 	 	
	 	  	f[i][t]=min(f[i][t],f[i-1][j]+
	 	  	(c[i]==j?a[c[i]]:b[c[i]]));
	 	}
 	} 
 	int ans=inf;
 	 for(j=0;j<=K;j++) ans=min(ans,f[n][j]);
 	cout<<ans<<endl;
 }
 signed main(){
 	int tes;
 	cin>>tes;
 	while(tes--) sov();
 }