公司网站建设费用怎么入账,一个专门做ppt的网站吗,coding部署wordpress,制作网站的基本工作流程一:题目
afeng是一个港口的海关工作人员#xff0c;每天都有许多船只到达港口#xff0c;船上通常有很多来自不同国家的乘客。
afeng对这些到达港口的船只非常感兴趣#xff0c;他按照时间记录下了到达港口的每一艘船只情况#xff1b;对于第i艘到达的船#xff0c;他记…一:题目
afeng是一个港口的海关工作人员每天都有许多船只到达港口船上通常有很多来自不同国家的乘客。
afeng对这些到达港口的船只非常感兴趣他按照时间记录下了到达港口的每一艘船只情况对于第i艘到达的船他记录了这艘船到达的时间ti (单位秒)船上的乘客数ki以及每名乘客的国籍 xi,1,xi,2,…,xi,k。
afeng统计了n艘船的信息希望你帮忙计算出以每一艘船到达时间为止的24小时(24小时86400秒内所有乘船到达的乘客来自多少个不同的国家。
形式化地讲你需要计算n条信息。对于输出的第i条信息你需要统计满足ti−86400tp≤ti的船只p在所有的xp,j中总共有多少个不同的数。
输入格式: 第一行输入一个正整数n表示小K统计了n艘船的信息。
接下来n行每行描述一艘船的信息前两个整数ti和ki分别表示这艘船到达海港的时间和船上的乘客数量接下来ki个整数表示船上乘客的国籍。
保证输入的ti是递增的单位是秒表示从afeng第一次上班开始计时这艘船在第ti秒到达海港。
保证 1≤n≤10^5∑ki ≤ 3∗1051≤xi,j≤1051≤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小时到达的船是第一艘船和第二艘船共有426个乘客分别是来自国家4,1,2,2,2,3共来自4个不同的国家
第三艘船在第10秒到达港口最近24小时到达的船是第一艘船、第二艘船和第 三艘船共有4217个乘客分别是来自国家4,1,2,2,2,3,3共来自4个不同的国家。
样例2解释
第一艘船在第1秒到达港口最近24小时到达的船是第一艘船共有4个乘客分别是来自国家1,2,2,3共来自3个不同的国家。
第二艘船在第3秒到达港口最近24小时到达的船是第一艘船和第二艘船共有426个乘客分别是来自国家1,2,2,3,2,3共来自3个不同的国家。
第三艘船在第86401秒到达港口最近24小时到达的船是第二艘船和第三艘船共有224个乘客分别是来自国家2,3,3,4共来自3个不同的国家。
第四艘船在第86402秒到达港口最近24小时到达的船是第二艘船、第三艘船和第四艘船共有2215个乘客分别是来自国家2,3,3,4,5共来自4个不同的国家。
二:上码这个码有问题 测试点第二个超时 分享出来 希望可以指错
/**思路:1.题目写的挺复杂所以我们就要精简题目也就是只看输入和输出分析数据和末尾给出的解释。 2.因为我们是要统计24小时以内的数据所以我们需要判断每次的到达时间和前面的时间的关系。如果与其做减法小于86400那么说明在24小时以内这时我们统计不同的国籍个数需要从前面的时间有多少个不同国籍数进行统计那么这时我们就需要用到一对多的容器mapint,vectorint ; 在用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 */
#includeiostream
#includemap
#includevector
#includeset
using namespace std;int main(){vectorint v1;//统计24小时以内的不同的国籍个数 vectorint v2;//记录时间 vectorint v3;//处理每个时间所对应的国籍号码 mapint,vectorint m; //统计每个时间不同的国籍个数 mapint,vectorint :: 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);setint 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小时以内的 setint s; for(mt m.begin(); mt ! m.end(); mt){if(mt-first v2[j]){//这里表示的是我们选择的是所有在24小时以内 vectorint:: 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]);} 如果同学会做这道题可以私信我关于超时的 我感觉八成我的思路可能会有问题如果你有思路可以留言或则私信