首页 > 代码库 > POJ 1083 Moving Tables
POJ 1083 Moving Tables
【题目简述】:题目的大概意思就是,现在要在个个房间之间搬桌子,但是只有一条很窄的走廊,每次只能过一个桌子,而且每搬一个桌子要10分钟,所以如果我们要搬的任意两个桌子之间的起点与终点有重合的地方,就要再等10分钟。然后输入要搬几个桌子以及要搬的每个桌子是从哪个房间到哪个房间,问我们最短需要花多少时间。
【分析】:如果区间有重合就要加上额外的10分钟,所以我们只需要算出在哪一段走廊上重合的次数最多,然后用重合的次数乘以10就是我们要求的最短时间。
代码如下:
// 268K 16Ms #include<iostream> #include<cstring> #include<algorithm> using namespace std; int corrider[401]; int main() { int t,N; int i,j; int x,y;// 区间x,y。 cin>>t; while(t--) { cin>>N; memset(corrider,0,sizeof(corrider)); for(i = 0; i<N;i++) { cin>>x>>y; if(x>y) swap(x,y); if(x%2==0) // 如果左区间是偶数,就要将其减一,因为此时减一的那个奇数值是与它共用一段走廊 x = x-1; if(y%2!=0) // 同理,如果右区间是奇数,就要加一。 y = y+1; for(j = x;j<=y;j++) corrider[j]++; } sort(corrider,corrider+401); cout<<corrider[400]*10<<endl; } return 0; }
POJ 1083 Moving Tables
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。