洛谷 P2058 海港 解题报告
P2058 海港
题目描述
小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。
小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第\(i\)艘到达的船,他记录了这艘船到达的时间\(t_i\)(单位:秒),船上的乘客数星\(k_i\),以及每名乘客的国籍\(x(i,1), x(i,2),…,x(i,k)\);。
小\(K\)统计了\(n\)艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的24小时(24小时=86400秒)内所有乘船到达的乘客来自多少个不同的国家。
形式化地讲,你需要计算\(n\)条信息。对于输出的第i条信息,你需要统计满足\(t_i-86400<t_p<= t_i\)的船只\(p\),在所有的\(x(p,j)\)中,总共有多少个不同的数。
输入输出格式
输入格式:
第一行输入一个正整数\(n\),表示小\(K\)统计了\(n\)艘船的信息。
接下来\(n\)行,每行描述一艘船的信息:前两个整数\(t_i\)和\(k_i\)分别表示这艘船到达海港的时间和船上的乘客数量,接下来\(k_i\)个整数\(x(i,j)\)表示船上乘客的国家。
保证输入的\(t_i\)是递增的,单位是秒;表示从小K第一次上班开始计时,这艘船在第\(t_i\)秒到达海港。
保证\(1<=n<=10^5\),\(\sum {k_i}<=3∗10^5\),\(1<=x(i,j)<=10^5\),\(10^9<=t_{i−1}<=ti<=10^9\)
输出格式:
输出\(n\)行,第\(i\)行输出一个整数表示第\(i\)艘船到达后的统计信息。
昨天听教练说,普及组的题目不怎么考算法,我的内心陡然一惊,那岂不是怎么暴力怎么来?
事实上并不是那么简单的,不考算法,就十分的考思想了,昨天被2016T4魔法阵吓到了于是打算先写写第三题。
今天读完题目,恩?洛谷高性能?怕不是要卡常?那直接暴力来吧。拿个桶把当前的存起来,把船的信息压进队列,交了以后

这个,看来事情并没有这么简单,发现人最多有三十万个,那直接存人和船的时间断点好了。

尴尬,,,
加一个上下界优化好了,每次遍历桶的时候只遍历到之前出现过得最大的人。

好家伙,不能这样搞。
又想了想,如果更新桶的时候某个种类由0变成了1就把答案加1,反之减1,不就刚好保证了300000*2吗
原来正确复杂度是\(O(\sum k)\),所以有时候想练练思想,不妨多做做没有什么算法的题目。
#include <cstdio>
#include <cstring>
int max(int x,int y){return x>y?x:y;}
const int N=100010;
int ans[N],n,t,k,tour[N*3],time[N][2],l=1,r,p=1,now;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&t,&k);
while(time[l][0]<=t-86400&&l<=r)
{
for(;p<=time[l][1];p++)
{
ans[tour[p]]--;
if(!ans[tour[p]]) now--;
}
l++;
}
for(int j=time[r][1]+1;j<=time[r][1]+k;j++)
{
scanf("%d",tour+j);
ans[tour[j]]++;
if(ans[tour[j]]==1)
now++;
}
time[++r][0]=t;
time[r][1]=time[r-1][1]+k;
printf("%d\n",now);
}
return 0;
}
2018.6.18
洛谷 P2058 海港 解题报告的更多相关文章
- 洛谷 P3956 棋盘 解题报告
P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...
- 洛谷 P1979 华容道 解题报告
P1979 华容道 题目描述 小\(B\)最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时 ...
- BZOJ 3545 / 洛谷 P4197 Peaks 解题报告
P4197 Peaks 题目描述 在\(\text{Bytemountains}\)有\(N\)座山峰,每座山峰有他的高度\(h_i\).有些山峰之间有双向道路相连,共\(M\)条路径,每条路径有一个 ...
- 虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告
题目描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ...
- 洛谷 P2058 海港 题解
P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ...
- (寒假集训)洛谷 P2058 海港
小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船,他记录了 ...
- 洛谷P2058 海港
题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船 ...
- 洛谷 P2058 海港(模拟)
题目链接:https://www.luogu.com.cn/problem/P2058 这是一道用手写队列模拟的一道题,没有什么细节,只是注意因为数不会很大,所以直接用数作为数组下标即可,不用用map ...
- 洛谷 P2672 推销员 解题报告
P2672 推销员 题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第i家住户到入口的距离为 ...
随机推荐
- Rabbitmq-direct演示
在上一节中我们创建了一个日志系统.实现将日志消息广播给所有的cusumer. 在这片教程中,我们将为日志系统添加一个功能:仅仅订阅一部分消息.比如:我们可以直接将关键的错误类型日志消息保存到日志文件中 ...
- 【noi.ac】#309. Mas的童年
#309. Mas的童年 链接 分析: 求$max \{sj + (s_i \oplus s_j)\}$ 因为$a + b = a \oplus b + (a \& b) \times 2$ ...
- .NET Core在类库中读取配置文件appsettings.json
在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别 ...
- 【nodejs】让nodejs像后端mvc框架(asp.net mvc )一样处理请求--自动路由篇(1/8)【route】
文章目录 前情概要 在使用express框架开发的时候,每加一个请求,都在增加一条route请求规则,类似于下面的代码,很烦有木有! app.use('/myroute path', (req, re ...
- Vue Element Tabe Pager 分页方案
表格和分页分离的,但是使用中,却是结合在一起的. 分析 有以下方式触发查询: mounted 加载数据. 查询按钮 加载数据. pager 变化加载数据 加载数据函数: loadData 问题 mou ...
- Nginx code 常用状态码学习小结
最近了解下Nginx的Code状态码,在此简单总结下.一个http请求处理流程: 一个普通的http请求处理流程,如上图所示:A -> client端发起请求给nginxB -> ngin ...
- Command Analyze failed with a nonzero exit code
在运行RN项目的时候,报 Command Analyze failed with a nonzero exit code ,试着将build System 修改下
- OC与JS的交互(iOS与H5混编)
大神总结WKWebView的坑:https://mp.weixin.qq.com/s/rhYKLIbXOsUJC_n6dt9UfA 在开发过程中,经常会出现需要iOS移动端与H5混编的使用场景. iO ...
- linux内核分析程序破解实践报告
- BF算法和KMP算法 python实现
BF算法 def Index(s1,s2,pos = 0): """ BF算法 """ i = pos j = 0 while(i < ...