• 51nod 1631 小鲨鱼在51nod小学


    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题

    鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学。并依靠算法方面的特长,在班里担任了许多职务。
     
    每一个职务都有一个起始时间A和结束时间B,意为小鲨鱼在[A, B]时间内,担任了某职务(inclusively)。
     
    现在给定小鲨鱼的职务履历表,你可以高效的给出小鲨鱼在某天担任了哪些职务吗?
     
    p.s. 由于小鲨鱼担任的职务太多,所有任期小于一个自然月的职务都忽略不计。(如1月1日~2月1日为一个自然月,即月份加1)
     
    p.p.s. 输入数据保证小鲨鱼同时不担任超过200种职务。(牛!)
     
    p.p.p.s 输入的日期均为合法日期,范围在2000年01月01日~2999年12月31日。
     
    p.p.p.p.s巨大的输入输出,推荐使用scanf/printf,编译器推荐使用Virtual C++
    Input
    第一行为一个整数n,代表小鲨鱼担任过N种职务。(1 <= n <= 10^5)
    接下来的n行,每一行为七个整数,y0, m0, d0, y1, m1, d1, x。意为在<y0, m0, d0>到<y1, m1, d1>时间内,小鲨鱼担任了职务x。(1 <= x <= 10^9)
    给定的时间皆合法,且起始日期小于或等于截止日期。职务x是唯一的。
    
    接下来是一个整数q,代表q次查询。(1 <= q <= 10^4)
    接下来的q行,每一行为三个整数<y, m, d>,代表查询的日期。时间皆合法。
    Output
    每一次查询输出一行结果。
    首先输出一个整数n,代表此时小鲨鱼担任的职务数。(n可以为0)
    接下来是n个整数,代表小鲨鱼担任的职务。职务列表保持升序。
    Input示例
    4
    2000 01 01    2000 01 01    111
    2000 01 02    2001 02 02    222
    2000 01 28    2000 02 29    333
    2000 01 29    2000 02 28    444
    4
    2000 01 01
    2000 01 02
    2000 01 28
    2000 02 29
    Output示例
    0
    1 222
    2 222 333
    2 222 333
     
     
    大暴力题
    妈的终于A了。。
    我屮艸芔茻。。
    #include <algorithm>
    #include <cstdio>
    #include <cctype>
    #define N 100005
    using namespace std;
    inline void Read(int &x)
    {
        register char ch=getchar();
        for(x=0;!isdigit(ch);ch=getchar());
        for(;isdigit(ch);x=x*10+ch-'0',ch=getchar());
    }
    struct node
    {
        int y0,m0,d0,y1,m1,d1,x;
        bool operator<(node a)const
        {
            return x<a.x;
        }
    }Joob[N];
    struct nodee
    {
        int y,m,d;
    }Query[N];
    int Que[N],h=0,cnt=0,n,m;
    int main(int argc,char *argv[])
    {
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
        {
            Read(Joob[++cnt].y0);
            Read(Joob[cnt].m0);
            Read(Joob[cnt].d0);
            Read(Joob[cnt].y1);
            Read(Joob[cnt].m1);
            Read(Joob[cnt].d1);
            Read(Joob[cnt].x);
            if(Joob[cnt].y0>Joob[cnt].y1) cnt--;
            else if(Joob[cnt].m0+1==Joob[cnt].m1&&Joob[cnt].d0>Joob[cnt].d1&&Joob[cnt].y0==Joob[cnt].y1) cnt--;
            else if(Joob[cnt].m0==Joob[cnt].m1&&Joob[cnt].y0==Joob[cnt].y1) cnt--;
            else if(Joob[cnt].y0+1==Joob[cnt].y1&&Joob[cnt].m0==12&&Joob[cnt].m1==1&&Joob[cnt].d0>Joob[cnt].d1) cnt--;
        }
        sort(Joob+1,Joob+1+cnt);
        scanf("%d",&m);
        for(int i=1;i<=m;++i) Read(Query[i].y),Read(Query[i].m),Read(Query[i].d);
        for(int i=1;i<=m;++i)
        {
            for(int j=1;j<=cnt;++j)
            {
                if(Joob[j].y0==Query[i].y&&Joob[j].m0==Query[i].m&&Joob[j].d0==Query[i].d) Que[++h]=Joob[j].x;
                else if(Joob[j].y1==Query[i].y&&Joob[j].m1==Query[i].m&&Joob[j].d1==Query[i].d) Que[++h]=Joob[j].x;
                else if(Joob[j].y0<Query[i].y&&Query[i].y<Joob[j].y1) Que[++h]=Joob[j].x;
                else
                {
                    bool flag=0;
                    if(Joob[j].y0==Query[i].y)
                    {
                        if(Joob[j].m0<Query[i].m&&Query[i].m<Joob[j].m1) Que[++h]=Joob[j].x,flag=1;
                        else if(Joob[j].m0==Query[i].m&&Joob[j].d0<=Query[i].d) Que[++h]=Joob[j].x,flag=1;
                        else if(Joob[j].y1>Query[i].y&&((Joob[j].m0<Query[i].m)||(Joob[j].m0==Query[i].m&&Joob[j].d0<=Query[i].d))) Que[++h]=Joob[j].x,flag=1;
                    }
                    if(Joob[j].y1==Query[i].y&&!flag)
                    {
                        if(Joob[j].m0<Query[i].m&&Query[i].m<Joob[j].m1) Que[++h]=Joob[j].x;
                        else if(Joob[j].m1==Query[i].m&&Joob[j].d1>=Query[i].d) Que[++h]=Joob[j].x;
                        else if(Query[i].y>Joob[j].y0&&((Joob[j].m1>Query[i].m)||(Joob[j].m1==Query[i].m&&Joob[j].d1>=Query[i].d))) Que[++h]=Joob[j].x;
                    }
                }
            }
            printf("%d",h);
            for(int p=1;p<=h;++p) printf(" %d",Que[p]);
            h=0;
            printf("
    ");
        }
        return 0;
    }
     
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    reduce常规教程
    新的职业计划
    vscode插件 console helper
    webpack的loader和plugin的区别
    for in 和for of的区别
    https://www.codegrepper.com/index.php
    防抖和节流
    千万级别的表分页查询非常慢,怎么办?
    https://gitee.com/knif/AcceleratorKunn?_from=gitee_search
    17个可以实现微前端的方案
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7591922.html
Copyright © 2020-2023  润新知