首页 > 代码库 > uva live 2326 - Moving Tables
uva live 2326 - Moving Tables
把房间号映射在一条坐标上,然后排序,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,最后找从左到右找一次可行的计划,
............
次数*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.
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 integerN, 1<=N<=200 , that represents thenumber of tables to move.Each of the followingNlines contains two positive integers sand t, representing that a table is to move fromroom numbersto room number t (each room numberappears at most once in theN 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
uva live 2326 - Moving Tables
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。