1000搬桌子问题 ACID 00729209

来源:互联网 发布:便宜好用的汽车 知乎 编辑:程序博客网 时间:2024/05/18 09:07

题目大意为:有400个房间,只有一个走廊,公司装修需要搬桌子,然而走廊只能单个桌子通过,搬一个桌子需要10分钟,问最少花费多少时间。

思路:运用贪心算法,只要有不冲突走廊的就同时搬。

           为了简化题目将房间号全部转化为走廊号,以便于计算。

            最终只要将走廊占用最多的次数乘以10便为最后结果。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
 int n,m,i,max,j,from,to;
 char move[200];
 cin>>m;
 while(m--)
 {
  cin>>n;
  memset(move,0,sizeof(move));//将数组清零
  for(i=0;i<n;i++)
  {
   cin>>from>>to;
   from=(from-1)/2;//将房间号化为走廊号
   to=(to-1)/2;
   if(from>to)
    swap(from,to);//保证大小的统一
   for(j=from;j<=to;j++)
   {
    move[j]++;
   }
  }
  max=0;
  for(i=0;i<200;i++)
  {
   if(max<move[i])//找出最多占用的走廊号
    max=move[i];
  }
  cout<<max*10<<endl;
 }
}

感想:对于问题要先想办法将其简化,再进行写代码


1 0