pku1083: http://poj.org/problem?id=1083
题意:有一条走廊,走廊两边为房间,一边的编号都为奇数(1、3……、399),一边的编号都为偶数(2、4……、400),现要从某个房间搬东西到另一房间,走廊很窄,不能共用,即若要用到同一段走廊,不能同时搬,搬一次需时10,求最小搬家时间
解法:贪心:因为如果不冲突的话可以同时进行,所以最小次数为走廊需要用到的次数最多那段的次数,再乘以10即为最小时间。
code:
#include<iostream>
#include<cstdio>
#include<cstdlib>
int ans[500];
int main()
{
int t,n,a,b,max,tt;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(ans,0,sizeof(ans));
while(n--)
{
scanf("%d%d",&a,&b);
if(a>b)
{
tt=a;a=b;b=tt;
}
if(a%2==0)a--;
if(b%2!=0)b++;
for(int i=a;i<=b;i++)
ans[i]++;
}
max=ans[0];
for(int i=1;i<=400;i++)
{
if(ans[i]>max)
max=ans[i];
}
printf("%d\n",max*10);
}
}
/*input:
3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50
output:
10
20
30
*/