hdu_moving tables 区间重叠

来源:互联网 发布:约瑟夫环 c语言链表 编辑:程序博客网 时间:2024/06/13 21:53

技巧题,记下来。

#include<stdio.h>int space[200];int main(){    int a, b, i;    int from, to;    while(~scanf("%d", &a)){        while(a--){    memset(space, 0, sizeof(space));            scanf("%d", &b);            while(b--){            scanf("%d%d", &from, &to);            if(from > to) from^=to^=from^=to;//保证from<=to                         if(to-from == 1){/*如果重叠 如1与2  3与4*/             if(from%2 == 1) space[from/2]++;/*继续分类*/             else{            space[(from-1)/2]++;            space[to/2]++;            }            }else{/*填充from->to所有corridor,用三元运算*/            for( i=(from%2 ? from/2: (from-1)/2); i<=(to%2 ?(to/2):(to-1)/2); i++)            space[i]++;            }            }            /*find max;*/            int max = 0;            for( i = 0; i <= 199; i++) if(space[i] > max) max = space[i];            printf("%d\n", 10*max);        }    }    return 0;}



0 0
原创粉丝点击