{
  "type": "code_options",
  "author": "csdn.net",
  "source": "solution.md",
  "exercise_id": "7cde4f4717e94c5bbf58bfa899802561",
  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,最坏情况为线性时间的选择算法",
  "title": "海港(port)",
  "desc": [
    {
      "content": "\n海港(port)\n【问题描述】\n小谢是海港的海关工作人员，每天都有许多船只到达海港，船上通常有很多来自不同国家的乘客。\n小谢对这些到达海港的船只非常感兴趣，他按照时间记录下了到达海港的每一艘船只情况；对于第i艘到达的船，他记录了这艘船只到达的时间ti（单位：秒），船上的乘客数量Ki，以及每名乘客的国籍x（i，1），x（i，2），···，x(i,k)。\n小谢统计了n艘船的信息，希望你帮忙计算出以每一艘船到达时间为止的24小时（24小时=86400秒）内所有乘船到达的乘客来自多少个不同的国家。\n形式化的讲，你需要计算n条信息。对于输出的第i条信息，你需要统计满足：ti-86400<tp<=ti的船只p，在所有的x（p，j）中，总共有多少个不同的数。\n输入格式：第1行输入一个正整数n，表示小谢统计了n艘船的信息。\n接下来的n行，每行描述一艘船的信息：前两个整数ti和ki分别表示这艘船到达海港的时间和船上的乘客数量，接下来的ki个整数x(i，j)表示从小谢第一次上班开始计时，这艘船在第ti秒到达海港。\n保证1<=n<=105,ki>=1,∑ki<=3×105,1<=x(i,j)<=105,1<=ti-1<ti<=109。其中∑ki表示所有ki的和。输出格式\n输出n行，第i行输出一个整数表示第i艘船到达后的统计信息。\n【输入样例1】\n3\n1 4 4 1 2 2\n2 2 2 3\n10 1 3\n【输出样例1】\n3\n4\n4\n样例1说明：第一艘船在第一秒到达海港，最近24小时到达的船是第一艘船，共4个乘客，分别来自国家4，1，2，2，共来自3个不同的国家。\n第2艘船在第2秒到达海港，最近24小时到达的船是第1艘船和第2艘船，共有4+2=6个乘客，分别来自国家4,1,2,2,2,3，共来自4个不同的国家；\n第三艘船在第10秒到达海港，最近24小时到达的船是第1艘船、第2艘船和第3艘船，共有4+2+1=7个乘客，分别是来自国家4,1,2,2,2,3,3，共来自4个不同的国家。\n【输入样例2】\n4\n1 4 1 2 2 3\n3 2 2 3\n86401 2 3 4\n86402 1 5\n【输出样例2】\n3\n3\n3\n4\n样例2说明：第一艘船在第一秒到达海港，最近24小时到达的船是第1艘，共有4个乘客，分别是来自国家1,2,2,3，共来自3个不同的国家。\n第2艘船是第3秒到达海港，最近24小时到达的船是第一艘船和第2艘船，共有4+2=6个乘客，分别来自1,2,2,3,2,3，共来自3个不同的国家\n第3艘船是第86401秒到达海港，最近24小时到达的船是第2艘船和第3艘船，共有2+2=4个乘客，分别来自2.3,3,4，共来自3个不同的国家\n第4艘船是第86402秒到达海港，最近24小时到达的船是第2艘船、第3艘船和第4艘船，共有2+2+1=5个乘客，分别来自2,3,3,4,5，共来自4个不同的国家",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "cpp"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ]
  ],
  "template": {
    "content": "#include <iostream>\n#include <cstdio>\n#include <cstring>\n#include <algorithm>\n#include <cmath>\n#include <queue>\nusing namespace std;\nint a[100100];\nint people[500100];\nstruct node{\n\tint country;\n\tint time;\n};\nqueue<node>q;\nint main(){\n\tint n,sum=0;\n\tscanf(\"%d\",&n);\n\tfor(int i=1;i<=n;i++){\n\t\tint t,p;\n\t\tscanf(\"%d%d\",&t,&p);\n\t\tnode temp;\n\t\ttemp.time=t;\n\t\tfor(int i=1;i<=p;i++){\n\t\t\tint cty;\n\t\t\tscanf(\"%d\",&cty);\n\t\t\ttemp.country=cty;\n\t\t\tq.push(temp);\n\t\t\tif(!people[cty]) sum++;\n\t\t\tpeople[cty]++;\n\t\t}\n\t\twhile(1){\n\t\t\tnode old;\n\t\t\told=q.front();\n\t\t\tif(temp.time-86400>=old.time)\n\t\t\t{\n\t\t\t\tint tc=old.country;\n\t\t\t\tpeople[tc]--;\n\t\t\t\tif(!people[tc]) sum--;\n\t\t\t\tq.pop();\n\t\t\t}\n\t\t\telse break; \n\t\t}\n\t\tcout<<sum<<endl;\n\t}\n\treturn 0;\n}",
    "language": "cpp"
  },
  "node_id": "dailycode-f77c8eab81bd4f33b5a86ef896683c1a",
  "license": "csdn.net",
  "created_at": 1637894159,
  "topic_link": "https://bbs.csdn.net/topics/600470251"
}