[NOIP2016 普及組] 海港 -STL-隊列queue

[NOIP2016 普及組] 海港

題目背景

NOIP2016 普及組 T3

題目描述

小 K 是一個海港的海關工作人員,每天都有許多船只到達海港,船上通常有很多來自不同國家的乘客。

小 K 對這些到達海港的船只非常感興趣,他按照時間記錄下了到達海港的每一艘船只情況;對于第 i i i 艘到達的船,他記錄了這艘船到達的時間 t i t_i ti? (單位:秒),船上的乘客數 k i k_i ki?,以及每名乘客的國籍 x i , 1 , x i , 2 , … , x i , k x_{i,1}, x_{i,2},\dots,x_{i,k} xi,1?,xi,2?,,xi,k?

小K統計了 n n n 艘船的信息,希望你幫忙計算出以每一艘船到達時間為止的 24 24 24 小時( 24 24 24 小時 = 86400 =86400 =86400 秒)內所有乘船到達的乘客來自多少個不同的國家。

形式化地講,你需要計算 n n n 條信息。對于輸出的第 i i i 條信息,你需要統計滿足 t i ? 86400 < t p ≤ t i t_i-86400<t_p \le t_i ti??86400<tp?ti? 的船只 p p p,在所有的 x p , j x_{p,j} xp,j? 中,總共有多少個不同的數。

輸入格式

第一行輸入一個正整數 n n n,表示小 K 統計了 n n n 艘船的信息。

接下來 n n n 行,每行描述一艘船的信息:前兩個整數 t i t_i ti? k i k_i ki? 分別表示這艘船到達海港的時間和船上的乘客數量,接下來 k i k_i ki? 個整數 x i , j x_{i,j} xi,j? 表示船上乘客的國籍。

保證輸入的 t i t_i ti? 是遞增的,單位是秒;表示從小K第一次上班開始計時,這艘船在第 t i t_i ti? 秒到達海港。

保證 1 ≤ n ≤ 1 0 5 1 \le n \le 10^5 1n105,$\sum{k_i} \le 3\times 10^5 $ , 1 ≤ x i , j ≤ 1 0 5 1\le x_{i,j} \le 10^5 1xi,j?105 1 ≤ t i ? 1 ≤ t i ≤ 1 0 9 1 \le t_{i-1}\le t_i \le 10^9 1ti?1?ti?109

其中 ∑ k i \sum{k_i} ki? 表示所有的 k i k_i ki? 的和。

輸出格式

輸出 n n n 行,第 i i i 行輸出一個整數表示第 i i i 艘船到達后的統計信息。

樣例 #1

樣例輸入 #1

3
1 4 4 1 2 2
2 2 2 3
10 1 3

樣例輸出 #1

3
4
4

樣例 #2

樣例輸入 #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 1 1 秒到達海港,最近 24 24 24 小時到達的船是第一艘船,共有 4 4 4 個乘客,分別是來自國家 4 , 1 , 2 , 2 4,1,2,2 4,1,2,2,共來自 3 3 3 個不同的國家;

第二艘船在第 2 2 2 秒到達海港,最近 24 24 24 小時到達的船是第一艘船和第二艘船,共有 4 + 2 = 6 4 + 2 = 6 4+2=6 個乘客,分別是來自國家 4 , 1 , 2 , 2 , 2 , 3 4,1,2,2,2,3 4,1,2,2,2,3,共來自 4 4 4 個不同的國家;

第三艘船在第 10 10 10 秒到達海港,最近 24 24 24 小時到達的船是第一艘船、第二艘船和第三艘船,共有 4 + 2 + 1 = 7 4+2+1=7 4+2+1=7 個乘客,分別是來自國家 4 , 1 , 2 , 2 , 2 , 3 , 3 4,1,2,2,2,3,3 4,1,2,2,2,3,3,共來自 4 4 4 個不同的國家。

【樣例解釋 2】

第一艘船在第 1 1 1 秒到達海港,最近 24 24 24 小時到達的船是第一艘船,共有 4 4 4 個乘客,分別是來自國家 1 , 2 , 2 , 3 1,2,2,3 1,2,2,3,共來自 3 3 3 個不同的國家。

第二艘船在第 3 3 3 秒到達海港,最近 24 24 24 小時到達的船是第一艘船和第二艘船,共有 4 + 2 = 6 4+2=6 4+2=6 個乘客,分別是來自國家 1 , 2 , 2 , 3 , 2 , 3 1,2,2,3,2,3 1,2,2,3,2,3,共來自 3 3 3 個不同的國家。

