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

题目

方法一(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开始遍历,故加1return 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.mzph.cn/news/618307.shtml

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

相关文章

Linux Kernel Stack Overflow/Linux 内核栈溢出

不同于Linux应用程序的栈能够动态增长&#xff0c;Linux内核栈是固定的&#xff0c;并且比较小&#xff0c;比如Linux 2.6.x内核&#xff0c;在X86 32位架构上一般是4K或8K&#xff08;在进行内核编译时&#xff0c;Kernel hacking下进行配置&#xff0c;默认8K&#xff09;&am…

上门回收小程序开发,让回收更加简单

资源回收一直是当下深受大众关注的话题&#xff0c;如何做到资源不浪费&#xff0c;成为了大众要考虑的问题。在人们环保意识的加深下&#xff0c;回收行业也是获得了大众的关注&#xff0c;逐渐形成了一个新的商业模式。 随着互联网技术的发展&#xff0c;回收行业也更加方便…

C/S架构,集成三维影像后处理功能,自主版权的一套医院PACS系统源码

一、PACS简介 PACS&#xff08;PictureArchivingandCommunicationsSystem&#xff09;即图像存储与传输系统&#xff0c;是应用于医院的数字医疗设备如CT、MR&#xff08;磁共振&#xff09;、US&#xff08;超声成像&#xff09;、X光机、DSA&#xff08;数字减影&#xff09…

KIBANA可视化管理界面说明

更说明转自https://blog.csdn.net/IT_ZRS/article/details/125496588 1 主要结构功能 使用浏览器访问 ip:5601 默认端口&#xff0c;进入首页 Discover&#xff1a;日志管理视图 主要进行搜索和查询Visualize&#xff1a;统计视图 构建可视化的图表Dashboard&#xf…

【目标检测】YOLOv5算法实现(八):模型验证

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github&#xff0c;删减了源码中部分内容&#xff0c;满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现&#xff0c;后续修改、增加相关模…

JavaWeb,CSS的学习

CSS&#xff0c;层叠样式表&#xff08;Cascading Style Sheets&#xff09;&#xff0c;能够对网页中元素位置的排版进行像素级精确控制&#xff0c;支持几乎所有的字体字号样式&#xff0c;拥有网页对象和模型样式编辑的能力&#xff0c;简单来说&#xff0c;美化页面。 CSS…

c++临时对象的探讨及相关性能提升

产生临时对象的情况 我们定义一个类进行测试 class tempVal { public:int v1, v2;tempVal(int v1 0, int v2 0);tempVal(const tempVal& t) :v1(t.v1), v2(t.v2) {cout << "调用拷贝构造函数" << endl;}virtual ~tempVal() {cout << "…

【python】——turtle动态画

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

AR HUD全面「上新」

AR HUD赛道正在迎来新的时代。 上周&#xff0c;蔚来ET9正式发布亮相&#xff0c;新车定位为D级行政旗舰轿车&#xff0c;其中&#xff0c;在智能座舱交互层面&#xff0c;继理想L系列、长安深蓝S7之后&#xff0c;也首次取消仪表盘&#xff0c;取而代之的是业内首个全焦段AR H…

分块矩阵的定义、计算

目录 一、定义 二、分块矩阵的加减乘法 三、考点 一、定义 分块&#xff0c;顾名思义&#xff0c;将整个矩阵分成几部分&#xff0c;如下图所示 二、分块矩阵的加减乘法 三、考点 分块矩阵的考点不多&#xff0c;一般来说&#xff0c;有一种&#xff1a; 求分块矩阵的转置…

PHP如何拆分中文名字(包括少数民族名字)

/*** param string|null $name* return array|null*/ function splitName($name) {if (empty($name) || empty(trim($name))) {return null;}//该正则是用来提取$name参数里面的中文字符的。preg_match_all(/[\x{4e00}-\x{9fff}]/u, $name, $matchers);$matchersCount isset($…

2024年,谷歌云首席技术官眼中的生成AI三大支柱,来看看有啥新花样

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

App在线封装的革命性创新

随着移动互联网的蓬勃发展&#xff0c;App已经成为我们日常生活中不可或缺的一部分。从购物、交通、社交到娱乐&#xff0c;几乎每个人的智能手机都装载着数十个应用程序&#xff0c;以满足各式各样的需求。然而&#xff0c;对于许多非技术背景的企业家和小型企业而言&#xff…

【机器学习】模型参数优化工具:Optuna使用分步指南(附XGB/LGBM调优代码)

常用的调参方式和工具包 常用的调参方式包括网格搜索(Grid Search)、**随机搜索(Random Search)和贝叶斯优化(Bayesian Optimization)**等。 工具包方面&#xff0c;Scikit-learn提供了GridSearchCV和RandomizedSearchCV等用于网格搜索和随机搜索的工具。另外&#xff0c;有一…

VS报错:error:LNK2005 _main 已经在 *.obj 中定义

应该是重定义了&#xff0c;但是又解决不了&#xff0c;看似又没有重定义啊&#xff0c;就在一个文件定义了啊&#xff1f;怎么会出现这种情况呢&#xff1f;关键是&#xff0c;编译报错&#xff0c;程序运行不了了。 这里提一下我的前期操作&#xff0c;是因为将一个头文件和…

NULL是什么?

NULL是一个编程术语&#xff0c;通常用于表示一个空值或无效值。在很多编程语言中&#xff0c;NULL用于表示一个变量或指针不引用任何有效的对象或内存位置。 NULL可以看作是一个特殊的值&#xff0c;表示缺少有效的数据或引用。当一个变量被赋予NULL值时&#xff0c;它表示该变…

【面试宝典】图解ARP协议、TCP协议、UDP协议

一、ARP协议 二、TCP协议 三、UDP协议 四、TCP和UDP的区别

如何有效使用360评估

导语&#xff1a;360度评估是绩效考核方法之一&#xff0c;被评估者不仅可以从自己、上司、部属、甚至顾客处获得多种角度的反馈&#xff0c;也可从这些不同的反馈清楚地认识到自己的不足、长处与发展需求。但360度评估也有其适用的范围和条件&#xff0c;华为总裁任正非给出了…

impala元数据自动刷新

一.操作步骤 进入CM界面 > Hive > 配置 > 搜索 启用数据库中的存储通知(英文界面搜索&#xff1a;Enable Stored Notifications in Database)&#xff0c;并且勾选&#xff0c;注意一定要勾选&#xff0c;配置后面的配置不生效。数据库通知的保留时间默认为2天&#…

Nacos下载与安装【windows】

&#x1f95a;今日鸡汤&#x1f95a; 我不知将去何方&#xff0c;但我已经在路上。 ——宫崎骏《千与千寻》 目录 &#x1f95e;1.Nacosdi地址 &#x1f32d;2.GitHub下载 &#x1f37f;3.目录结构 &#x1f953;4.启动nacos &#x1f9c2;5.客户端登陆 &#x1f9c8…