当前位置: 首页 > news >正文

B3968 [GESP202403 五级] 成绩排序

B3968 [GESP202403 五级] 成绩排序

考察知识点:结构体排序

文章目录

    • B3968 [GESP202403 五级] 成绩排序
      • 题意
      • 思路
      • 数据约束
      • 参考代码
      • 常见错误

在这里插入图片描述

题意

根据要求排序,存在并列情况则名次一致

思路

先根据总成绩排序,然后如果相等则根据语数和排序,如果还相等则根据语数最值排序,都相等则并列

  • 因此直接考虑结构体排序,根据对应数值来排即可
  • 如何排?

先看数据发范围,因为是1e4的范围,如果直接普通的插入排序、冒泡排序、选择排序,O(n*n)有可能超时的风险
直接考虑结构体的快排,不会超时

  • 如何根据原顺序输出排序后的位置?

旧位置→新位置,最简单的就是建立映射,设一个数组,下标储存结构体的初始位置,值存排序后的位置,最后输出数组即可

数据约束

注意n的范围设置结构体大小就行

参考代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+5;
struct stu{int ch;int math;int en;int sum;//求总和int sum1;//求语数和int mn;//求最值 int k;//原始序号 
}a[N];
bool f[N];//储存是否有重复
int a_index[N]; 
bool cmp(stu c1,stu c2){if(c1.sum == c2.sum){ //总分一致 if(c1.sum1 == c2.sum1){ //语数总分 if(c1.mn ==c2.mn){//最值也相等 return 0; // 并列 不影响 ,有返回值就行 }else{return c1.mn>c2.mn;}}else{ return c1.sum1>c2.sum1 ;}}else return c1.sum>c2.sum;
}
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].ch>>a[i].math>>a[i].en;a[i].sum = a[i].ch+a[i].math+a[i].en;a[i].sum1 = a[i].ch+a[i].math;a[i].mn = max(a[i].ch,a[i].math) ;a[i].k = i;}	sort(a+1,a+n+1,cmp);//排序//处理并列数据for(int i=2;i<=n;i++){if((a[i].sum ==a[i-1].sum)&&(a[i].sum1 ==a[i-1].sum1)&&(a[i].mn ==a[i-1].mn)) 	{f[i]= 1;//是当前位置标记为并列位置 }}for(int i=1;i<=n;i++){if(!f[i]) a_index[a[i].k] = i;//排序前的位置和排序后的位置建立一一对应关系 else{ //处理并列关系 a_index[a[i].k] = a_index[a[i-1].k];}}for(int i=1;i<=n;i++){cout<<a_index[i]<<" "<<endl; }return 0;
}

常见错误

  • sort(a,b,c)参数问题, 前面两个参数对应数组的begin和end的迭代器(理解为地址),是左闭右开的空间(end是最后一个元素的后一个位置)
  • 使用index作为数组/变量名字,由于和库函数中名字重复,会报错,因此避免使用index、count、list等常见库函数名作为变量名,推荐命名规范:pos_map、original_index等具名变量
http://www.dtcms.com/a/487825.html

相关文章:

  • 安徽建设工程信息网站珠海网站优化公司
  • 做ps的网站有哪些功能吗深圳一百讯网站建设
  • 专题:2025年AI Agent智能体行业价值及应用分析报告:核心趋势、经济影响与治理框架|附700+份报告PDF、数据仪表盘汇总下载
  • 招聘网站开发的目的与意义上饶建网站公司
  • 做论坛网站怎么样备案建设网站收费标准
  • 怎么自己网站建设国外做鞋子的网站
  • 智慧物流企业网站建设方案一个网站开发语言
  • 苏州正规网站制作公司广告优化
  • wordpress图片自动添加altseo查询5118
  • 想网上卖家具怎么做网站课程网站建设论文
  • 中山建网站找哪家郑州网站免费制作
  • 开发微信小程序步骤昆山网站优化公司
  • windows修复双系统引导失败过程
  • 网站加速打开私人域名可以做公司网站备案吗
  • 个人网站icp备案号2023年又开始封控了吗
  • 网站开发的概要设计模板wordpress 评论排序
  • 基础型网站价格九江市区
  • 华为结构化摄像机接入到SVMSPro平台操作流程
  • 网站建设预算明细表学做网站快吗
  • 算法题(234):最小生成树(kruskal算法)
  • 【C++】继承(1)
  • 网站 字号 英文国家企业信息管理系统
  • 合肥html5网站建设中文wordpress企业
  • 力扣Hot100--226.翻转二叉树
  • 园岭网站建设百度做广告
  • LeetCode每日一题——矩阵置0
  • 网站规划和建设的基本步骤怎么做属于自己的免费网站
  • 东莞个人网站设计天津平台网站建设企业
  • Python全栈(基础篇)——Day12:函数进阶(闭包+装饰器+偏函数+实战演示+每日一题)
  • 【完整源码+数据集+部署教程】 【运输&加载码头】仓库新卸物料检测系统源码&数据集全套:改进yolo11-DRBNCSPELAN