一:题目

afeng是一个港口的海关工作人员,每天都有许多船只到达港口,船上通常有很多来自不同国家的乘客。

afeng对这些到达港口的船只非常感兴趣,他按照时间记录下了到达港口的每一艘船只情况;对于第i艘到达的船,他记录了这艘船到达的时间ti (单位:秒),船上的乘客数ki,以及每名乘客的国籍 xi,1,xi,2,…,xi,k。

afeng统计了n艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的24小时(24小时=86400秒)内所有乘船到达的乘客来自多少个不同的国家。

形式化地讲,你需要计算n条信息。对于输出的第i条信息,你需要统计满足ti−86400<tp≤ti的船只p,在所有的xp,j中,总共有多少个不同的数。

输入格式:
第一行输入一个正整数n,表示小K统计了n艘船的信息。

接下来n行,每行描述一艘船的信息:前两个整数ti和ki分别表示这艘船到达海港的时间和船上的乘客数量,接下来ki个整数表示船上乘客的国籍。

保证输入的ti是递增的,单位是秒;表示从afeng第一次上班开始计时,这艘船在第ti秒到达海港。

保证 1≤n≤10^5,∑ki ≤ 3∗105,1≤xi,j≤105,1≤t(i-1)≤ti≤10^9

其中∑ki表示所有的ki的和。

输出格式:
输出n行,第i行输出一个整数表示第i艘船到达后的统计信息。

输入样例1:
3
1 4 4 1 2 2
2 2 2 3
10 1 3
结尾无空行
输出样例1:
3
4
4
结尾无空行
输入样例2:
4
1 4 1 2 2 3
3 2 2 3
86401 2 3 4
86402 1 5
结尾无空行
输出样例2:
3
3
3
4
结尾无空行
样例1解释:

第一艘船在第1秒到达港口,最近24小时到达的船是第一艘船,共有4个乘客, 分别是来自国家4,1,2,2,共来自3个不同的国家;

第二艘船在第2秒到达港口,最近24小时到达的船是第一艘船和第二艘船,共有4+2=6个乘客,分别是来自国家4,1,2,2,2,3,共来自4个不同的国家;

第三艘船在第10秒到达港口,最近24小时到达的船是第一艘船、第二艘船和第 三艘船,共有4+2+1=7个乘客,分别是来自国家4,1,2,2,2,3,3,共来自4个不同的国家。

样例2解释:

第一艘船在第1秒到达港口,最近24小时到达的船是第一艘船,共有4个乘客,分别是来自国家1,2,2,3,共来自3个不同的国家。

第二艘船在第3秒到达港口,最近24小时到达的船是第一艘船和第二艘船,共有4+2=6个乘客,分别是来自国家1,2,2,3,2,3,共来自3个不同的国家。

第三艘船在第86401秒到达港口,最近24小时到达的船是第二艘船和第三艘船,共有2+2=4个乘客,分别是来自国家2,3,3,4,共来自3个不同的国家。

第四艘船在第86402秒到达港口,最近24小时到达的船是第二艘船、第三艘船和第四艘船,共有2+2+1=5个乘客,分别是来自国家2,3,3,4,5,共来自4个不同的国家。

二:上码(这个码有问题 测试点第二个超时 分享出来 希望可以指错 )

