标签:include lines includes lan line sha space put represent
把房间号映射在一条坐标上,然后排序,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,
............
次数*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
标签:include lines includes lan line sha space put represent
原文地址:http://www.cnblogs.com/zhchoutai/p/7010452.html