题目传送

  由于于题目保证输入的ti是递增的,所以发现当我们统计完一艘船的答案后,这个答案多少会对下一艘船的答案有贡献。同时还发现如果对每个艘船都记录他的乘客在整个数据出现的所有国籍中相应出现的次数,在这道题的范围下,显然会爆空间,其实这个题如果按照一般的静态数组存储的话,光是记录每个船的乘客就会爆空间,但其实乘客总数是很少的,只是每艘船上的乘客人数不确定,要想建数组存下这些数据,必须对每个船都要考虑载最多乘客的情况,就导致了很大的空间浪费,由此我们可以用动态数组来完美避免这个问题。

  综上,可以只建一个记录所有国籍出现次数的数组,下一艘船的答案只要从上一艘船的答案里从最早的开始往后找,找到第一个包括在这艘船答案里的船。对于之前寻找过程找过但不符合条件的船,要让他更新以下当前的国籍数组。最后别忘了把这艘船自己包括进他自己的答案里就行。这样只要我们把数据输入后对每艘船额外维护一个他的答案里最早的船的编号就行了。

见AC代码:

 #include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; int *a[],n,k,ans,t[],nat[],len[]; char ch; inline int read()
{
ans=;
ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) ans=(ans<<)+(ans<<)+ch-'',ch=getchar();
return ans;
} int main()
{
n=read();
for(int i=;i<=n;i++)
{
t[i]=read();//每艘船的到来时间(注意以秒为单位
len[i]=read(); //乘客人数
a[i]=new int[len[i]+];//动态数组
for(int j=;j<=len[i];j++)
a[i][j]=read();
}
int lst=;//上一艘船答案里时间最早的船的编号
ans=;
for(int i=;i<=len[];i++)//对第一艘船这个边界情况特殊处理
{
if(nat[a[][i]]==) ans++;
nat[a[][i]]++;
}
printf("%d\n",ans);
int lim;
for(int k=;k<=n;k++)
{
for(int i=;i<=len[k];i++)
{
if(nat[a[k][i]]==) ans++;
nat[a[k][i]]++;
}
lim=t[k]-;//最低时间满足下限
while(t[lst]<=lim)//寻找过程
{
for(int i=;i<=len[lst];i++)
{
nat[a[lst][i]]--;
if(nat[a[lst][i]]==) ans--;
}
lst++;
}
printf("%d\n",ans);
}
return ;
}

洛谷——P2058 海港的更多相关文章

  1. 洛谷 P2058 海港 解题报告

    P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ...

  2. 洛谷 P2058 海港 题解

    P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ...

  3. (寒假集训)洛谷 P2058 海港

    小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船,他记录了 ...

  4. 洛谷P2058 海港

    题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船 ...

  5. 洛谷 P2058 海港(模拟)

    题目链接:https://www.luogu.com.cn/problem/P2058 这是一道用手写队列模拟的一道题,没有什么细节,只是注意因为数不会很大,所以直接用数作为数组下标即可,不用用map ...

  6. 洛谷P2058 仪仗队

    P2058 仪仗队 24通过 34提交 题目提供者shengmingkexue 标签数论(数学相关) 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 作为体育委员,C君 ...

  7. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  8. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  9. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

随机推荐

  1. linux实现一个定时任务

    设置定时任务删除logs脚本数据 编写脚本   touch cleanLogs.sh #! /bin/sh -name "*.log*" -exec rm -f {} \; 使用r ...

  2. LocalDate与Date转化

    // 01. java.util.Date --> java.time.LocalDateTimepublic void UDateToLocalDateTime() { java.util.D ...

  3. 怎样获取Cookie

    使用 document.cookie 获取; document.cookie

  4. __imp__SetupDiDestroyDeviceInfoList

    error LINK2019 unresolved external symbol __imp__SetupDiDestroyDeviceInfoList 分类: 转载文章2012-11-02 15: ...

  5. Spark机器学习API之特征处理(一)

    Spark机器学习库中包含了两种实现方式,一种是spark.mllib,这种是基础的API,基于RDDs之上构建,另一种是spark.ml,这种是higher-level API,基于DataFram ...

  6. Linux设备驱动中的软件架构思想

    目录 更新记录 一.Linux驱动的软件架构 1.1 出发点 1.2 分离思想 1.3 分层思想 二.platform设备驱动 2.1 platform设备 2.2 platform驱动 2.3 pl ...

  7. arcgis之gp服务发布

    arcgis之gp服务发布 注意: 1.arcgis服务可以直接通过arcmap来发布,gp服务就是将arcmap中的工具发布为服务,达到线上处理数据的能力 2.以文件为参数时不要以文件直接为参数,可 ...

  8. Stanford NLP 课堂笔记之正则表达式

    1.[]表达式的用法 正则表达式可以让我们匹配我们想要的字符串形式,增加了效率,在自然语言处理领域有较大的作用. 模式 匹配 [Ww]oodchuck Woodchuck,woodchuck [123 ...

  9. OpenCl入门——实现简单卷积

    现在的卷积实现无非是那么几种:直接卷积.im2col+gemm.局部gemm.wingrod.FFT.如果直接卷积的话,其实kernel函数是比较好实现.以下代码参考至<OpenCL Progr ...

  10. Ubuntu + Django(DRF) + channels(websocket)+NGINX + uwsgi 环境部署

    原来uwsgi并不能启动  asgi  呀!现在才知道,就因为这一点我花了一周时间才成功啊!!!!!!!! 是呀!你启动uwsgi 是将你的项目启动了,可是你也发现虽然启动了,但是你的websocke ...