第三艘船在第 86401 86401 86401 秒到達海港,最近 24 24 24 小時到達的船是第二艘船和第三艘船,共有 2 + 2 = 4 2+2=4 2+2=4 個乘客,分別是來自國家 2 , 3 , 3 , 4 2,3,3,4 2,3,3,4,共來自 3 3 3 個不同的國家。

第四艘船在第 86402 86402 86402 秒到達海港,最近 24 24 24 小時到達的船是第二艘船、第三艘船和第四艘船,共有 2 + 2 + 1 = 5 2+2+1=5 2+2+1=5 個乘客,分別是來自國家 2 , 3 , 3 , 4 , 5 2,3,3,4,5 2,3,3,4,5,共來自 4 4 4個 不同的國家。

【數據范圍】

  • 對于 10 % 10\% 10% 的測試點, n = 1 , ∑ k i ≤ 10 , 1 ≤ x i , j ≤ 10 , 1 ≤ t i ≤ 10 n=1,\sum k_i \leq 10,1 \leq x_{i,j} \leq 10, 1 \leq t_i \leq 10 n=1,ki?10,1xi,j?10,1ti?10
  • 對于 20 % 20\% 20% 的測試點, 1 ≤ n ≤ 10 , ∑ k i ≤ 100 , 1 ≤ x i , j ≤ 100 , 1 ≤ t i ≤ 32767 1 \leq n \leq 10, \sum k_i \leq 100,1 \leq x_{i,j} \leq 100,1 \leq t_i \leq 32767 1n10,ki?100,1xi,j?100,1ti?32767
  • 對于 40 % 40\% 40% 的測試點, 1 ≤ n ≤ 100 , ∑ k i ≤ 100 , 1 ≤ x i , j ≤ 100 , 1 ≤ t i ≤ 86400 1 \leq n \leq 100, \sum k_i \leq 100,1 \leq x_{i,j} \leq 100,1 \leq t_i \leq 86400 1n100,ki?100,1xi,j?100,1ti?86400
  • 對于 70 % 70\% 70% 的測試點, 1 ≤ n ≤ 1000 , ∑ k i ≤ 3000 , 1 ≤ x i , j ≤ 1000 , 1 ≤ t i ≤ 1 0 9 1 \leq n \leq 1000, \sum k_i \leq 3000,1 \leq x_{i,j} \leq 1000,1 \leq t_i \leq 10^9 1n1000,ki?3000,1xi,j?1000,1ti?109
  • 對于 100 % 100\% 100% 的測試點, 1 ≤ n ≤ 1 0 5 , ∑ k i ≤ 3 × 1 0 5 , 1 ≤ x i , j ≤ 1 0 5 , 1 ≤ t i ≤ 1 0 9 1 \leq n \leq 10^5,\sum k_i \leq 3\times 10^5, 1 \leq x_{i,j} \leq 10^5,1\leq t_i \leq 10^9 1n105,ki?3×105,1xi,j?105,1ti?109題意

記錄當前船的24小時內船上人員的國籍數量

數據約束

所有數據都在int內,如果10^5左右,如果是一維數組完全沒問題,如果是二維就需要小心了

  • 百分之40的數據,t都在24小時內,如果單純賺分也容易,直接統計下國籍數就行
  • 百分之70的數據,數據量比較小,簡單的結構體里面包含一個國籍的數組儲存,數據點也能過
  • 最后的百分之30,數據量每個船人數最多在10^5 ,如果隊列的每個結構體中數組都開這么長,直接會MLE 內存溢出了(相當于10^5 * 8 * 10^4的二維數組,G了)

思路

  1. 記錄國籍數量且是24小時內,每個船都有k個人,要去重記錄,所以直接考慮用全局定義一個數組去記錄,國籍數做下標就行,例如:外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳
  2. 由于要遍歷24小時的,且要將國籍超出24小時的及時刪除,所以每個船的船員的都要記錄國籍。可以使用隊列儲存,超過24小時也能直接刪除。隊列 的每個數據項為結構體,結構體儲存時間、人數、船員信息
  3. 根據數據約束分析,結構體因為儲存了數組,數組開到10^5,最終隊列儲存后容易內存溢出,所以優化處理:數組換成動態數組vector ,節省內存開銷 ,over。

參考代碼40分版

