题目传送

  由于于题目保证输入的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. 7.Linux查找目录下的所有文件中是否含有某个字符串

    grep -rn "map" * 说明:-r 是递归查找-n 是显示行号* : 表示当前目录所有文件,也可以是某个文件名

  2. CF网络流练习

    1. 103E 大意: 给定$n$个集合, 满足对于任意的$k$, 任意$k$个集合的并集都不少于$k$. 要求选出$k$个集合$(k> 0)$, 使得并恰好等于$k$, 输出最少花费. Hal ...

  3. 浅谈后缀数组SA

    这篇博客不打算讲多么详细,网上关于后缀数组的blog比我讲的好多了,这一篇博客我是为自己加深印象写的. 给你们分享了那么多,容我自私一回吧~ 参考资料:这位dalao的blog 一.关于求Suffix ...

  4. SpringBoot使用MongoDB异常问题

    一 环境介绍 SpringBoot1.5.13.RELEASE(本地) Spring Data MongoDB Java 8 MongoDB(青云) 二 问题描述 使用Studio3T或者Compas ...

  5. EFcore的 基础理解<三> 多对多,唯一约束

    唯一约束,替代键. modelBuilder.Entity<Car>() .HasAlternateKey(c => new { c.State, c.LicensePlate }) ...

  6. 异常:Invalid character found in the request target. The valid characters are defined in RFC 3986

    一.背景 事情是这样的,前几天做一个基本的数据库“增删改查”的需求,前端传参的方式是“JSON字符串”,后端接收到此参数后,使用阿里巴巴fastjson进行解析,然后入库.需求很简单吧,但是偏偏遇到问 ...

  7. 【转】CSS之Background-Position left right center top bottom属性

    background-position:left top; 背景图片的左上角和容器(container)的左上角对齐,超出的部分隐藏. 等同于 background-position:0,0; 也等同 ...

  8. 销售订单(SO)-API-创建销售订单

    创建销售订单API主要注意几点: 初始化环境变量:fnd_global.apps_initialize(); mo_global.init('ONT'); mo_global.set_policy_c ...

  9. 多进程编程——理论讲解与 multiprocessing 模块

    多进程编程 import os pid = os .fork() 功能 :创建新的进程 参数: 无 返回值 :失败返回一个负数 成功:在原有进程中返回新的进程的PID号 在新进程中返回为0* 子进程会 ...

  10. css 之内容溢出滚动,隐藏滚动条(解决火狐浏览隐藏不了滚动条问题)

    解决火狐浏览隐藏不了滚动条问题 1.里层容器的width多17px,外层容器溢出隐藏,能兼容各个浏览器 .outContainer { width:350px; height:300px; overf ...