PAT (Advanced Level) Practice——1011,1012

2024-09-06 11:20

本文主要是介绍PAT (Advanced Level) Practice——1011,1012,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1011: 

链接:

1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn)

题意及解题思路:

简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。

同时还需要记录每一次选择的是W,T还是L,储存在字符串中即可,每一次后面加上一个空格,刚好结尾没有空格。

我刚开始理解成立奇数odd,但是odds表示赔率。

#include <bits/stdc++.h>using namespace std;typedef struct {double w, t, l;
} X;int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);vector<X> a;for (int i = 0; i < 3; i++) {double w, t, l;cin >> w >> t >> l;a.push_back({w, t, l});}char results[3] = {'W', 'T', 'L'};double Mul = 1.0;string bets;for (int i = 0; i < 3; i++) {double maxNum = max(a[i].w,max(a[i].t, a[i].l));Mul *= maxNum;if (maxNum == a[i].w) {bets += "W ";} else if (maxNum == a[i].t) {bets += "T ";} else {bets += "L ";}}double ans = (Mul * 0.65 - 1) * 2;cout << bets;printf("%.2lf\n", ans);return 0;
}

1012:

链接:

1012 The Best Rank - PAT (Advanced Level) Practice (pintia.cn)

题意:

简单来说就是根据询问,给出对应id值的最好名次以及最好名次对应的科目,如果不存在该id就输出N/A

解题思路:

  • 输入与预处理

    • 读取每个学生的ID和他们在C语言、数学、英语的成绩。
    • 计算每个学生的平均成绩。
    • 这里很巧妙就在于我们根据成绩优先级来存入各个成绩,例如score[0]表示平均成绩,score[1]表示c语言的乘积,这样后续就能循环从0~3对各个成绩进行排名
  • 排序与排名

    • 对每个科目(包括平均分、C语言、数学、英语)分别进行排序,按照成绩从高到低为学生排名。相同成绩的学生获得相同排名。
    • 这里有一个很巧妙的地方,就是通过循环,用变量subject对每一个科目进行降序排序
  • 确定最佳排名

    • 对每个学生,找出他在四个排名中的最佳排名(数值最小),并按照优先级(平均分 > C语言 > 数学 > 英语)确定最佳科目。
  • 查询与输出

    • 根据输入的学生ID,输出他们的最佳排名和对应的科目。如果学生不存在,输出“N/A”。
    • 可以通过map来确定id值是否存在
#include <bits/stdc++.h>
using namespace std;
const int N = 2005;typedef struct {string id;int best;char bestSub;int Rank[4], score[4];//四科的排名以及成绩
} node;node a[N];
map<string, bool> st;
int subject = -1;
char mp[4] = {'A', 'C', 'M', 'E'};bool cmp(node a, node b) {return a.score[subject] > b.score[subject];
}int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, m;cin >> n >> m;for (int i = 0; i < n; i++) {cin >> a[i].id;cin >> a[i].score[1] >> a[i].score[2] >> a[i].score[3];a[i].score[0] = (a[i].score[1] + a[i].score[2] + a[i].score[3]) / 3;st[a[i].id] = true;}// 对每个科目进行排名for (subject = 0; subject <= 3; subject++) {sort(a, a + n, cmp);for (int i = 0; i < n; i++) {a[i].Rank[subject] = i + 1;if (i > 0 && a[i].score[subject] == a[i - 1].score[subject]) {a[i].Rank[subject] = a[i - 1].Rank[subject];}}}// 确定每个学生的最佳排名for (int i = 0; i < n; i++) {int maxRank = N;char bestSub;for (int j = 0; j < 4; j++) {if (a[i].Rank[j] < maxRank) {maxRank = a[i].Rank[j];bestSub = mp[j];}}a[i].best = maxRank;a[i].bestSub = bestSub;}// 查询并输出结果for (int i = 0; i < m; i++) {string id;cin >> id;if (st[id]) {for (int j = 0; j < n; j++) {if (a[j].id == id) {cout << a[j].best << " " << a[j].bestSub << "\n";break;}}} else {cout << "N/A\n";}}return 0;
}

