把房间号映射在一条坐标上,然后排序,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,
............
次数*10就是答案
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
struct node
{
int s,e;
};
istream & operator >>(istream &is,node &a)
{
is>>a.s>>a.e;
return is;
}
bool cmp(node a,node b)
{
return a.s!=b.s?a.s<b.s:a.e<b.e;
}
int cg(int x)
{
return x&1?(x+1)>>1:x>>1;
}
int main()
{
// freopen("in","r",stdin);
bool vis[210];
int T,i,j,n,ans;
node box[210];
node p;
cin>>T;
while(T--)
{
cin>>n;
for(i=0;i<n;i++)
{
cin>>box[i];
box[i].s=cg(box[i].s);
box[i].e=cg(box[i].e);
if(box[i].s>box[i].e)
swap(box[i].s,box[i].e);
}
ans=0;
memset(vis,0,sizeof(vis));
sort(box,box+n,cmp);
for(i=0;i<n;i++)
{
if(vis[i])
continue;
ans+=10;
p=box[i];
for(j=i+1;j<n;j++)
{
if(vis[j])
continue;
if(box[j].s>p.e||box[j].e<p.s)
{
vis[j]=1;
p=box[j];
}
}
}
cout<<ans<<endl;
}
return 0;
}
mous ACM (Advanced Computer Maker) Company has rented a floor ofa building whose shape is inthe following figure.
![](https://icpcarchive.ecs.baylor.edu/external/23/p2326a.gif)
Table moving | Reason | |
Possible | ( room 30 to room 50) and (room60 to room 90) | no part of corridor is shared |
(room 11 to room 12) and (room14 to room 13) | no part of corridor is shared | |
Impossible | (room 20 to room 40) and (room31 to room 80) | corridor in front of room 31 toroom 40 is shared |
(room 1 to room 4) and (room 3to room 6) | corridor in front of room 3 isshared | |
(room 2 to room 8) and (room 7to room 10) | corridor in front of room 7 isshared |
For each room, at most one table will be either moved in or moved out.Now, the manager seeks out a methodto minimize the time to move all the tables. Your job is to write aprogram to solve the manager's problem.
Input
The input consists of T test cases. The number of test cases ( T) is given in the first line of the input file. Eachtest case begins with a line containing an integer N , 1<= N <=200 , that represents thenumber of tables to move.Each of the following N lines contains two positive integers sand t, representing that a table is to move fromroom number s to room number t (each room numberappears at most once in the N lines). From the N+3-rdline, the remaining test cases are listed in the same manner as above.Output
The output should contain the minimum time in minutes to complete themoving, one per line.Sample Input
3 4 10 20 30 40 50 60 70 80 2 1 3 2 200 3 10 100 20 80 30 50
Sample Output
10 20 30