POJ 1083 Moving Tables

来源:互联网 发布:淘宝手机拍摄教学 编辑:程序博客网 时间:2024/06/10 05:27

题目链接点击打开链接

题意:将东西从走廊房间一侧搬到另一侧。如果两次搬东西路线有重叠,这两次就不能同时进行,否则便可同时进行。每一次搬运耗时10min,求最少耗时。

思路:将房间编号对应成区间 例如1->1,2->1。只要寻找被访问的区间的最大次数即可。

AC代码

#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<iomanip>#include<algorithm>#include<cmath>using namespace std;int sta[250],ed[250];int vis[250];int main(){    int t,n,i;    cin>>t;    while(t--)    {        memset(sta,0,sizeof(sta));        memset(ed,0,sizeof(ed));        memset(vis,0,sizeof(vis));        cin>>n;        int cnt=1;        for(i=0; i<n; i++)        {            cin>>sta[i]>>ed[i];            if(sta[i]>ed[i])                swap(sta[i],ed[i]);            sta[i]=(sta[i]+1)/2;//转化为对应区间            ed[i]=(ed[i]+1)/2;            for(int j=sta[i]; j<=ed[i]; j++)//起点与终点之间的区间要被访问            {                vis[j]++;                if(vis[j]>cnt) cnt=vis[j];//更新最大值            }        }        cout<<cnt*10<<endl;    }    return 0;}


0 0
原创粉丝点击