https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1631

基准时间限制: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 贪心+模拟
只忽略小于一个自然月、然后。。等于的也忽略了WA半天、
 #include <algorithm>
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
const int N(1e5+);
int y0,m0,d0,y1,m1,d1,k;
int cnt,tmp,ans[N];
struct Work {
int ly,lm,ld,ry,rm,rd,kind;
Work(int ly=,int lm=,int ld=,int ry=,int rm=,int rd=,int kind=):
ly(ly),lm(lm),ld(ld),ry(ry),rm(rm),rd(rd),kind(kind){}
bool operator < (const Work &x)const
{
if(ly!=x.ly) return ly<x.ly;
else if(lm!=x.lm) return lm<x.lm;
else if(ld!=x.ld) return ld<x.ld;
else if(ry!=x.ry) return ry<x.ry;
else if(rm!=x.rm) return rm<x.rm;
else if(rd!=x.rd) return rd<x.rd;
}
}job[N<<]; inline bool check()
{
if(y0==y1) return (m0+==m1&&d0>d1)||m0==m1;
else return (y0+==y1&&m0==&&m1==&&d0>d1);
}
inline bool if_break(Work x)
{
if(x.ly>y0) return ;
else if(x.ly==y0&&x.lm>m0) return ;
else if(x.ly==y0&&x.lm==m0&&x.ld>d0) return ;
return ;
}
inline bool judge(Work x)
{
if(x.ry<y0) return ;
else if(x.ry==y0)
if(x.rm<m0) return ;
else if(x.rm==m0)
if(x.rd<d0) return ;
return ;
} int Presist()
{
int n,q; read(n);
for(int i=; i<=n; ++i)
{
read(y0),read(m0),read(d0);
read(y1),read(m1),read(d1); read(k);
if(!check()) job[++cnt]=Work(y0,m0,d0,y1,m1,d1,k);
}
std::sort(job+,job+cnt+);
for(read(q); q--; tmp=)
{
read(y0),read(m0),read(d0);
for(int i=; i<=cnt; ++i)
{
if(if_break(job[i])) break;
if(judge(job[i])) ans[++tmp]=job[i].kind;
}
if(!tmp) puts("");
else
{
printf("%d ",tmp); std::sort(ans+,ans+tmp+);
for(int i=; i<tmp; ++i) printf("%d ",ans[i]);
printf("%d\n",ans[tmp]);
}
}
return ;
} int Aptal=Presist();
int main(int argc,char*argv[]){;}

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

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

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

  2. 51nod 1488 帕斯卡小三角 斜率优化

    思路:斜率优化 提交:\(2\)次 错因:二分写挂 题解: 首先观察可知, 对于点\(f(X,Y)\),一定是由某个点\((1,p)\),先向下走,再向右下走. 并且有个显然的性质,若从\((1,p) ...

  3. 【51nod】2591 最终讨伐

    [51nod]2591 最终讨伐 敲51nod是啥评测机啊,好几次都编译超时然后同一份代码莫名奇妙在众多0ms中忽然超时 这道题很简单就是\(M\)名既被诅咒也有石头的人,要么就把石头给没有石头被诅咒 ...

  4. 胡小兔的OI日志3 完结版

    胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采 ...

  5. 10分钟用scratch写一个大鱼吃小鱼的小游戏

    第一次给张江小朋友教Scratch课程之前,还在担心一些概念能不能向小朋友解释清楚,可上完课发现,我严重低估了小朋友的聪明程度,发现现在的孩子相比较自己8.9岁的时候,简直聪明太多倍了. 所以总结了半 ...

  6. NOIP模拟7

    期望得分:100+100+20=220 实际得分:100+95+20=215 T1 洛谷 P1306 斐波那契公约数 #include<cstdio> #include<cstrin ...

  7. HTTP协议介绍(SERVLET)

    本文是servlet的入门篇,主要简单介绍下http协议 1.什么是HTTP _ 1.http协议:_1. 复杂解释:   http(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议 ...

  8. C#码农的大数据之路 - HDP SandBox配置及VS连接.md

    在进行HDInsight的开发测试之前,搭建一个测试环境是很重要的. 由于微软与Hortonworks合作开发了HDInsgiht,如果不方便建立Azure账号使用Azure HDInsight进行开 ...

  9. BZOJ 4555: [Tjoi2016&Heoi2016]求和 [分治FFT 组合计数 | 多项式求逆]

    4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林 ...

随机推荐

  1. Android 性能优化(9)网络优化( 5)Optimizing Server-Initiated Network Use

    Optimizing Server-Initiated Network Use This lesson teaches you to Send Server Updates with GCM Netw ...

  2. 03—AOP基本配置

  3. 常用JavaScript代码库(又名:WFang.js)

    1.根据公司项目封装ajax请求,结合layer框架一起使用 /*提取接口公共部分*/ var ApiConf = { server:"http://localhost:8080/Batte ...

  4. hihocoder1365 图片排版

    思路: 模拟,枚举,dp. 参考了https://github.com/buptlxb/hihoCoder/blob/master/solutions/1365/picture_arrange.cpp ...

  5. (2)麻省理工:计算机科学和 Python 编程导论

    语义描述了我们如何从那些表达式中推导出相关的含义,从而解决我们想解决的问题. 语法描述了如何将合法表达式组合在一起. 我们要选择什么样的编程语言? 1.     不管我们选什么,都有如下过程: 输入信 ...

  6. iOS中ARC和非ARC混用

    如果在使用第三方类库的时候,我们可能会遇到一些内存管理的问题   那么如何在一个工程中实现ARC和非ARC混用呢,例如你创建一个ARC的工程,但是你引用的第三方类库是非ARC管理内存的   首先点击工 ...

  7. 判断excel是否包含隐藏sheet

    Workbook workbook =new XSSFWorkbook("D:\\文档1.xlsx"); System.out.println(workbook.isSheetHi ...

  8. JavaScipt30(第八个案例)(主要知识点:canvas)

    承接上文,这是第8个案例,要实现的效果是按住鼠标不放,进行拖动时可以在画布上画出不同粗细不同颜色的曲线. 附上项目链接: https://github.com/wesbos/JavaScript30 ...

  9. CMU-准备

    TOEFL成绩90分以上,GPA大于3.0,GRE1250分以上(不做明确要求) 申请条件:GRE成绩,建议有专科成绩;托福250,雅思7.0;简历;3封推荐信 TOEFL(The Test of E ...

  10. vuex状态管理demo

    vuex状态管理主要包含四个概念  mapState,mapMutations,mapGetters,mapActions. 编写vuex文件夹下面的store.js import Vue from ...