栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2901 Hotel

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2901 Hotel

#include <iostream>#include <algorithm>#define maxv(a, b) ((a) &am p;gt;= (b) ? (a) : (b))#define minv(a, b) ((a) <= (b) ? (a) : (b))#define MAX_N 505#define MAX_VAL 99999999using namespace std;struct room{int cap, price;        }rooms[MAX_N + 1];int dp[MAX_N][MAX_N][2];int mn, fn, rn, cn, casen;int minCost;    void set(){for(int i = 0; i <= mn; i++)for(int j = 0; j <= fn; j++)for(int k = 0; k <= 1; k++)dp[i][j][k] = MAX_VAL;dp[0][0][0] = 0;minCost = MAX_VAL;}int main(){int i;scanf("%d", &casen);while(casen--){scanf("%d%d%d%d", &mn, &fn, &rn, &cn);for(i = 1; i <= rn; i++)scanf("%d%d", &rooms[i].cap, &rooms[i].price);set();int rp, mp, fp, cp;for(rp = 1; rp <= rn; rp++){for(mp = mn; mp >= 0; mp --){for(fp = fn; fp >= 0; fp--){for(cp = 1; cp >= 0; cp --){if(mp + fp + cp == 0) continue;if(mp >= 1) dp[mp][fp][cp] = minv(dp[mp][fp][cp], dp[mp - minv(mp, rooms[rp].cap)][fp][cp] + rooms[rp].price);if(fp >= 1) dp[mp][fp][cp] = minv(dp[mp][fp][cp], dp[mp][fp - minv(fp, rooms[rp].cap)][cp] + rooms[rp].price);if(cp >= 1 && rooms[rp].cap >= 2) dp[mp][fp][cp] = minv(dp[mp][fp][cp], dp[mp][fp][0] + rooms[rp].price);}}}if(dp[mn][fn][0] < minCost) minCost = dp[mn][fn][0];if(dp[mn - 1][fn - 1][1] < minCost) minCost = dp[mn - 1][fn - 1][1];}if(minCost == MAX_VAL) cout<<"Impossible"<<endl;else cout<<minCost<<endl;}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号