结构体训练

  1. 1. 评委打分

【问题描述】

       校园卡拉OK比赛设置了7名评委,当一名选手K完歌之后,主持人报出歌手名字后,7位评委同时亮分,按照惯例,去掉一个最高分和一个最低分后,其余5位评委评分总和为该选手的最终得分。

       一共有n组选手参加比赛,请你编写一个程序,当所有比赛结束后,列出所有选手的排名以及最终得分情况。

       假定不会出现总分相同的情况(总分相同时,以出场顺序优先排名还是?以后再说吧! 呵呵,暂时不管

【输入形式】

       第1行为一个正整数n,表示参赛人数。随后n行,每行开始为选手的名字,随后7个正整数表示评委亮分情况,数据间以空格分隔。

【输出形式】

       按名次升序输出所有选手的名字以及总分,总共n行。

【样例输入】

4
Alice 90 90 85 92 90 90 90
Bob 92 99 88 92 92 92 92
Cindy 80 85 94 94 94 94 94
Dony 95 95 100 90 95 95 95

【样例输出】

Dony 475
Cindy 461
Bob 460
Alice 450

解答:

#include<bits/stdc++.h>
using namespace std;
struct m {string s;int sc[7];int max=0,min=101,sum=0;}m2[100];
bool cmp(m a,m b) {return  (a.sum>b.sum) ;}
int main() {int k;cin>>k;for(int i=0;i<k;i++) {cin>>m2[i].s;for (int j = 0; j < 7; j++) {cin>>m2[i].sc[j];m2[i].sum+=m2[i].sc[j];if (m2[i].sc[j]>m2[i].max) m2[i].max=m2[i].sc[j];if (m2[i].sc[j]<m2[i].min) m2[i].min=m2[i].sc[j];}m2[i].sum=m2[i].sum-m2[i].max-m2[i].min;}sort(m2,m2+k,cmp);for(int i=0;i<k;i++)cout<<m2[i].s<<" "<<m2[i].sum<<endl;}

  1. 2. 招聘

【问题描述】

        某公司需要招聘一批员工,该公司有自己独特的评价体系,对应聘者设立了 个指标:技能值 Ki、智慧值 Ii 和忠诚度 Ei ,i=12, ...

        经过严格的初选和复选以及各项测试以后,有 个人进入最后的名单,公司给出了每个人的各项指标值,并规定对于某人 i,如果存在另外人 j,有Ki < Kj Ii < Ij 、Ei < Ej ,则 i 将会被淘汰。

        请找出总共有多少人会被淘汰。

【输入形式】

       第一行包含一个整数 (1≤ N ≤ 500000),表示最终进入评价名单的人数。第二行包括 个整数 Ki,第三行包含 个整数 Ii,第四行包含 个整数 Ei 0  KiIi 、 Ei  ≤ 109
【输出形式】

       输出为一行一个整数。
【样例输入】

3
1 4 2
4 3 2
2 5 3

【样例输出】

1

代码

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;struct Person {int K;int I;int E;
};int main() {int N;cin >> N;vector<Person> people(N);for (int i = 0; i < N; ++i) {cin >> people[i].K;}for (int i = 0; i < N; ++i) {cin >> people[i].I;}for (int i = 0; i < N; ++i) {cin >> people[i].E;}int eliminated = 0;for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {if (i != j && people[i].K < people[j].K && people[i].I < people[j].I && people[i].E < people[j].E) {eliminated++;break;  // 当前 i 已经被淘汰,不需要再比较了}}}cout << eliminated << endl;return 0;
}
  1. 3. 选举

【问题描述】

       在一场全国性选举中,有n位候选人,编号从1~n,这个国家有m个城市,已知每个城市每个候选人的得票数。

       这个国家的选举制度很不寻常。在选举的第一阶段,每个城市的票数被计算出来,在每个城市,获胜者为得票最多的候选人,如果有相同得票数,则编号最小的获胜。

       在第二个阶段,比较赢得的城市数,赢得的城市最多者获胜,如果赢得的城市数相等,则编号小者获胜。

       请确定最终谁将获得选举胜利。

【输入形式】

       输入的第一行为两个正整数n和m (1 ≤ n, m ≤ 100),表示候选人的个数和城市的个数。

       接下来的m行,每行包含n个非负整数,第i行的第j个数aij(1 ≤ j ≤ n, 1 ≤ i ≤ m, 0 ≤ aij ≤ 109) 表示第j个候选人在第i个城市的得票数。

【输出形式】

       输出为一个数,最终获胜者的编号。
【样例输入】

3 3
1 2 3
2 3 1
1 2 1

【样例输出】

2

代码

#include <iostream>
#include <vector>using namespace std;struct Candidate {int id;int totalVotes;int cityWins;
};int main() {int n, m;cin >> n >> m;vector<vector<int>> votes(m, vector<int>(n));vector<Candidate> candidates(n);for (int i = 0; i < n; ++i) {candidates[i].id = i + 1;  // 编号从1开始candidates[i].totalVotes = 0;candidates[i].cityWins = 0;}for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {cin >> votes[i][j];candidates[j].totalVotes += votes[i][j];}}for (int i = 0; i < m; ++i) {int maxVotes = -1;int winner = -1;for (int j = 0; j < n; ++j) {if (votes[i][j] > maxVotes || (votes[i][j] == maxVotes && j < winner)) {maxVotes = votes[i][j];winner = j;}}candidates[winner].cityWins++;}int finalWinner = 0;for (int i = 1; i < n; ++i) {if (candidates[i].cityWins > candidates[finalWinner].cityWins ||(candidates[i].cityWins == candidates[finalWinner].cityWins && candidates[i].id < candidates[finalWinner].id)) {finalWinner = i;}}cout << candidates[finalWinner].id << endl;return 0;
}

  1. 4. 看电影

【问题描述】

       湖南大学正在举办一场重要的国际学术会议,出席会议的 n 位科学家来自不同的国家,每位科学家都只熟悉一种语言,为方便起见,世界上所有的语言用1~1000的数字编号来列出。

       晚上,主办方安排所有科学家去看电影,电影院里有 部电影,每部电影可以用两个不同的整数来描述,即音频语言和字幕语言的编号。看电影的科学家,如果他熟悉电影的音频语言,他会非常高兴,如果他熟悉字幕的语言,他基本上满意,如果他两种都不熟悉,他会感到不满意(请注意,每部电影的音频语言和字幕语言总是不同的)。 

       科学家们决定一起去看同一部电影。你必须帮助他们选择电影,使得非常高兴的科学家的数量是最大的,如果有多部这样的电影,在其中选择能使基本满意的科学家的数量最大,如果还有多部,则全部输出。如果没有这样的电影,则输出"unsatisfied"。

【输入形式】

       输入的第一行为一个正整数 (1 ≤ n ≤ 200000)  ,表示科学家的数量。

       第二行为 n 个正整数a1、a2、...、an (1 ≤ ai ≤ 1000),其中ai 表示第 i 位科学家熟悉的语言编号。

       第三行包含一个正整数m(1 ≤ m ≤ 200000),表示电影院里的电影数量,编号从1~m

       第四行包含 m 个正整数 b1, b2, ..., bm (1 ≤ bj ≤ 1000),其中 b表示第  部电影的音频语言。

        第五行包含 m 个正整数 c1, c2, ..., cm (1 ≤ cj ≤ 1000),其中 cj 表示第  部电影的字幕语言。

         输入保证 bj ≠ cj  。

【输出形式】

       输出为若干整数,从小到大,表示科学家们可以去选择去看的电影的编号。如果没有这样的电影,则输出"unsatisfied"。

【样例输入】

3
2 3 2
2
3 2
2 3

【样例输出】

2

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;struct Scientist {int id;int language;
};struct Movie {int id;int audioLanguage;int subtitlesLanguage;int happyScientists;int satisfiedScientists;
};bool compareMovies(const Movie &a, const Movie &b) {if (a.happyScientists != b.happyScientists) {return a.happyScientists > b.happyScientists;} else if (a.satisfiedScientists != b.satisfiedScientists) {return a.satisfiedScientists > b.satisfiedScientists;} else {return a.id < b.id;  // 保证编号小的在前面}
}int main() {int n;cin >> n;vector<Scientist> scientists(n);for (int i = 0; i < n; ++i) {scientists[i].id = i + 1;cin >> scientists[i].language;}int m;cin >> m;vector<Movie> movies(m);for (int i = 0; i < m; ++i) {movies[i].id = i + 1;cin >> movies[i].audioLanguage;}for (int i = 0; i < m; ++i) {cin >> movies[i].subtitlesLanguage;movies[i].happyScientists = 0;movies[i].satisfiedScientists = 0;}for (const Scientist &scientist : scientists) {for (Movie &movie : movies) {if (scientist.language == movie.audioLanguage) {movie.happyScientists++;}if (scientist.language == movie.subtitlesLanguage) {movie.satisfiedScientists++;}}}sort(movies.begin(), movies.end(), compareMovies);if (movies[0].happyScientists == 0) {cout << "unsatisfied" << endl;} else {for (const Movie &movie : movies) {if (movie.happyScientists == movies[0].happyScientists && movie.satisfiedScientists == movies[0].satisfiedScientists) {cout << movie.id << " ";}}cout << endl;}return 0;
}

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

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

相关文章

uniapp+微信小程序监听返回事件

代码附在最后 适用场景&#xff1a;uniapp开发微信小程序 需求是我点击列表进入数据信息的详情界面&#xff0c;点击详情界面的收藏&#xff0c;返回上一界面后&#xff0c;更新列表中的收藏情况。 目录 一、使用onUnload监听页面卸载 二、使用getCurrentPages()获取当前页…

【双指针】四数之和

四数之和 建议做过了解三数之和的思想再做这道题&#xff0c;思路是一样的~ 题目描述 18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [num…

搞定ESD(六):静电放电问题典型案例分析(一)

文章目录 一、接触放电测试出现系统自动待机问题案例分析(一)1. 问题现象描述2. 问题现象分析3. 问题分析验证过程3.1 MCU芯片供电电源稳定性分析验证3.2 MCU芯片复位电路稳定性验证4. 问题分析产生原因分析5. 问题解决方案6. 案例总结二、接触放电测试出现系统自动待机问题案…

Java大型智慧工地APP云平台源码带AI智能识别功能

智慧工地为建筑全生命周期赋能&#xff0c;用创新的可视化与智能化方法&#xff0c;降低成本&#xff0c;创造价值。 一、智慧工地APP概述 智慧工地”立足于互联网&#xff0c;采用云计算&#xff0c;大数据和物联网等技术手段&#xff0c;针对当前建筑行业的特点&#xff0c;…

让KVM支持滚动热升级:Multi-KVM

Multi-KVM 允许多个独立的 KVM 模块在同一台 Linux 主机上同时加载、卸载和运行。主要包括&#xff1a; 升级和回滚 KVM&#xff0c;而不会中断正在运行的虚拟机 允许在同一主机上运行具有不同参数的 KVM 模块 为 KVM 的 A/B 测试提供便利 1. 设计方案 隔离性 从整个内核中…

C语言 移位操作符

<< 左移操作符>> 右移操作符 注&#xff1a;移位操作符的操作数只能是整数。 移位操作符移动的是二进制位。 整数的二进制表示有3种&#xff1a; 原码反码补码 正的整数的原码、反码、补码相同。 负的整数的原码、反码、补码是要计算的。 由负整数原码计算出反…

编写安全 JavaScript 代码的最佳实践

编写安全 JavaScript 代码的最佳实践 JavaScript 的动态特性使其成为事实上的浏览器语言和世界上最流行的编程语言。 JS 最受欢迎的有用功能之一是即时分析。这意味着浏览器在下载内容的同时执行代码&#xff0c;这显然有其优势。然而&#xff0c;这种程度的自由也伴随着问题…

广域网技术

广域网 wide area net(WAN) 电路交换网分组交换网&#xff08;数据报|虚电路&#xff09;专用线路网 静态路由算法: 手动填入路径至路由表中,且路径保持不变. 适用于拓扑结构比较稳定, 网络规模比较小的网络。 动态路由算法 通过与邻居通信 不断学习, 根据网络拓扑结构变化而…

【工业智能】Solutions

各类问题对应的解决方案 工艺参数推荐APC 排产调度智能算法强化学习 运筹优化空压机群控 预测 工艺参数推荐 APC 排产调度 智能算法 遗传算法 强化学习 DDQN 运筹优化 空压机群控 MIP混合整数规划 能耗优化 预测 电池容量预测 时序预测&#xff0c;回归预测 点击剩余…

【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具

【好用的个人工具】在Docker环境下部署Simple mind map思维导图工具 一、Simple mind map介绍1.1 Simple mind map简介1.2 Simple mind map特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker co…

Java后端使用XWPFDocument生成word文档,踩坑

以下都是借鉴网上内容: 环境 纯后端, java, spring项目 maven管理. maven内容: <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.16</version></dependency><dependency>…

Centos查看运行内存大小

在CentOS上&#xff0c;你可以使用以下几种方法来查看内存占用情况&#xff1a; 使用 free 命令&#xff1a; free -h这个命令会显示系统的物理内存和交换空间使用情况&#xff0c;以人类可读的方式显示。 使用 top 命令&#xff1a; top在top命令的输出中&#xff0c;第一…

Django:通过user-agent判断请求是来自移动端还是PC端(电脑端)

第一种思路&#xff1a; 根据博文 Djano的request.META是什么&#xff1f;的研究成果&#xff0c;先判断有无键HTTP_SEC_CH_UA_MOBILE&#xff0c;如果没有&#xff0c;再去按博文 网站如何判断请求是来自手机-移动端还是PC-电脑端&#xff1f;如何让网站能适应不同的客户端&am…

Flink流批一体计算(21):Flink SQL之Flink DDL

目录 执行 CREATE 语句 Python脚本 Java代码 SQL语句 列定义 物理/常规列 元数据列 计算列 WATERMARK PRIMARY KEY PARTITIONED BY AS select_statement Flink SQL是为了简化计算模型、降低您使用Flink门槛而设计的一套符合标准SQL语义的开发语言。 执行 CREATE 语…

freerots启动过程分析(qemu仿真RISC-V架构为例)

1、前言 本文是基于qemu上virt板子适配的freertos系统源码进行讲解qemu安装可参考博客&#xff1a;《qemu源码下载和安装》&#xff1b;freertos移植到qemu上运行可参考博客&#xff1a;《移植freertos到qemu上运行》&#xff1b; 2、汇编代码部分 汇编文件&#xff1a;FreeR…

集成学习的两种常见策略:bagging VS. boosting

chatGPT回答&#xff0c;记在这里。 集成学习是一种通过组合多个弱学习器来构建一个更强大的学习器的方法。其中&#xff0c;bagging和boosting是两种常见的集成学习策略。 一、bagging & boosting 简介 Bagging&#xff08;自助聚集法&#xff09;&#xff1a; Bagging…

Web框架与Django路由层

Web框架 一 web框架 Web框架&#xff08;Web framework&#xff09;是一种开发框架&#xff0c;用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式&#xff0c;也为web行为提供了一套通用的方法。web框架已经实现了很多功能&…

golang面试题:reflect(反射包)如何获取字段tag​?为什么json包不能导出私有变量的tag?

问题 json包里使用的时候&#xff0c;会结构体里的字段边上加tag&#xff0c;有没有什么办法可以获取到这个tag的内容呢&#xff1f; 举例 tag信息可以通过反射&#xff08;reflect包&#xff09;内的方法获取&#xff0c;通过一个例子加深理解。 package mainimport ("…

基于单片机的智能饮水机控制系统(论文+源码)

1. 系统设计 本次智能饮水机控制系统的设计研究一款以STC89C52单片机为核心的智能饮水机控制系统&#xff0c;其主要功能设计如下&#xff1a; 1.该饮水机利用DS18B20数字温度传感器实时采集饮水机内水的温度&#xff0c;其检测温度范围为0-100℃&#xff0c;精度0.1℃&#…

拆解按摩器:有意思的按键与LED控制电路,学习借鉴一下!

拆解 外观和配色个人感觉还行,比较青春 拉开拉链&#xff0c;拆开外面的布面&#xff0c;里面还有一层纱面 按键部分使用魔术贴固定 拆开纱面后&#xff0c;看到里面的结构&#xff0c;整体是一个海绵 可以看到如下&#xff0c;电池&#xff0c;按键板&#xff0c;充电线的三条…