题解

简介: 103. 电影

莫斯科正在举办一个大型国际会议,有 n 个来自不同国家的科学家参会。

每个科学家都只懂得一种语言。

为了方便起见,我们把世界上的所有语言用 1 到 109 之间的整数编号。

在会议结束后,所有的科学家决定一起去看场电影放松一下。

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

对于观影的科学家来说,如果能听懂电影的语音,他就会很开心;如果能看懂字幕,他就会比较开心;如果全都不懂,他就会不开心。

现在科学家们决定大家看同一场电影。

请你帮忙选择一部电影,可以让观影很开心的人最多。

如果有多部电影满足条件,则在这些电影中挑选观影比较开心的人最多的那一部。

输入格式
第一行输入一个整数 n,代表科学家的数量。

第二行输入 n 个整数 a1,a2…an,其中 ai 表示第 i 个科学家懂得的语言的编号。

第三行输入一个整数 m,代表电影的数量。

第四行输入 m 个整数 b1,b2…bm,其中 bi 表示第 i 部电影的语音采用的语言的编号。

第五行输入 m 个整数 c1,c2…cm,其中 ci 表示第 i 部电影的字幕采用的语言的编号。

请注意对于同一部电影来说,bi≠ci。

同一行内数字用空格隔开。

输出格式
输出一个整数,代表最终选择的电影的编号。电影编号 1∼m。

如果答案不唯一,输出任意一个均可。

数据范围
1≤n,m≤200000,
1≤ai,bi,ci≤109
输入样例:
3
2 3 2
2
3 2
2 3
输出样例:
2

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 2e5 + 10;

int a[N], b[N], c[N], lang[N * 3], uni[N * 3];
int ans[N * 3];
int n, m;
int cnt, k;

int find(int x)
{
    return lower_bound(uni + 1, uni + k + 1, x) - uni;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n;
    for(int i = 1; i <= n; i ++ )    //读a:科学家都会什么语言
    {
        cin >> a[i];
        lang[ ++ cnt] = a[i];
    }
    cin >> m;
    for(int i = 1; i <= m; i ++ )    //读b:电影语音是什么
    {
        cin >> b[i];
        lang[ ++ cnt] = b[i];
    }
    for(int i = 1; i <= m; i ++ )    //读c:电影字幕是什么
    {
        cin >> c[i];
        lang[ ++ cnt] = c[i];
    }

    sort(lang + 1, lang + cnt + 1);             //排序

    for(int i = 1; i <= cnt; i ++ )             //去重后放入uni
    {
        if(i == 1 || lang[i] != lang[i - 1])
            uni[ ++ k] = lang[i];
    }

    for(int i = 1; i <= n; i ++ ) ans[find(a[i])] ++ ;      //用uni的下标记录语言,有几个人会

    int res1 = 1;                                               //最终用哪个
    int res2 = 0, res3 = 0;                             //当前这个语言有几个人会,几个人能看懂字幕
    for(int i = 1; i <= m; i ++ )
    {
        int x = ans[find(b[i])];
        int y = ans[find(c[i])];
        if(x > res2 || (x == res2 && y > res3))
        {
            res1 = i;
            res2 = x;
            res3 = y;
        }
    }
    cout << res1 << endl;
    return 0;
}

目录
相关文章
kde
|
8天前
|
JSON Linux 数据格式
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
4691 12
|
2天前
|
人工智能 安全 Java
|
8天前
|
JavaScript Ubuntu IDE
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
753 3
|
11天前
|
人工智能 定位技术 API
Dify MCP 保姆级教程来了!
大语言模型,例如 DeepSeek,如果不能联网、不能操作外部工具,只能是聊天机器人。除了聊天没什么可做的。
1144 17
|
5天前
typora免费版,激活方法,Typora使用教程
Typora是一款简洁高效的Markdown编辑器,支持即时渲染。本教程涵盖安装方法、文件操作、视图控制、格式排版、字体样式及Markdown语法,助你快速上手使用Typora进行高效写作。
970 0
|
6天前
|
人工智能 Java Spring
【保姆级图文详解】大模型、Spring AI编程调用大模型
【保姆级图文详解】大模型、Spring AI编程调用大模型
478 7
【保姆级图文详解】大模型、Spring AI编程调用大模型
|
17天前
|
Java Linux Maven
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
本文详细介绍了Maven的项目管理工具特性、安装步骤和配置方法。主要内容包括: Maven概述:解释Maven作为基于POM的构建工具,具备依赖管理、构建生命周期和仓库管理等功能。 安装步骤: 从官网下载最新版本 解压到指定目录 创建本地仓库文件夹 关键配置: 修改settings.xml文件 配置阿里云和清华大学镜像仓库以加速依赖下载 设置本地仓库路径 附加说明:包含详细的配置示例和截图指导,适用于各种操作系统环境。 本文提供了完整的Maven安装和配置
2025年最新版最细致Maven安装与配置指南(任何版本都可以依据本文章配置)
|
4天前
|
数据采集 监控 数据挖掘
企业如何用Data Agent实现数据价值效率的飞跃
在数字化转型背景下,数据被视为“新时代的石油”,但多数企业仍面临数据价值难以高效挖掘的困境。文章深入剖析了当前数据分析中存在的“被动响应”模式及其带来的四大挑战,并提出通过Data Agent实现主动智能与数据分析民主化的新路径。Data Agent基于大语言模型和强化学习技术,具备理解、思考与行动能力,能够从“人找数据”转变为“数据找人”,推动数据洞察从专业人员走向全员参与。
|
10天前
|
人工智能 大数据 开发者
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
阿里云推出基于场景的解决方案免费试用活动,新老用户均可领取100点试用点,完成部署还可再领最高100点,相当于一年可获得最高200元云资源。覆盖AI、大数据、互联网应用开发等多个领域,支持热门场景如DeepSeek部署、模型微调等,助力企业和开发者快速验证方案并上云。
377 27
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等