23-hdoj 1871

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1871

//题目要求是选择最便宜的宾馆,而且同一组的必须在同一个宾馆
//题解:定义一个结构体,存储宾馆的编号,房间数,及价格,
//然后按价格对结构体进行排序,然后对输入的每个数,都都结构体
//进行遍历以发现符合要求的宾馆,同事时对应的宾馆房间数目也要减少
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct node
{
int number;
int num;
int price;
}data;
data host[105];
bool cmp(node x,node y)
{
return x.price<y.price;
}
int main()
{
int t,c;
cin>>t;
while(t--)
{
cin>>c;
for(int i=0;i<c;i++)
cin>>host[i].number>>host[i].num>>host[i].price;
sort(host,host+c,cmp); //按价格由低到高进行排序
int T,n;
cin>>T;
for(int i=0;i<T;i++)
{
cin>>n;
int flag=0;
for(int j=0;j<c;j++) //遍历结构体数组
{
if(host[j].num>=n) //发现能够住下同一组学生的宾馆
{
cout<<host[j].number<<endl; //输出该宾馆的编号
host[j].num-=n; //同时减掉相应的房间数
break;
}
flag++;
}
if(flag==c) //没有找到宾馆的情况
cout<<"sorry"<<endl;
}
}
return 0;
}



评论

© 现实给了梦想多少时间 | Powered by LOFTER