HDU ACM 1050 Moving Tables

分析:该題可以用贪心来做,类似于节目时间安排的问题,桌子的移动房间看作时间处理。

下面是另一种更简便的做法。把奇数房间号和偶数房间号映射为房间在走廊上的位置,从1到200;开一个数组,,每次从s移桌子到t就把中间走廊的每个位置都加1,最后扫描整个数组,找出最大值在乘上移动一张桌子所用的时间就是必须花费的时间。

#include<iostream>using namespace std;int roompos[202];int GetRoomPos(int n){if(n&1) return (n+1)/2;else return n/2;}int main(){int T,N,s,t,i,j,max,maxpos,minpos;cin>>T;while(T–){cin>>N;memset(roompos,0,sizeof(roompos));maxpos=-1;minpos=10000;for(i=0;i<N;i++){cin>>s>>t;if(s>t){int tmp=s;s=t;t=tmp;}maxpos=maxpos>GetRoomPos(t)?maxpos:GetRoomPos(t);minpos=minpos<GetRoomPos(s)?minpos:GetRoomPos(s);for(j=GetRoomPos(s);j<=GetRoomPos(t);j++)roompos[j]+=1;}max=0;for(i=minpos;i<=maxpos;i++)max=max>roompos[i]?max:roompos[i];cout<<max*10<<endl;}return 0;}

留下许多叫知识和情感的东西握在手里。

HDU ACM 1050 Moving Tables

相关文章:

你感兴趣的文章:

标签云: