标签:with 上传 rom appears includes 计算 pass recently sim
3 4 10 20 30 40 50 60 70 80 2 1 3 2 200 3 10 100 20 80 30 50
10 20 30
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int num[300]={0};//初始化数组。一共400个房间,简化后为200个,所以定义300大小,没问题;
int s,e,t,n;
while(~scanf("%d",&n))
{
for(int i = 0;i<n;i++)
{
scanf("%d%d",&s,&e);
s = (s+1)/2; //可以看为将对面两个房间的房间号变为一样,将房间数简化为200个,且在一条直线上,看做区间覆盖问题。
e = (e+1)/2;
if(s>e)//不论是从小房间号到大房间号,还是从大房间号到小房间号,都化为一条直线上从小到大的排序,便于标记计算。
swap(s,e);//交换大小
for(int j = s;s<=e;j++)//重点来了,之前初始化数组为0,现在对每一组输入进行标记,比如从15-16,其实s=8,e=8,标记在一条线段上为8处+1,以此类推,若第二组经过8,则8处再+1;
num[j]++;
}
int ans = 0;//初始比较数,设为0,没有经过的房间数在数组中值都为0,经过以此即为1,以此类推;
for(int i = 0;i<200;i++)
{
if(num[i]>ans)
ans = num[i];//循环遍历整个200大小的数组,找出数组中的最大值,即为推桌子活动中重叠的次数;
}
printf("%d\n",ans*10);
}
return 0;
}
终于弄懂了,入门艰难,且行且珍惜,加油!!
HDOJ-1050-Moving Tables(nyoj220)
标签:with 上传 rom appears includes 计算 pass recently sim
原文地址:http://www.cnblogs.com/yecindy/p/7269608.html