hdu 1050 moving tables

来源:互联网 发布:java 打印成记事本 编辑:程序博客网 时间:2024/05/18 03:29

实质就是求最大重叠度,难点是奇数房和偶数房是对应的,如1和2是对应的,3和4是对应的,共用一段走廊,要这样处理:(i+1)/2。如3到4,4到5,重叠度是2。陷阱是区间可能从大到小。

AC代码:

#include<iostream>using namespace std;#define NUM 405int a[NUM];int main(){    int cases,n,s,t,iMax,i,j;    cin>>cases;    while(cases--){        cin>>n;        iMax=1;        for(i=0;i<NUM;++i){            a[i]=0;        }        for(i=0;i<n;++i){            cin>>s>>t;            if(s>t){                int temp=t;                t=s;                s=temp;            } /*            for(j=s;j<=t;j=j+2){                a[(j+1)/2]++;             }            */            s=(s+1)/2;            t=(t+1)/2;            for(j=s;j<=t;j++)                a[j]++;        }        for(i=0;i<NUM;++i){            if(iMax<a[i])                iMax=a[i];        }        iMax=iMax*10;        cout<<iMax<<endl;    }    return 0;}


原创粉丝点击