题目传送

  由于于题目保证输入的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. 第八章 ZYNQ-MIZ701 软硬调试高级技巧

      软件和硬件的完美结合才是SOC的优势和长处,那么开发ZYNQ就需要掌握软件和硬件开发的调试技巧,这样才能同时分析软件或者硬件的运行情况,找到问题,最终解决.那么本章将通过一个简单的例子带大家使用v ...

  2. Python 语言简介与入门

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  3. table html

    <html><head><title>demo-110101</title><style type="text/css"> ...

  4. 又谈F分布

    今天看到一篇不错的博文,有感,记录下来,相对来说讲到了本质,也很容易理解.https://www.cnblogs.com/think-and-do/p/6509239.html 首先,老生常谈,还是那 ...

  5. [转载]sklearn多分类模型

    [转载]sklearn多分类模型 这篇文章很好地说明了利用sklearn解决多分类问题时的implement层面的内容:https://www.jianshu.com/p/b2c95f13a9ae.我 ...

  6. Docker搭建Gitlab代码管理平台

    一.Gitlab的安装 宿主机环境: CentOS 7 docker docker-compose 1.查找镜像 docker search gitlab 2.拉取镜像 docker pull git ...

  7. Javascript的学习清单

    Javascript的学习清单 Javascript学习资源 程序员必读书籍 深入理解JavaScript系列 es6教程 jQuery中文文档 vue官网 zeptojs中文版 常用的插件与UI组件 ...

  8. css四种定位

    概述:元素定位属性主要包括的模式和边偏移两部分,也就是说以后定位要和边偏移量搭配使用.边偏移加定位定位模式才能构成一个完整的定义方式. 偏移量说明: 边偏移属性 描述 top: 顶端偏移,定义元素相对 ...

  9. 微信小程序编译提示tabar.iconPath 文件不存在

    tabBar.list[0].iconPath 文件不存在 明明是按路径放了本地图片的,却依然显示路径不存在 需要把路径的图片转移到编译后的weapp文件中相同路径下的img文件中 本地正常路径 粘贴 ...

  10. springboot有第三方jar打包成jar

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...