这篇关于PAT (Advanced Level) Practice——1011,1012的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141864

相关文章

MiniCPM-V: A GPT-4V Level MLLM on Your Phone

MiniCPM-V: A GPT-4V Level MLLM on Your Phone 研究背景和动机 现有的MLLM通常需要大量的参数和计算资源,限制了其在实际应用中的范围。大部分MLLM需要部署在高性能云服务器上,这种高成本和高能耗的特点,阻碍了其在移动设备、离线和隐私保护场景中的应用。 文章主要贡献: 提出了MiniCPM-V系列模型,能在移动端设备上部署的MLLM。 性能优越:

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

N-ary Tree Level Order Traversal

Input: root = [1,null,3,2,4,null,5,6]Output: [[1],[3,2,4],[5,6]] 思路:就是一个queue的level order 收集; /*// Definition for a Node.class Node {public int val;public List<Node> children;public Node() {}pu

BFS 到 Level Order traverse 到 UnionFind 到 Topological Sort 到 Dijkstra 思路总结

====BFS 找联通量,找component. Number of Islands (BFS, DFS 都可以做) Surrounded Regions 算法是:先收集四个周边的 O,然后用BFS或者DFS向里面扩展,visited记录connect点,最后如果没有被visited到的O,会变成X;T: O(m*n), Space: O(m*n). Is Graph Bipartite (

UE的Gameplay框架(三) —— Level和World

这篇文章关注于Level和World,对其在Gameplay框架中的作用及使用做简单讲解。 文章目录 Level和World的作用关卡流送关卡流送体积蓝图加载 参考资料 Level和World的作用 在UE里,Level 可以看作是 Actors 的容器,其有一个LevelScriptActor用于处理特定于关卡的逻辑,但一般来说游戏的逻辑不要写在LevelScri

【持续更新】Advanced Download Manager 14.0.35 Pro安卓ADM下载神器最新高级免费修改版

这个也算小有名气,名字和 idm 有点像。当程序从剪贴板中截取链接后,您可以将其复制并发送至ADM编辑器,或者使用“添加”按钮粘贴链接。 ▨ ADM 有以下特点: • 该应用支持同时下载最多三个文件 • 通过多线程技术(9个部分)加速下载过程 • 从安卓浏览器及剪贴板中拦截链接 • 后台下载文件,并在失败后自动恢复 • 支持图片、文档、压缩包及程序的加载 • 针对Lollipop和Ma

【Agent】Agent Q: Advanced Reasoning and Learning for Autonomous AI Agents

1、问题背景 传统的训练Agent方法是在静态数据集上进行监督预训练,这种方式对于要求Agent能够自主的在动态环境中可进行复杂决策的能力存在不足。例如,要求Agent在web导航等动态设置中执行复杂决策。 现有的方式是用高质量数据进行微调来增强Agent在动态环境中的决策能力,但这往往会出现复合错误和有限的探测数据,最终导致结果不够理想。 2、提出方法 Agent Q 框架将蒙特卡洛树搜

Zabbix 企业级高级应用(Zabbix Enterprise Advanced Application)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老 导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。 常用运维工具系列:常

PAT (Advanced Level) Practice

1001:  题目大意: 计算 a+b 的结果,并以标准格式输出——即每三个数字一组,组之间用逗号分隔(如果数字少于四位,则不需要逗号分隔)  解析: 我们知道相加右正有负,对于样例来说 Sample Input: -1000000 9 Sample Output: -999,991 如果是从左往右,算上负号的话输出应该是-99,999,1 从右往左:-,999,991离正确

Code Practice Journal | Day59-60_Graph09 最短路径(待更)

1. Dijkstra 1.1 原理与步骤 步骤: 选取距离源点最近且未被访问过的节点标记该节点为已访问更新未访问节点到源点的距离 1.2 代码实现 以KamaCoder47题为例 题目:47. 参加科学大会(第六期模拟笔试) (kamacoder.com) class Program{public static void Main(string[] args){//处