AcWing103.電影——離散化

題目

莫斯科正在舉辦一個大型國際會議,有 n n n 個來自不同國家的科學家參會。

每個科學家都只懂得一種語言。
為了方便起見,我們把世界上的所有語言用 1 到 109 之間的整數編號。

在會議結束后,所有的科學家決定一起去看場電影放松一下。

他們去的電影院里一共有 m m m 部電影正在上映,每部電影的語音和字幕都采用不同的語言。

對于觀影的科學家來說,如果能聽懂電影的語音,他就會很開心;如果能看懂字幕,他就會比較開心;如果全都不懂,他就會不開心。

現在科學家們決定大家看同一場電影。

請你幫忙選擇一部電影,可以讓觀影很開心的人最多。

如果有多部電影滿足條件,則在這些電影中挑選觀影比較開心的人最多的那一部。

輸入格式

第一行輸入一個整數 n n n,代表科學家的數量。

第二行輸入 n n n 個整數 a 1 , a 2 … a n a_1,a_2…a_n a1?,a2?an?,其中 a i a_i ai? 表示第 i i i 個科學家懂得的語言的編號。

第三行輸入一個整數 m m m,代表電影的數量。

第四行輸入 m m m 個整數 b 1 , b 2 … b m b_1,b_2…b_m b1?,b2?bm?,其中 b i b_i bi? 表示第 i i i 部電影的語音采用的語言的編號。

第五行輸入 m m m 個整數 c 1 , c 2 … c m c_1,c_2…c_m c1?,c2?cm?,其中 c i c_i ci? 表示第 i i i 部電影的字幕采用的語言的編號。

請注意對于同一部電影來說, b i ≠ c i b_i≠c_i bi?=ci?

同一行內數字用空格隔開。

輸出格式

輸出一個整數,代表最終選擇的電影的編號。電影編號 1~ m m m

如果答案不唯一,輸出任意一個均可。

數據范圍

  • 1 ≤ n , m ≤ 200000 1≤n,m≤200000 1n,m200000
  • 1 ≤ a i , b i , c i ≤ 1 0 9 1≤a_i,b_i,c_i≤10^9 1ai?,bi?,ci?109

輸入樣例

3
2 3 2
2
3 2
2 3

輸出樣例

2

分析

雖然語言的范圍在 int 以內,但是這 m m m 部電影與 n n n 個人最多涉及 2 ? m + n 2 * m + n 2?m+n 種語言。把所有電影和人涉及的語言放入一個數組中,排序并離散化,用一個 1 ~ 2 ? m + n 2 * m + n 2?m+n 之間的整數代替每種語言。此時就可以用數組直接統計會上述每種語言的人的數量,從而選擇滿足題目要求的電影。

時間復雜度為 O ( ( n + m ) l o g ( n + m ) ) O((n+m)log(n + m)) O((n+m)log(n+m))

代碼

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;const int N = 2e5 + 50;
int a[N], b[N], c[N];
int cinema[N * 3];
int tot = 0;
int k = 0;
int ans[N * 3];//查詢x映射為哪個1~k之間的整數
int query(int x) {return lower_bound(cinema + 1, cinema + 1 + k, x) - cinema;
}//離散化
void discrete() {//排序sort(cinema + 1, cinema + tot + 1);//去重,k為去重后的元素個數k = unique(cinema + 1, cinema + tot + 1) - (cinema + 1);
}int main() {int n, m;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];cinema[++tot] = a[i];}cin >> m;for (int i = 1; i <= m; i++) {cin >> b[i];cinema[++tot] = b[i];}for (int i = 1; i <= m; i++) {cin >> c[i];cinema[++tot] = c[i];}//離散化discrete(); for (int i = 1; i <= n; i++) ans[query(a[i])]++; //統計每種語言會的科學家數//遍歷所有電影//res 為最終結果,初始值為1,是因為如果沒有符合條件的電影就隨便選擇一部,電影編號是從1開始的int res = 1, ans1 = 0, ans2 = 0;for (int i = 1; i <= m; i++) {int ansb = ans[query(b[i])]; //能聽懂電影的語音的人數——>開心int ansc = ans[query(c[i])]; //能看懂字幕的人數--> 比較開心//當前電影比之前的電影開心的人多 或者 開心的人和之前的人一樣,但是比較開心的比之前多,則選擇當前電影if (ansb > ans1 || (ansb == ans1 && ansc > ans2)) { res = i;ans1 = ansb;ans2 = ansc;}}cout << res << endl;return 0;
}

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

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