/**思路:1.题目写的挺复杂,所以我们就要精简题目,也就是只看输入和输出分析数据和末尾给出的解释。 2.因为我们是要统计24小时以内的数据,所以我们需要判断每次的到达时间和前面的时间的关系。如果与其做减法小于86400,那么说明在24小时以内,这时我们统计不同的国籍个数,需要从前面的时间有多少个不同国籍数进行统计,那么这时我们就需要用到一对多的容器map<int,vector<int> >; 在用set容器装下每个时间对应的国籍数(用set主要目的是为了去重) 31 4 4 1 2 22 2 2 310 1 341 4 1 2 2 33 2 2 386401 2 3 486402 1 5       */
#include<iostream>
#include<map>
#include<vector>
#include<set>
using namespace std;int main(){vector<int> v1;//统计24小时以内的不同的国籍个数 vector<int> v2;//记录时间 vector<int> v3;//处理每个时间所对应的国籍号码 map<int,vector<int> > m; //统计每个时间不同的国籍个数 map<int,vector<int> >:: iterator mt;int N;//cin >> N;scanf("%d",&N);for(int i = 0; i < N; i++) {int time,M;//cin >> time >> M;scanf("%d%d",&time,&M);v2.push_back(time);set<int> s_one;for(int j = 0; j < M; j++) {       int num;//cin >> num;scanf("%d",&num);v3.push_back(num);    s_one.insert(num);//这里主要是处理第一个时间对应的国籍个数     }m[time] = v3;v3.clear();if(i != 0){for(int j = 0; j < v2.size()-1; j++){if(time - v2[j] < 86400){//说明在24小时以内  v2[j]往后的所有时间均是在24小时以内的 set<int> s;  for(mt = m.begin(); mt != m.end(); mt++){if(mt->first >= v2[j]){//这里表示的是我们选择的是所有在24小时以内 vector<int>:: iterator vt;for(vt = mt->second.begin(); vt != mt->second.end(); vt++){//遍历每个时间对应的国籍号 s.insert(*vt);   //  cout << *vt << ' ';           }       }                       }   //  cout << endl;         v1.push_back(s.size()); break;//跳出这个循环,因为我们已经统计完了24小时以内的不同的国籍的个数             } }     } else{v1.push_back(s_one.size());//记录首个时间的国籍个数 } }for(int i = 0; i < v1.size(); i++) {//cout << v1[i] << endl;printf("%d\n",v1[i]);}

如果同学会做这道题可以私信我,关于超时的 我感觉八成我的思路可能会有问题,如果你有思路可以留言或则私信

7-2 港口审查 (15 分)相关推荐

  1. 浙大版《C语言程序设计(第3版)》题目集 练习2-17 生成3的乘方表 (15 分)

    练习2-17 生成3的乘方表 (15 分) 输入一个非负整数n,生成一张3的乘方表,输出3​0​​~3​n​​的值.可调用幂函数计算3的乘方. 输入格式: 输入在一行中给出一个非负整数n. 输出格式: ...

  2. 团体——L1-005 考试座位号 (15 分)

    L1-005 考试座位号 (15 分) 方法一: #include<stdio.h> struct stu{char a[20];int s,k; }xue; int main() {st ...

  3. 习题2.5 两个有序链表序列的合并 (15 分)

    习题2.5 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...

  4. 习题2.4 递增的整数序列链表的插入 (15 分)

    习题2.4 递增的整数序列链表的插入 (15 分) 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性. 函数接口定义: List Insert( List ...

  5. B1091 N-自守数 (15分)

    B1091 N-自守数 (15分) 如果某个数 \(K\)的平方乘以\(N\) 以后,结果的末尾几位数等于 \(K\),那么就称这个数为"\(N\)-自守数".例如 \(3×92 ...

  6. 浙江大学远程教育学院计算机考试,浙江大学远程教育学院机试题 Windows操作题(共15分,若有做错请酌情 ....docx...

    浙江大学远程教育学院机试题 Windows操作题(共15分,若有做错请酌情 ....docx 第 PAGE 26 页 共 NUMPAGES 36 页 浙江大学远程教育学院机试题 Windows操作题( ...

  7. [PAT B1036]跟奥巴马一起编程(15分)

    1036 跟奥巴马一起编程(15)(15 分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算机科学教育周& ...

  8. 7-7 字符串修改 (15 分)

    7-7 字符串修改 (15 分) 删除给出字符串中的元音字母,同时将辅音字母改为小写,并在前面加一个".".元音字母是"A", "O", & ...

  9. 7-4 递增序列 (15 分)

    7-4 递增序列 (15 分) 递增序列指的是,在序列中,对于任何两个相邻的数b[i]和bi+1,总有b[i]<b[i+1].现在,给你一个序列b[1],b[2],-b[n],和一个正整数d,每 ...

最新文章

  1. 流程的python-学习《流畅的python》第一天
  2. 全新 Hexo Material Design 主题 Mellow
  3. 上一局APP玩边画边猜,第1次见人使用道具,我的游戏体验上升了
  4. react全家桶实现招聘app-项目准备(一)
  5. 《Visual Studio Code权威指南》读后总结
  6. 剑指offer面试题07. 重建二叉树(递归)(切片)
  7. 基于WebSocket实现的前端实时声音告警提醒功能
  8. python字符转换unicode编码_Python字符编码转换Unicode和str
  9. 计算机桌面文档全丢,电脑重启后桌面文件全部丢失怎么办
  10. 一起来做个CH347的项目(应用于FPGA、CPLD、MCU)
  11. DFS cdoevs 3100 蜗牛
  12. 键盘里Insert作用
  13. 字体反扒 ---汽车之家(文字)
  14. NOIP2009提高组复赛原题题解——Proking
  15. 样本标准差与自由度 n-1 卡方分布关系的证明
  16. mac设置文件权限_如何在Mac上设置文件权限
  17. 磁编码器MT6835_SPI读取位置信息
  18. 使用系统默认声音、震动
  19. 2020复旦cs专硕抄底经验
  20. 百度Ai studio上运行pytorch和tensorflow(转载)

热门文章

  1. 程序员欢呼:微软Bing开始支持搜索源码、可直接运行
  2. java 物理内存_聊聊Java中的内存
  3. C#中泛型在Class上的实现
  4. ios之Xcode工程中添加文件常用快捷键
  5. linux c之解决使用socket函数返回为0的问题
  6. 十一、飞机大战(IVX 快速开发教程)
  7. C++入门指南及实战 第一步 概述及经典HelloWorld
  8. 计算机专业技能考核方案,计算机专业技能课教学目标考核方案教程.doc
  9. java获取tomcat目录结构_tomcat目录结构简介_动力节点Java学院整理
  10. 小小鸡蛋竟然能够承受1200kg重量!?