AcWing 103. 电影(map、pair连用or离散化)

news2024/9/21 4:40:44

题目

方法一(map+pair)

 其实上面这么长巴拉巴拉就是在说

首先,每个科学家会的语言都不同。但是呢每部电影的字幕和语言是不一样的(字幕和语言一定不相同)

要求找到一部电影使得在场能听懂的科学家最多(如果存在两部及以上的电影的语言听懂人数相同的话,再去查找更多能看懂字幕的那部电影)

     思路分析

                1、使用map容器来存储科学家们听的懂的语言。
                2、使用pair(或者结构体)来存储科学家们能听得懂的语言和看的懂的字幕。
                3、然后先查找哪部电影最多科学家能听懂。
                4、接着再判断是否需要再查找哪部电影最多科学家能够看懂。

      ACcode

#include<iostream>
#include<cstring>
#include<algorithm>
#include<utility>
#include<map>
using namespace std;

const int maxn = 200010;

#define c_a first	//记录第i部电影的语音采用的编号
#define c_b second	 //记录第i部电影的字幕采用的编号
#define pii pair<int, int>	//存储某部电影所采用的语音编号和字幕编号

map<int, int>c;	  //记录科学家听得懂的某种语言出现的次数
pii p[maxn];

int a[maxn];	//记录第i个科学家懂得的语言

int main() {
	int n, m;
	std::ios::sync_with_stdio(false);	//消除输入输出缓存
	std::cin.tie(0);	//解除cin与cout的绑定,加快速率。
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		c[a[i]]++;
	}

	cin >> m;
	for (int i = 0; i < m; i++) {
		cin >> p[i].c_a;
	}
	for (int i = 0; i < m; i++) {
		cin >> p[i].c_b;
	}

	//优先选择听懂电影语音的
	int max_a = 0, idx = 0;
	//max_a表示听得懂的语言最多的数目
	//idx用于记录电影编号
	for (int i = 0; i < m; i++) {
		if (max_a < c[p[i].c_a]) {
			max_a = c[p[i].c_a];
			idx = i;
		}
	}
	int max_b = 0;
	//max_b表示看得懂字幕最多的数目
	for (int i = 0; i < m; i++) {
		if (max_a == c[p[i].c_a]) {
			if (max_b < c[p[i].c_b]) {
				max_b = c[p[i].c_b];
				idx = i;
			}
		}
	}

	cout << idx + 1;	//因为上述程序是由0开始遍历,故加1
	return 0;
}

方法二 (离散化)

 来源于AcWing大佬的想法    大佬解题思路加源代码

     思路分析

                1、将不通序列中的所有可能都映射到一个数组中。
                2、然后利用该数组进行排序和去重。
                3、再然后再利用一些二分查找去计数就欧了。

     ACcode

#include<iostream>
#include<algorithm>
using namespace std;

const int maxn = 200010;
int lang[3 * maxn], uni[3 * maxn];
int a[maxn], b[maxn], c[maxn];
int ans[3 * maxn];

int idx = 0, tot = 0;

