房间安排
时间限制:
3000 ms | 内存限制:
65535 KB
假设:某个定单上的游客一旦被安排到某房间,在他预定住宿的期间内是不换房间的。为了简化描述,定单上的开始住宿时间为距离现在的第几天。例如,定单为(10,30,5)表示游客要求使用10个房间,第30天开始连住5天。
-
输入
-
第一行:T 表示有T组测试数据
每组测试数据第一行:N 表示定单数
每组测试数据接下来有N行,每行有三个整数 A B C 表示房间数,开始住宿时间和天数
1<=T<=100
1<=N<=10000 1<=A<=10 1<=B<=180 1<=c<=10
输出
- 输出一个整数,为满足所有定单要求的最少房间数。 样例输入
-
1 3 3 10 4 4 9 3 3 12 6
样例输出
-
7
疑问一点点的去解决 初学的要用熟 不会但是知道它存在的要用心去学大胆去尝试 这题是贪心但是感觉不大,接触的太少。。。come on ~~
疑问一点点的去解决 初学的要用熟 不会但是知道它存在的要用心去学大胆去尝试 这题是贪心但是感觉不大,接触的太少。。。come on ~~
#include<stdio.h>
#include<string.h>
//#include <stdlib.h>
#define MAX 100010//这个地方很有必要开这么大 因为最多需要的就是五位数的房间 可是为什么250也可。。。???
int sum[MAX];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int N,room,start,day,i;
/*for(i=0;i<MAX;i++)
sum[i]=0;*/
memset(sum,0,sizeof(sum));//将数组清零
scanf("%d",&N);
while(N--)
{
scanf("%d%d%d",&room,&start,&day);
for(i=start;i<start+day;i++)
sum[i]+=room;
}//赋值
int max=0;
for(i=0;i<MAX;i++)
{
if(max<sum[i])
{
max=sum[i];
}
}//希望这个周结束的时候可以试试 1、cout<<*max_element(room, room+200)<<endl; (max_element()返回一个指向序列[start, end)中最大元素的迭代器 )
//2、sort(room, room+200);cout<<room[199]<<endl;(cout<<*max_element(room, room+200)<<endl; 方法二:max_element()返回一个指向序列[start, end)中最大元素的迭代器)
printf("%d\n",max);
}
//system("pause");
return 0;
}