当前位置:编程学习 > C/C++ >>

POJ 1083

问题是这样的:公司有400个房间,单号对双号对门,中间有一条走廊,现在要搬东西,给出要搬的次数,还有每次搬动的房间号,每次搬动需要10分钟,搬动过程中的那段走廊不能被使用,求最大搬动时长。
题解很简单,就是遍历所有的走廊,得出使用的次数,然后排序输出最大的就可以了.
[cpp] 
#include <iostream> 
#include <cstring> 
#include <algorithm> 
using namespace std; 
int main() 

    int n,num,a[200][2],b[200]; 
    cin>>n; 
    while(n--) 
    { 
        cin>>num; 
        memset(b,0,sizeof(b)); 
        for(int i=0; i<num; i++) 
        { 
            cin>>a[i][0]>>a[i][1]; 
            if(a[i][0]>a[i][1]) 
            { 
                int temp=a[i][0]; 
                a[i][0]=a[i][1]; 
                a[i][1]=temp; 
            }    www.zzzyk.com
        } 
        for(int j=1; j<=200; j++) 
            for(int k=0; k<num; k++) 
                if((((a[k][0])<=2*j-1)&&((a[k][1])>=2*j-1)||(((a[k][0])<=2*j)&&((a[k][1])>=2*j)))) 
                    b[j-1]++; 
        sort(b,b+200); 
        if(b[199]!=0)  
            cout<<b[199]*10<<endl; 
        else 
            cout<<"10"<<endl; 
    } 
    return 0; 

作者:szq123456123
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,