//find作用是把稀疏编号转为稠密编号
int find(int x) {
	return lower_bound(uni + 1, uni + 1 + idx, x) - uni;
}
int main() {
	int n, m;

	cin >> n;
	for (int i = 1; i <= n; i++) {	//科学家会的语言
		cin >> a[i];
		lang[++tot] = a[i];
	}
	cin >> m;
	for (int i = 1; i <= m; i++) {	//电影音频的语言
		cin >> b[i];
		lang[++tot] = b[i];
	}
	for (int i = 1; i <= m; i++) {	//电影字幕的语言
		cin >> c[i];
		lang[++tot] = c[i];
	}

	//排序lang,为了后续中的去重复操作
	sort(lang + 1, lang + 1 + tot);

	//把lang数组去重复,保存到uni数组
	for (int i = 1; i <= tot; i++) {
		if (i == 1 || lang[i] != lang[i - 1]) {
			uni[++idx] = lang[i];
		}
	}

	//用find转变成稠密编号,并用ans数组记录每种语言出现的次数。
	for (int i = 1; i <= n; i++) ans[find(a[i])]++;

	//遍历所有电影,按要求找到最多科学家会的电影
	int ans0, ans1, ans2;
	//ans0保存最终结果,ans1和ans2为中间结果
	ans0 = ans1 = ans2 = 0;
	for (int i = 1; i <= m; i++) {
		//算出第i个电影音频语言的科学家数,和第i个字幕语言的科学家数
		int anx = ans[find(b[i])], any = ans[find(c[i])];
		//如果ans大于ans1或者前者相等且any大于ans2时,更新
		if (anx > ans1 || (anx == ans1 && any > ans2)) {
			ans0 = i, ans1 = anx, ans2 = any;
		}
	}
	//如果所有的电影的声音和字幕的语言,科学家们都不懂,随便选一个
	if (ans0 == 0) {
		printf("%d\n", 1);
	}
	else {
		printf("%d\n", ans0);
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1381724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM基础(10)——老年代调优

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

MySQL数据库入门到大牛_高级_00_MySQL高级特性篇的内容简介

文章目录 一、整个MySQL的思维导图二、MySQL高级特性篇大纲1. MySQL架构篇2. 索引及调优篇3. 事务篇4. 日志与备份篇 一、整个MySQL的思维导图 下图为整个MySQL内容&#xff0c;01-05是基础篇&#xff0c;06-09是高级篇 二、MySQL高级特性篇大纲 MySQL高级特性分为4个篇章&…

2.4G水墨屏电子标签|RFID电子纸基站CK-RTLS0501G_VT硬件功能与联机方法

2.4G水墨屏|RFID电子纸基站CK-RTLS0501G_VT是基于2.4G无线技术的可视化标签基站&#xff0c;支持10个通道范围根据使用环境情况来设定使用通道能有效避免干扰的情况。该基站支持对可视化标签进行固件及显示模板的更新等功能&#xff0c;更好集中管理可视化标签。可广泛应用于制…

AI文本生图模型Stable Diffusion部署教程

本文基于CentOS8进行Stable Diffusion开源框架部署. 1. DNS配置(但是今天出现了偶尔无法下载问题) 为了加速Github访问,我在本机配置如下 (sd) [rootshenjian stable-diffusion-webui]# cat /etc/hosts 127.0.0.1 shenjian localhost localhost.localdomain localhost4 loca…

VMware虚拟机安装银河麒麟桌面版V10系统

1镜像下载 1.1打开官网 百度搜索或浏览器地址栏直接输入地址 1.2找到镜像下载 选择桌面版操作系统进行安装我们日常办公使用的是桌面版的系统,选择桌面版操作系统进行下载 1.3申请试用 现在安装系统需要填写申请试用表,填写完之后,才会调转到镜像下载随着国产系统的日益…

QT基础篇(1)QT概述

1.什么是QT QT是一个跨平台的C应用程序开发框架。它提供了一套丰富的图形用户界面&#xff08;GUI&#xff09;和多媒体功能&#xff0c;可以用于开发各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入式系统。QT具有易于使用、可定制性强、性能高等特点&a…

C语言变量与函数

目录 变量函数 变量 变量&#xff1a;计算机里的一块内存空间int a 0; 表示定义一个整型 int 变量&#xff1b;这个变量名字叫做 a “” 表示赋值&#xff1b;即将右边的 0 赋值给左边的整型变量 a 现在这一块空间 a 存放了一个值 0 这个过程也叫做整型变量 a 的初始化初始化…

Web后端开发

一、Maven 1.1 简介 1.2 作用 1.3 流程 通过各种插件实现项目的标准化构建。 1.4 安装 1.5 配置环境 1.5.1 当前工程环境 1.5.2 全局环境 1.6 创建 Maven项目 1.7 导入项目 1.8 依赖管理 1.8.1 依赖配置 1.8.2 依赖传递 pom.xml——右键——Diagrams——show dependen…

【物联网】物联网设备和应用程序涉及协议的概述

物联网设备和应用程序涉及协议的概述。帮助澄清IoT层技术栈和头对头比较。 物联网涵盖了广泛的行业和用例&#xff0c;从单一受限制的设备扩展到大量跨平台部署嵌入式技术和实时连接的云系统。 将它们捆绑在一起是许多传统和新兴的通信协议&#xff0c;允许设备和服务器以新的&…

飞鱼CRM接入第三方系统 飞鱼API对接详细教程

场景描述 在白码低代码开发平台中&#xff0c;是支持外部crm系统的线索通过接口流入到白码系统里面&#xff0c;换而言之&#xff0c;只要外部的系统有线索api接口&#xff0c;白码系统可以接收线索并在白码系统上进行后续操作。本文以飞鱼crm系统为例&#xff0c;讲解如何接收…

Linux高性能服务器编程——学习笔记①

第一章、tcp/ip协议族 一、tcp/ip协议族1.1 主要的协议1.1.1 数据链路层1.1.2 网络层1.1.3 传输层1.1.4 应用层 1.2 封装1.3 分用1.4 测试网络1.5 ARP协议工作原理1.5.1 以太网ARP请求/应答报文详解1.5.2 ARP高速缓存的查看和修改1.5.3 使用tcpdump观察ARP通信过程 1.6 DNS工作…

CAN总线通信详解 (超详细配34张高清图)

CAN总线通信详解 (超详细配34张高清图) 1. CAN总线历史 CAN 是 Controller Area Network 的缩写&#xff08;以下称为 CAN&#xff09;&#xff0c;是 ISO国际标准化的串行通信协议。 在当前的汽车产业中&#xff0c;出于对安全性、舒适性、方便性、低公害、低成本的要求&#…

慕尼黑工业大学最新提出!单目实时密集建图的混合隐式场方法

作者&#xff1a;小柠檬 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 我们提出了一种新颖的方法&#xff0c;它将基于深度学习的密集SLAM与神经隐式场相结合&#xff0c;实时生成密集地图&#xff0c;而无需像以前的方法那样依赖RGB-…

如何确定测试用例的优先级?5个方面

测试用例优先级的确定&#xff0c;有助于测试团队合理分配测试资源&#xff0c;集中精力测试重点功能和场景&#xff0c;确保重点功能测试用例的覆盖率&#xff0c;从而有利于快速发现和解决重点功能缺陷&#xff0c;确保项目进度和质量。 如果测试用例没有明确的优先级&#x…

大数据调度框架Oozie,这个学习网站让你事半功倍!

Oozie是一个基于工作流引擎的开源框架&#xff0c;由Cloudera公司贡献给Apache。它主要用于管理和调度Apache Hadoop作业&#xff0c;支持的任务类型包括Hadoop MapReduce、Pig Jobs等。 Oozie的核心概念包括workflow jobs和coordinator jobs。Workflow jobs是由多个动作&#…

Raspbian安装摄像头

Raspbian安装摄像头 1. 源由2. 摄像头2.1 选型2.2 系统2.3 安装 3. 配置&命令3.1 命令3.2 配置 4. 测试4.1 拍照4.1.1 libcamera-jpeg4.1.2 libcamera-still 4.2 视频流4.2.1 RTSP流4.2.2 TCP流 5. 参考资料 1. 源由 家里闲置两块树莓派&#xff0c;打算做个WiFi视频流RTS…

四川云汇优想教育咨询有限公司引领电商未来

四川云汇优想教育咨询有限公司&#xff0c;一家在电商服务领域崭露头角的领军企业&#xff0c;致力于为广大客户提供最优质、最全面的电商服务。作为业界翘楚&#xff0c;云汇优想凭借其卓越的服务品质和强大的技术实力&#xff0c;在激烈的市场竞争中独树一帜&#xff0c;赢得…

Python入门-面向对象

1.类和对象 是不是很熟悉&#xff1f;和Java一样&#xff0c;在Python中&#xff0c;都可以把万物看成(封装成)对象。它俩都是面向对象编程 1.1 查看对象数据类型 a 10 b 9.8 c helloprint(type(a)) print(type(b)) print(type(c))运行结果&#xff1a; D:\Python_Home\v…

九州金榜|孩子不自信,根源在父母,莫让孩子失去自我

家长在看待孩子时&#xff0c;往往会忽视孩子内在的真实感受&#xff0c;以自己的想法去要求孩子。 聚会聚餐&#xff0c;就让孩子去表演节目&#xff1b; 出门游玩&#xff0c;看到舞台就让孩子去参加&#xff1b; 在家休息&#xff0c;让孩子独自一人睡觉... 这些行为孩子…

红日靶场1

文章目录 红日靶场的渗透思路一、靶场搭建网络拓扑1.win7配置2&#xff0c;win2003配置3&#xff0c;server2008配置4&#xff0c;kali配置 二、渗透流程一.信息收集二&#xff0c;获取webshell1.进入后台之后&#xff0c;可以选择插入一句话木马------失败2.在日志中插入木马3…