相關文章

Interactive Visual Data Analysis

Words&Contents Home | Interactive Visual Data Analysis Book Outline 這本書對視覺、互動和分析方法進行了系統而全面的概述&#xff0c;作為數據可視化方面比較好的讀物&#xff1b; 目錄 Words&Contents Book Outline &#xff08;一&#xff09;Introduct…

AIGC 3D即將爆發,混合顯示成為產業數字化的生產力平臺

2023年&#xff0c;大語言模型與生成式AI浪潮席卷全球&#xff0c;以文字和2D圖像生成為代表的AIGC正在全面刷新產業數字化。而容易為市場所忽略的是&#xff0c;3D圖像生成正在成為下一個AIGC風口&#xff0c;AIGC 3D宇宙即將爆發。所謂AIGC 3D宇宙&#xff0c;即由文本生成3D…

VBA_MF系列技術資料1-227

MF系列VBA技術資料 為了讓廣大學員在VBA編程中有切實可行的思路及有效的提高自己的編程技巧&#xff0c;我參考大量的資料&#xff0c;并結合自己的經驗總結了這份MF系列VBA技術綜合資料&#xff0c;而且開放源碼&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04屬于定…

安裝compiler version 5

這個compiler version5 在我的資源里面可以免費下載&#xff1b; 另外這個東西還需要安裝&#xff0c;安裝教程在這里&#xff1a;Keil最新版保姆教程&#xff08;解決缺少V5編譯器問題&#xff09; - 嗶哩嗶哩 (bilibili.com) 看吧安裝好了year

C語言鏈表使用

目錄 雙鏈表增刪改查鏈表帶功能函數 雙鏈表增刪改查 #include <stdio.h> #include <stdlib.h>// 雙鏈表結點的定義 typedef struct DNode{int data;struct DNode *prev;struct DNode *next; } DNode;// 創建雙鏈表 DNode *createDoublyLinkedList() {int n, i;pri…

【C語言】qsort的秘密

一&#xff0c;本文目標 qsort函數可以對任意類型數據甚至是結構體內部的數據按照你想要的規則排序&#xff0c;它的功能很強大&#xff0c;可是為什么呢&#xff1f; 我將通過模擬實現qsort函數來讓你對這整個過程有一個清晰的深刻的理解。 二&#xff0c;qsort函數原型 v…

leetcode刷題詳解一

算法題常用API std::accumulate 函數原型&#xff1a; template< class InputIt, class T > T accumulate( InputIt first, InputIt last, T init );一般求和的&#xff0c;代碼如下&#xff1a; int sum accumulate(vec.begin() , vec.end() , 0);詳細用法參考 lo…

【python海洋專題四十七】風速的風羽圖

【python海洋專題四十七】風速的風羽圖 圖片 往期推薦 圖片 【python海洋專題一】查看數據nc文件的屬性并輸出屬性到txt文件 【python海洋專題二】讀取水深nc文件并水深地形圖 【python海洋專題三】圖像修飾之畫布和坐標軸 【Python海洋專題四】之水深地圖圖像修飾 【Pyth…

記一次linux操作系統實驗

前言 最近完成了一個需要修改和編譯linux內核源碼的操作系統實驗&#xff0c;個人感覺這個實驗還是比較有意思的。這次實驗總共耗時4天&#xff0c;從對linux實現零基礎&#xff0c;通過查閱資料和不斷嘗試&#xff0c;直到完成實驗目標&#xff0c;在這過程中確實也收獲頗豐&…

pytorch模型優化簡介,未完結版

如有幫助&#xff0c;點贊收藏關注&#xff01; 如需轉載&#xff0c;請注明出處&#xff01; 今天來介紹torch模型中的優化器 優化是指在每個訓練步驟中調整模型參數以減少模型誤差的過程。 優化算法定義如何執行這個過程 所有優化邏輯都封裝在優化器對象中。在這里&#xf…