#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int a[N];
queue < node > qb;
int main() {
//	方法一:直接計不同國籍數目; 40分版 int n,t,k,num=0,gj;cin>>n;while(n--){cin>>t>>k;for(int i=0;i<k;i++){cin>>gj;if(a[gj]==0){ //新的國籍 num++;a[gj]=1;}}cout<<num<<endl; }}

參考代碼

#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int a[N];
struct node{int t;//時間int k;//船數 vector<int> g; 
//	int g[N];//只能拿70分 
} boat; 
queue < node > qb;
int main() {//結構體壓入棧,根據時間 >24H則出棧int n,t,k,num=0,gj;cin>>n;while(n--){node tb;cin>>tb.t>>tb.k;for(int i=0;i<tb.k;i++){cin>>gj;if(a[gj]==0){ //新的國籍 num++;a[gj]=1;}else{a[gj]++;	}
//			tb.g[i] = gj;tb.g.push_back(gj);}qb.push(tb);//判斷是否時間超過24h node temp;temp = qb.front();while(tb.t-temp.t>=86400){for(int i=0;i<temp.k;i++){a[temp.g[i]]--; //注意是對頭元素的國籍人數判斷!寫成隊尾就容易RE if(a[temp.g[i]]==0) num--;}qb.pop();//隊頭出列;temp = qb.front(); }cout<<num<<endl; }
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63388.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vulkan入門】16-IndexBuffer

TOC 先叨叨 上篇介紹了如何使用VertexBuffer傳入頂點信息。兩個多星期了我們一直在玩三個點&#xff0c;本篇介紹如何渲染更多的點。 在渲染前考慮一個問題&#xff0c;渲染一個三角形需要三個點&#xff0c;渲染兩個相接的三角形需要幾個點&#xff1f; 答案是6個點&#xf…

IDEA 打包普通JAVA項目為jar包

需求&#xff1a;普通java項目&#xff08;有添加依賴的jar包&#xff09;&#xff0c;沒有用maven管理依賴和打包&#xff0c;要打成jar包&#xff0c;包可以用“java -jar 包名” 啟動程序。 講如何打包前&#xff0c;先記錄下普通項目的目錄結構和怎么添加依賴包 1.目錄結…

python的流程控制語句之制作空氣質量評估系統

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;開發者-曼億點 &#x1f468;?&#x1f4bb; hallo 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;?&#x1f4bb; 本文由 曼億點 原創 &#x1f468;?&#x1f4bb; 收錄于專欄&#xff1a…

Docker Compose 多應用部署 一鍵部署

介紹 Docker Compose通過一個單獨的docker-compose.yml模板文件(YAML格式)來定義一組相關聯的應用容器&#xff0c;幫助我們實現多個相互關聯的Docker容器的快速部署。 如&#xff1a;springbootmysqlnginx 如果一個個去部署他會非常的麻煩&#xff0c;這時候可以選擇Docker …

【數據結構——線性表】單鏈表的基本運算(頭歌實踐教學平臺習題)【合集】

目錄&#x1f60b; 任務描述 相關知識 測試說明 我的通關代碼: 測試結果&#xff1a; 任務描述 本關任務&#xff1a;編寫一個程序實現單鏈表的基本運算。 相關知識 為了完成本關任務&#xff0c;你需要掌握&#xff1a;初始化線性表、銷毀線性表、判定是否為空表、求線性…

git branch -r(--remotes )顯示你本地倉庫知道的所有 遠程分支 的列表

好的&#xff0c;git branch -r 這個命令用于列出遠程分支。讓我詳細解釋一下&#xff1a; 命令&#xff1a; git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用&#xff1a; 這個命令會顯示你本地倉庫知道的所有 遠程分支 的列表。它不…

【AI熱點】小型語言模型(SLM)的崛起:如何在AI時代中找到你的“左膀右臂”?

人工智能模型的演變 多年來&#xff0c;谷歌等科技巨頭和OpenAI等初創公司&#xff0c;一直在不遺余力地利用海量在線數據&#xff0c;打造更大、更昂貴的人工智能&#xff08;AI&#xff09;模型。這些大型語言模型&#xff08;LLM&#xff09;被廣泛應用于ChatGPT等聊天機器…

【昇騰】NPU ID:物理ID、邏輯ID、芯片映射關系

起因&#xff1a; https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/23.0.0/re/npu/npusmi_013.html npu-smi info -l查詢所有NPU設備&#xff1a; [naienotebook-npu-bd130045-55bbffd786-lr6t8 DCNN]$ npu-smi info -lTotal Count : 1NPU…

Elasticsearch-DSL高級查詢操作

一、禁用元數據和過濾數據 1、禁用元數據_source GET product/_search {"_source": false, "query": {"match_all": {}} }查詢結果不顯示元數據 禁用之前: {"took" : 0,"timed_out" : false,"_shards" : {&quo…

基于Spring Boot的體育商品推薦系統

一、系統背景與目的 隨著電子商務的快速發展和人們健康意識的提高&#xff0c;體育商品市場呈現出蓬勃發展的態勢。然而&#xff0c;傳統的體育商品銷售方式存在商品種類繁多、用戶選擇困難、個性化需求無法滿足等問題。為了解決這些問題&#xff0c;基于Spring Boot的體育商品…

【Java Nio Netty】基于TCP的簡單Netty自定義協議實現(萬字,全篇例子)

基于TCP的簡單Netty自定義協議實現&#xff08;萬字&#xff0c;全篇例子&#xff09; 前言 有一陣子沒寫博客了&#xff0c;最近在學習Netty寫一個實時聊天軟件&#xff0c;一個高性能異步事件驅動的網絡應用框架&#xff0c;我們常用的SpringBoot一般基于Http協議&#xff0…

【2025最新計算機畢業設計】基于SSM校園歌手賽事管理系統【提供源碼+答辯PPT+文檔+項目部署】

作者簡介&#xff1a;?CSDN新星計劃導師、Java領域優質創作者、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和學生畢業項目實戰,高校老師/講師/同行前輩交流。? 主要內容&#xff1a;&#x1f31f;Java項目、Python項目、前端項目、PHP、ASP.NET、人工智能…

Visual Studio 使用 GitHub Copilot 協助調試

&#x1f380;&#x1f380;&#x1f380;【AI輔助編程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 與 IntelliCode 輔助編碼Visual Studio 安裝和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 擴展Visual Studio 使用 GitHu…

了解ARM的千兆以太網——RK3588

1. 簡介 本文并不重點講解調試內容&#xff0c;重點了解以太網在ARM設計中的框架以及在設備樹以及驅動的一個整體框架。了解作為一個驅動開發人員當拿到一款未開發過的ARM板卡應該怎么去把網卡配置使用起來。 2. 基礎知識介紹 在嵌入式ARM中實現以太網的解決方案通常有以下兩種…

Springboot家政服務管理系統

摘 要 科技進步的飛速發展引起人們日常生活的巨大變化&#xff0c;電子信息技術的飛速發展使得電子信息技術的各個領域的應用水平得到普及和應用。信息時代的到來已成為不可阻擋的時尚潮流&#xff0c;人類發展的歷史正進入一個新時代。在現實運用中&#xff0c;應用軟件的工作…

DC-9筆記

靶機信息 官網:DC: 9 ~ VulnHub 只有一個flag,官網上沒給其他提示 信息收集 nmap 192.168.66.2-254nmap 192.168.66.146 -A -p-開放了80端口,22端口是filtered的,被過濾? NMAP 六種端口狀態解讀_nmap filtered-CSDN博客 那來看看http服務吧 http(80) 頁腳是空白的,插件也…

STM32-筆記3-驅動蜂鳴器

1、復制03項目&#xff0c;重命名為04項目 打開04項目的Drivers/BSP/led文件夾&#xff0c;把led文件夾更改為beep文件夾&#xff0c;改文件夾內部的.c和.h文件更改為beep.c和beep.h文件&#xff0c;如下圖所示。 2、打開工程文件 出現彈窗&#xff0c;顯示找不到xx文件&#…

PHP開發日志 ━━ 基礎知識:四種不同的變量返回方式該如何調用

最近在給框架升級&#xff0c;其中涉及到古早的緩存系統升級&#xff0c;現在準備區分類型為混合、變量和普通文件&#xff0c;那么變量用什么形式存儲到緩存才能給后續開發帶來便利和通用性呢&#xff1f;于是就涉及到了本文的php基礎知識。 好吧&#xff0c;又是一個無用的知…

概率論得學習和整理30: 用EXCEL 描述泊松分布 poisson distribution

目錄 1 泊松分布的基本內容 1.1 泊松分布的關鍵點 1.1.1 屬于離散分布 1.1.2 泊松分布的特點&#xff1a;每個子區間內概率相等 &#xff0c; λ就是平均概率 1.2 核心參數 1.3 pmf公式 1.4 期望和方差 2 例1&#xff1a;用EXCEL計算泊松分布的概率 3 比較λ不同值時…

Java中的垃圾收集器

文章目錄 1. 理解不同類型的垃圾收集器1.1 Serial 收集器1.2 Parallel (吞吐量) 收集器1.3 CMS (Concurrent Mark-Sweep) 收集器1.4 G1 (Garbage First) 收集器1.5 ZGC 和 Shenandoah GC1.6 Epsilon GC1.7 ParNew 收集器1.8 Zing (Azul Systems) 2. 優化垃圾收集器的選擇和配置…