鲨鱼巨巨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。意为在 到 时间内,小鲨鱼担任了职务x。(1 <= x <= 10^9)
给定的时间皆合法,且起始日期小于或等于截止日期。职务x是唯一的。

接下来是一个整数q,代表q次查询。(1 <= q <= 10^4)
接下来的q行,每一行为三个整数 ,代表查询的日期。时间皆合法。
Output
每一次查询输出一行结果。
首先输出一个整数n,代表此时小鲨鱼担任的职务数。(n可以为0)
接下来是n个整数,代表小鲨鱼担任的职务。职务列表保持升序。
Sample 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
Sample Output
0
1 222
2 222 333
2 222 333


线段树卡过(800+ms),暴力思路待填坑。
但是有一些细节需要处理。
比如:自然月?
其实我看了上面给的例子也没看懂,然后到处找定义,再然后就懵逼了…(所以有谁可以讲清楚一点吗QAQ)
然后参考某处题解datehash函数里的注释,每个月都当作31天做,然后判断。
详见代码。

#include<cstdio>
#include<vector>
#include<algorithm>
#define maxn 372000
#define maxm 205
using namespace std;
int n,q,ans[maxm],cnt;
struct node
{int l,r;vector<int> a;
}tree[maxn*4+5];
void Build(int i,int l,int r)
{tree[i].l=l,tree[i].r=r;if(l==r) return;int mid=(l+r)/2;Build(i*2,l,mid);Build(i*2+1,mid+1,r);
}
int getnum(int y,int m,int d)
{return (y-2000)*372+(m-1)*31+d;
}
void Update(int i,int l,int r,int x)
{if(l>tree[i].r||r<tree[i].l) return;if(l<=tree[i].l&&tree[i].r<=r) {tree[i].a.push_back(x);return;}Update(i*2,l,r,x);Update(i*2+1,l,r,x);
}
void Count(int i,int x)
{for(int j=0;j<tree[i].a.size();j++) ans[++cnt]=tree[i].a[j];if(tree[i].l==tree[i].r) return;int mid=(tree[i].l+tree[i].r)/2;if(x<=mid) Count(i*2,x);else Count(i*2+1,x);
}
int main()
{Build(1,1,maxn);scanf("%d",&n);for(int i=1;i<=n;i++){int y1,m1,d1,y2,m2,d2,x;scanf("%d%d%d%d%d%d%d",&y1,&m1,&d1,&y2,&m2,&d2,&x);int id1=getnum(y1,m1,d1),id2=getnum(y2,m2,d2);if(id2-id1<31) continue;Update(1,id1,id2,x);}scanf("%d",&q);for(int i=1;i<=q;i++){int y,m,d;scanf("%d%d%d",&y,&m,&d);int id=getnum(y,m,d);cnt=0;Count(1,id);sort(ans+1,ans+cnt+1);printf("%d",cnt);for(int i=1;i<=cnt;i++) printf(" %d",ans[i]);printf("\n");}
}

51nod-1631-小鲨鱼在51nod小学相关推荐

  1. 51nod 1631 小鲨鱼在51nod小学 【线段树--】

    1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的 ...

  2. 51NOD 1631 小鲨鱼在51nod小学 区间线段树

    1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依 ...

  3. 51nod 1631 小鲨鱼在51nod小学

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一 ...

  4. 51Nod 1631 小鲨鱼在51Nod小学 【 扫描线 】

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1631 题意: 分析: 吐槽:没想到这题n*q暴力都能过~~ 我的做 ...

  5. 1631 小鲨鱼在51nod小学 暴力

    1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依 ...

  6. 1631 小鲨鱼在51nod小学

    1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学. ...

  7. 1631 小鲨鱼在51nod小学(线段树区间修改+单点查询:不用下传lazy的区间修改)

    题目描述: 1631 小鲨鱼在51nod小学 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一个职务都有一个起始时间A和结束时间B, ...

  8. 51Nod——T 1631 小鲨鱼在51nod小学

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1631 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 ...

  9. 51Nod1631 小鲨鱼在51nod小学

    1631 小鲨鱼在51nod小学 1 秒 131,072 KB 20 分 3 级题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一 ...

  10. 小鲨鱼在51nod小学

    鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一个职务都有一个起始时间A和结束时间B,意为小鲨鱼在[A, B]时间内,担任了某职务( ...

最新文章

  1. 【vue】vue-znly
  2. C# 线程同步之排它锁/Monitor监视器类
  3. android gridview固定行数据,如何在Android gridview中为行设置不同的列
  4. java 泛型和集合_Java集合和泛型
  5. ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记
  6. RegexDemo6
  7. 密码学专题 随机数文件
  8. 第三季2:ORTP库的源码分析、RTP发送实验的源码分析
  9. 怎样实现linux的网络通信协议是,一种基于Linux系统的TCP/IP协议栈的实现
  10. gsonformat 实例_10分钟看懂Photoshop 实例:在阈值模式下调整照片的清晰度
  11. 数据结构上机实践第14周项目2 - 二叉树排序树中查找的路径
  12. 前端开发利器 - WebStorm
  13. 用Dezende解密zend后的php代码
  14. html 做王者荣耀
  15. virtuebox 安装VBoxGuestAdditions,ubuntu下设置文件共享
  16. HTML网页的基本结构
  17. PV、UV、IP分别是什么意思?
  18. 汪海Python爬虫(一)抓取网页的含义和URL基本构成
  19. 金蝶——“免、抵、退”税操作说明及帐务处理
  20. 三菱Q系列PLC项目资料 本系统采用三菱Q系列PLC,本系统中用到16个伺服电机,采用16轴控制器通过光纤驱动16个伺服

热门文章

  1. 屈原论东汉末年董卓之大汉帝国
  2. 机器人搏击大赛冠军_喜报|2019中国智能机器人格斗大赛,石大学子在轮式自主格斗A、B组中包揽双冠...
  3. uboot中ftd命令
  4. R使用LASSO回归预测股票收益
  5. 【PV操作】买面包的叫号算法(存疑)
  6. # 互信息最大化[视角统一]:Align before Fuse: Vision Language Representation Learning with Momentum Distillation
  7. 微信小程序实现星级评价和效果展示
  8. 飞机大战Python全代码 + 图片
  9. 1.5亿元融资,杉岩数据加速以数据为核心的新存储市场落地
  10. C专家编程 读书笔记