【黑馬甄選離線數倉day04_維度域開發】

1. 維度主題表數據導出 1.1 PostgreSQL介紹 PostgreSQL 是一個功能強大的開源對象關系數據庫系統&#xff0c;它使用和擴展了 SQL 語言&#xff0c;并結合了許多安全存儲和擴展最復雜數據工作負載的功能。 官方網址&#xff1a;PostgreSQL: The worlds most advanced open s…

音視頻項目——RTSP服務器解析(1)

介紹 利用線程池&#xff0c;實現 RTSP 服務器的高并發請求處理。 RTSP 是音視頻的控制視頻的協議&#xff0c;如果您還不了解&#xff0c;可以看看之前我解析 RTSP 協議的文章。音視頻協議解析(RTP/RTCP/RTSP/RTMP)——RTSP解析-CSDN博客 解析 我們先來看 RTP 的實現。RTP 是音…

Django框架之auth模塊

目錄 一、Auth模塊引入 二、創建超級用戶(管理員) 三、依賴于auth_user表完成登錄注冊功能 【1】基礎登陸 【2】保存用戶狀態 【3】登錄后跳轉 (1) 登錄后才能訪問頁面 -- 局部配置 (2) 登錄后才能訪問頁面 -- 全局配置 (3) 小結 三、修改密碼 四、注銷 五、注冊…

Springboot將多個圖片導出成zip壓縮包

Springboot將多個圖片導出成zip壓縮包 將多個圖片導出成zip壓縮包 /*** 判斷時間差是否超過6小時* param startTime 開始時間* param endTime 結束時間* return*/public static boolean isWithin6Hours(String startTime, String endTime) {// 定義日期時間格式DateTimeFormatt…

【數據結構】—搜索二叉樹(C++實現,超詳細!)

&#x1f3ac;慕斯主頁&#xff1a;修仙—別有洞天 ??今日夜電波&#xff1a;消えてしまいそうです—真夜中 1:15━━━━━━?&#x1f49f;──────── 4:18 &#x1f504; ?? ? ??…

函數計算的新征程:使用 Laf 構建 AI 知識庫

Laf 已成功上架 Sealos 模板市場&#xff0c;可通過 Laf 應用模板來一鍵部署&#xff01; 這意味著 Laf 在私有化部署上的擴展性得到了極大的提升。 Sealos 作為一個功能強大的云操作系統&#xff0c;能夠秒級創建多種高可用數據庫&#xff0c;如 MySQL、PostgreSQL、MongoDB …

js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj,將數組中的內容作為對象的key轉化為對象,對應的值轉換為對象對應的值

1.需求場景 哈嘍 大家好啊&#xff0c;今天遇到一個場景&#xff0c; js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj&#xff0c;將數組中的內容作為對象的key轉化為對象&#xff0c;對應的值轉換為對象對應的值 數組對象中某個屬性的值&#xff0c;轉…

元宇宙現已開放!

在 2023 年 11 月 3 日 The Sandbox 首個全球創作者日上&#xff0c;The Sandbox 聯合創始人 Arthur Madrid 和 Sebastien Borget 宣布元宇宙已開放&#xff0c;已創作完整體驗的 LAND 持有者可以自行將體驗發布至 The Sandbox 地圖上。 精選速覽 LAND 持有者&#xff1a;如果…

在JVM中 判定哪些對象是垃圾?

目錄 垃圾的條件 1、引用計數法 2、可達性分析 3、強引用 4、軟引用 5、弱引用 6、虛引用 判斷垃圾的條件 在Java虛擬機&#xff08;JVM&#xff09;中&#xff0c;垃圾收集器負責管理內存&#xff0c;其中的垃圾收集算法用于確定哪些對象是垃圾&#xff0c;可以被回收…

VBA即用型代碼手冊之工作薄的關閉保存及創建

我給VBA下的定義&#xff1a;VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率&#xff0c;而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。 作為我的學員要利用我的積木編程思想&#xff0c;積木編程最重要的是積木如何搭建…