周赛一 1005 搬桌子
2015-11-01 13:34
288 查看
Description
协会为了更好宣传算法魅力,决定包下综合教学楼5楼(吐槽:这么高会有人来吗?)进行讲课。然而综教5楼的每个教室里都有不属于这个教室的桌子,ccc大人的强迫症又发作了,要求我们把桌子还原。机智的庆庆一下子就知道还原这些桌子要花多少时间,但他想考考你们。已知综教5楼的平面图如图,从房间i到房间j要花1min。求花费最小时间?
注意:只要移动路线没有重合,可以同时移动。如:从1号移到6号,从397号移到400号,这两次操作即可同时进行。
room1 room3 room5 …… room397 room399
corridor
room2 room4 room6 …… room398 room400
Input
第一行输入T,表示有T组用例;
每组用例第一行输入N,表示要移动的桌子数量(0< N< 201);
每组用例接下来N行,每行有2个数s,t,代表桌子要从s号房间移到t号房间
Output
输出每组用例要花费的最小时间
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
1
2
3
Solution
贪心,用数组room[401]记录每个房间前的走廊被用过多少次,则答案即为max(room[i]);每扫描一个点将数组这个范围内的值加1,注意,范围的确定,若下限为偶数,则下限需减一,若上限为奇数,则上限需加1
Code
协会为了更好宣传算法魅力,决定包下综合教学楼5楼(吐槽:这么高会有人来吗?)进行讲课。然而综教5楼的每个教室里都有不属于这个教室的桌子,ccc大人的强迫症又发作了,要求我们把桌子还原。机智的庆庆一下子就知道还原这些桌子要花多少时间,但他想考考你们。已知综教5楼的平面图如图,从房间i到房间j要花1min。求花费最小时间?
注意:只要移动路线没有重合,可以同时移动。如:从1号移到6号,从397号移到400号,这两次操作即可同时进行。
room1 room3 room5 …… room397 room399
corridor
room2 room4 room6 …… room398 room400
Input
第一行输入T,表示有T组用例;
每组用例第一行输入N,表示要移动的桌子数量(0< N< 201);
每组用例接下来N行,每行有2个数s,t,代表桌子要从s号房间移到t号房间
Output
输出每组用例要花费的最小时间
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
1
2
3
Solution
贪心,用数组room[401]记录每个房间前的走廊被用过多少次,则答案即为max(room[i]);每扫描一个点将数组这个范围内的值加1,注意,范围的确定,若下限为偶数,则下限需减一,若上限为奇数,则上限需加1
Code
#include<stdio.h> int main() { int T,n,l,r; scanf("%d",&T); while(T--) { int room[401]; for(int i=0;i<401;i++)//初始化 room[i]=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d",&l,&r); if(l>r)//如果左端点大于右端点则需将左右端点值互换 { int t=l; l=r; r=l; } if(!(l&1)) l--;//左端点是偶数则其需减一,因为搬桌子时也会影响到左端点对面的房间,即第l-1个房间 if(r&1) r++;//右端点是奇数则其需加一,因为搬桌子时也会影响到右端点对面的房间,即第r+1个房间 for(int j=l;j<=r;j++)//区间[l,r]中所有房间的room值均加一表示这次搬运这些房间内都会被影响到 room[j]++; } int ans=0; for(int i=1;i<=400;i++)//找到room[i]的最大值即为答案 if(room[i]>ans) ans=room[i]; printf("%d\n",ans); } return 0; }
相关文章推荐
- 浪潮集团云计算参观之旅
- Object oriented design- SOLID principal
- oracle 10g ASM 重启遭遇ERROR:no PST quorum in group 2: required 2, found 0
- 最新的SqlHelper 类
- hdu5525 Product 费马小定理
- 在Total Commander下使用SVN
- android之存储篇_SQLite数据库_让你彻底学会SQLite的使用<转载>
- NPOI使用记录
- 光搜之---光棍节约会女孩
- 学习maven过程中的一些异常错误汇总
- No.4 happy number floyd判圈法
- 平时小积累
- ZOJ 2971-G - Give Me the Number-模拟
- No.3 Add Digits (digital root)
- web开发 http生产者、消费者请求限定(跟着开涛学SpringMVC)
- vi 编辑内容中查找字符位置
- 单点登录和单点登出CAS的使用
- hudu 1050 sort oj上的易错点 贪心算法
- 在javaweb中添加过滤器
- No.2 flip game 翻转游戏