标签:des style blog http color io os ar for
把房间号映射在一条坐标上,然后排序,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,
............
次数*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;
}

| 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 | 
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
标签:des style blog http color io os ar for
原文地址:http://blog.csdn.net/stl112514/article/details/40479977