您的位置:首页 > 其它

codevs1253 超级市场

2015-01-17 14:51 363 查看
dp。
f[i]=买菜单前i个菜的最小花费。
#include<cstdio>
#include<iostream>
#include<iomanip>
#include<queue>
#define R0(i,n) for(int i=0;i<n;++i)
#define R1(i,n) for(int i=1;i<=n;++i)
#define INF 0x7fffffff
using namespace std;
typedef long long ll;
double f[101]; int m,n,k,menu[105];
int main(){
	double p;
	R0(i,101)f[i]=INF;
	f[0]=0;
	cin>>m>>n;
	R1(i,m)cin>>menu[i]; 
	R1(i,n){
		cin>>k>>p;
		for(int j=m;j>=0;j--) 
			if(menu[j]==k)f[j]=min(f[j],f[j-1]+p);
	}
	if(f[m]>=INF) cout<<"Impossible";
	else cout<< fixed<<setprecision(2)<<f[m];
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: