基准时间限制: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=;!isdigit(ch);ch=getchar());
for(;isdigit(ch);x=x*+ch-'',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=,cnt=,n,m;
int main(int argc,char *argv[])
{
scanf("%d",&n);
for(int i=;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+==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+==Joob[cnt].y1&&Joob[cnt].m0==&&Joob[cnt].m1==&&Joob[cnt].d0>Joob[cnt].d1) cnt--;
}
sort(Joob+,Joob++cnt);
scanf("%d",&m);
for(int i=;i<=m;++i) Read(Query[i].y),Read(Query[i].m),Read(Query[i].d);
for(int i=;i<=m;++i)
{
for(int j=;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=;
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=;
else if(Joob[j].m0==Query[i].m&&Joob[j].d0<=Query[i].d) Que[++h]=Joob[j].x,flag=;
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=;
}
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=;p<=h;++p) printf(" %d",Que[p]);
h=;
printf("\n");
}
return ;
}
 

51nod 1631 小鲨鱼在51nod小学的更多相关文章

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

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

  2. 51nod 1471 小S的兴趣 | 分块 链表

    51nod 1471 小S的兴趣 题面 小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题 ...

  3. 51nod 1471 小S的兴趣 sqrt

    小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题有两种类型: 1.      在数组下标 ...

  4. 51nod 1831 小C的游戏

    小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...

  5. 51nod 2489 小b和灯泡

    小b有n个关闭的灯泡,编号为1...n. 小b会进行n轮操作,第i轮她会将编号为i的倍数的灯泡的开关状态取反,即开变成关,关变成开. 求n轮操作后,有多少灯泡是亮着的. 收起   输入 输入一个数字表 ...

  6. 51nod 2486 小b和矩阵

    小b有一个m行n列的矩阵. 她会从(1,1)开始,顺时针螺旋访问该矩阵,每个元素恰好被访问一次. 请你按小b的访问顺序输出每个元素. 收起   输入 第一行输入两个数m和n,其中0<m,n≤50 ...

  7. 51nod 2485 小b重排字符串

    小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同. 请你判断小b是否可能成功. 样例解释:将"aab"重排为"aba"即可. 收起   输入 输入一 ...

  8. 51nod 1643 小Q的家庭作业

    题意: f(n) = sigma(gcd(i,n))  1 <= i <= n g(n) = sigma(f(d))    d | n n = x1 * x2 * ... * xm 其中 ...

  9. 51nod 1479 小Y的数论题

    一脸不可做题~~~233333 T<=100000,所以一定要logn出解啦. 但是完全没有头绪*&#……%*&……()……#¥*#@ 题解: 因为2^p+2^p=2^(p+1) ...

随机推荐

  1. asn编译常见报错

    TypeError: unsupported operand type(s) for -: 'str' and 'int' 可能是该用列表的地方没用列表. 1. ’-‘不支持,需改为'_' asn1t ...

  2. python3.5 jira网站实现用户的批量插入

    工作中,经常要给多个用户创建账号,为了减少工作量,写了个自动化脚本来帮助我批量创建用户 代码如下: """自动创建Jira的学生账号""" ...

  3. 7.10实习培训日志-Maven 敏捷编程

    总结 今天早上主要学习了Maven和Idea的Docker插件,遇到了一些坑,对于Idea的Docker插件,不能下载,然后我去访问Idea插件官网,发现被墙了,只要开个VPN就好.下午主要是张总经理 ...

  4. HDU - 6113 2017百度之星初赛A 度度熊的01世界

    度度熊的01世界  Accepts: 967  Submissions: 3064  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 327 ...

  5. Vue.js中,如何自己维护路由跳转记录?

    在Vue的项目中,如果我们想要做返回.回退操作时,一般会调用router.go(n)这个api,但是实际操作中,使用这个api有风险,就是会让用户跳出当前应用,因为它记录的是浏览器的访问记录,而不是你 ...

  6. 如何运用多阶构建编写优雅的Dockerfile

    导读 Kubernetes要从容器化开始,而容器又需要从Dockerfile开始,本文将介绍如何写出一个优雅的Dockerfile文件. 文章主要内容包括: Docker容器 Dockerfile 使 ...

  7. Ext.apply(src,apply) 和 Ext.applyIf(src,apply)比较(转)

    Ext.onReady(function(){ /* * Ext.apply(src,apply) 和 Ext.applyIf(src,apply) 两个方法的使用和区别比较 */ //Ext.app ...

  8. solidity 学习笔记(7)内联汇编

    为什么要有内联汇编? //普通循环和内敛汇编循环比较 pragma solidity ^0.4.25; contract Assembly{ function nativeLoop() public ...

  9. JavaScript进阶 - 第3章 一起组团(数组)

    第3章 一起组团(数组) 3-1 一起组团(什么是数组) 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果 ...

  10. 如何在JMeter中使用ForEach控制器

    Jmeter中的ForEach Controller遍历变量数组. 在这个JMeter教程中,我们将使用ForEach控制器循环访问JSON数组. 有时我们需要解析响应并提取某些信息.例如,在测试AP ...