本文摘自本人洛谷博客,原文章地址:https://www.luogu.com.cn/blog/cjtb666anran/solution-p5759

\[这道题重在理解题意
\]

选手编号依次为: \(1,2...N\) ( \(N\) 为参赛总人数)。

设 \(x_{ij}\) 分别表示编号为 \(i\) 的选手第 \(j\) 项竞赛的成绩 \((1 \le i \le N\),\(1 \le j \le 8)\) 。其它指标如下:

  • 第 \(j\) 项竞赛的平均分 $ avg_j = \frac{1}{N} \sum_{i=1}^N x_{ij} $,(\(1 \le j \le 8)\)。

  • 选手 \(i\) 的总分 \(sumx_i = \sum_{j=1}^8 x_{ij}\),(\(1 \le i \le N\))。

  • 选手 \(i\) 第 \(j\) 项竞赛的位置分

  1. zm[j][i]+=abs(zn[k][i]-f[i]);
  2. zm[j][i]=(zn[j][i]-f[i])/(zm[j][i]/n);
  3. a[i].zf+=zm[i][j];
  4. a[i].zf+=double(0.8*zm[i][j]);
  5. 位置分的计算
  • 选手 \(i\) 的总位置分 \(sumy_i = \sum_{k=1}^3 y_{jk} + 0.8 \sum_{k=4}^8 y_{jk}\),\((1 \le i \le N)\)。
  1. a[i].sum+=zn[i][j];
  2. 总位置分的计算

所以,一开始我用暴力DFS跑

突然60分有了(毕竟数据小)

所以可以得出 AC 算法

上代码!!!

其实我也是借鉴了题解区的大佬的算法,非常谔谔

  1. #include<bits/stdc++.h>
  2. #define LL long long //十年OI一场空,不开long long见祖宗
  3. #define H 101
  4. using namespace std;
  5. #ifdef ONLINE_JUDGE
  6. static char buf[1000000],*p1=buf,*p2=buf;
  7. #define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++
  8. #endif
  9. inline int read() //快读
  10. {
  11. char ch=getchar();
  12. long long f=1,res=0;
  13. while(ch<'0'||ch>'9')
  14. {
  15. if(ch=='-') f=-1;
  16. ch=getchar();
  17. }
  18. while(ch>='0'&&ch<='9')
  19. res=(res<<1)+(res<<3)+ch-48,ch=getchar();
  20. return res*f;
  21. }
  22. const int N=1e4+1;//其实就是10001
  23. struct Sama{
  24. int id;
  25. double zf,sum;
  26. };
  27. Sama a[N];
  28. LL n;
  29. int zn[N][H];
  30. double zm[N][H],f[H];
  31. bool cmp(Sama a1,Sama a2){//简简单单的排序
  32. if(a1.zf!=a2.zf){
  33. return a1.zf>a2.zf;
  34. }
  35. else if(a1.sum!=a2.sum){
  36. return a1.sum>a2.sum;
  37. }
  38. return a1.id<a2.id;
  39. }
  40. int main(){
  41. ios::sync_with_stdio(false);
  42. n=read();
  43. for(int i=1;i<=n;i++){
  44. for(int j=1;j<=8;j++){
  45. zn[i][j]=read();
  46. }
  47. }
  48. for(int i=1;i<=8;i++){
  49. for(int j=1;j<=n;j++){
  50. f[i]+=zn[j][i];
  51. }
  52. f[i]=f[i]/n;
  53. }
  54. for(int i=1;i<=8;i++){
  55. for(int j=1;j<=n;j++){
  56. for(int k=1;k<=n;k++){
  57. zm[j][i]+=abs(zn[k][i]-f[i]); //计算前缀和
  58. }
  59. if(zm[j][i]!=0){
  60. zm[j][i]=(zn[j][i]-f[i])/(zm[j][i]/n);
  61. }
  62. }
  63. }
  64. for(int i=1;i<=n;i++){
  65. a[i].id=i;
  66. a[i].sum=0;
  67. for(int j=1;j<=3;j++){
  68. a[i].zf+=zm[i][j];
  69. }
  70. for(int j=4;j<=8;j++){
  71. a[i].zf+=double(0.8*zm[i][j]);
  72. }
  73. }
  74. for(int i=1;i<=n;i++){
  75. for(int j=1;j<=8;j++){
  76. a[i].sum+=zn[i][j];
  77. }
  78. }
  79. sort(a+1,a+n+1,cmp); //快排
  80. for(int i=1;i<=n;i++){
  81. cout<<a[i].id<<endl;
  82. }
  83. return 0;
  84. }

洛谷P5759题解的更多相关文章

  1. [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码

    [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码 更坏的阅读体验 定义 对于给定的一个网络,有向图中每个的边权表示可以通过的最大流量.假设出发点S水流无限大,求水流到终点T后的最大流量. 起 ...

  2. 关于三目运算符与if语句的效率与洛谷P2704题解

    题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图.在每一格平原地形上最 ...

  3. c++并查集配合STL MAP的实现(洛谷P2814题解)

    不会并查集的话请将此文与我以前写的并查集一同食用. 原题来自洛谷 原题 文字稿在此: 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. ...

  4. 洛谷P2607题解

    想要深入学习树形DP,请点击我的博客. 本题的DP模型同 P1352 没有上司的舞会.本题的难点在于如何把基环树DP转化为普通的树上DP. 考虑断边和换根.先找到其中的一个环,在上面随意取两个点, 断 ...

  5. 【洛谷】题解 P1056 【排座椅】

    题目链接 因为题目说输入保证会交头接耳的同学前后相邻或者左右相邻,所以一对同学要分开有且只有一条唯一的通道才能把他们分开. 于是可以吧这条通道累加到一个数组里面.应为题目要求纵列的通道和横列的通道条数 ...

  6. 洛谷P3572题解

    这道题实在是一道 毒瘤 题,太坑爹了.那个写 \(deque\) 的题解亲测只有80分,原因 不言而明 ,这道题居然 丧心病狂 到 卡STL . 好了,不吐槽了,进入正题 题目分析: 这是一道十分 简 ...

  7. [洛谷P1972][题解][SDOI2009]HH的项链

    别碰我! 自己还是太蒟了…… 看了好久,最后抄参考题解打出来的…… 前面的可能影响后面的,所以按照询问右端点排序 这时候维护一个前缀和数组就可以了, 那么问题又来了,去重? 可以这样,从前往后枚举,如 ...

  8. 【洛谷P1119题解】灾后重建——(floyd)

    这道题告诉我,背的掉板子并不能解决一切问题,理解思想才是关键,比如不看题解,我确实想不清楚这题是弗洛伊德求最短路 (我不该自不量力的说我会弗洛伊德了我错了做人果然要谦虚) 灾后重建 题目背景 B地区在 ...

  9. 洛谷P5691题解

    题面 本人用的是暴力分类讨论 + \(unordered\_map\) 存储,与所有的题解都不同. 因为 \(n \leq 6\) ,非常的小,并且我不想写 DFS,所以直接暴力分类讨论 \(n=1, ...

随机推荐

  1. 我写的蓝宝石留言本php版 v4.5

    蓝宝石留言本php版v4.5采用原生php编写,在php5.6~php7.x下调试通过.本留言本使用了utf-8编码. include/config1.php是数据库连接参数的配置文件, includ ...

  2. Rust实战系列-基本语法

    本文是<Rust in action>学习总结系列的第二部分,更多内容请看已发布文章: 一.Rust实战系列-Rust介绍 " 主要介绍 Rust 的语法.基本类型和数据结构,通 ...

  3. Word修订内容批量标红

    最近改文章,期刊要求提供所有修改内容都标红的修订稿,本着能不手改就不手改的原则,我尝试检索了一下自动修改的方法,最先找到的是简书上的一篇使用VB宏命令批量修改的文章 (Word-接受全部修订为标红字体 ...

  4. C#基础_利用Stopwatch计时器可暂停计时,继续计时

    最近程序上用到了计时功能,对某个模块进行计时,暂停的时候模块也需要暂停,启动的时候计时继续 用到了Stopwatch Stopwatch的命名空间是using System.Diagnostics; ...

  5. kingbaseES R3 集群配置 SSL

    ​ 案例说明: 本测试是在非生产环境下,在官方没有明确声明支持KingbaseCluster使用ssl的前提下,建议只能在测试环境使用,避免生产环境下直接使用. 数据库版本: TEST=# selec ...

  6. 《网页设计基础——CSS的四种引入方式详解》

    网页设计基础--CSS的四种引入方式详解     一.行内式:   规则: 1. 行内式是所有样式方法中最为直接的一种,它直接对HTML的标记使用style属性,然后将CSS代码直接写在其中.   格 ...

  7. Rust基本数据类型

    基本类型 Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型. 基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),由以下组成: 数值类型: ...

  8. MySQL8.0报错:Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

    MySQL8.0.16版本中新增了一个system_user帐户类型,当新增用户并赋予权限时 mysql> create user 'proxysql'@'192.168.20.%' ident ...

  9. MySQL 在 Kubernetes IPVS 模式下引发的 TCP 超时问题

    文章转载自:https://mp.weixin.qq.com/s/XQ2SlCYxvXPY0rRRO-CURA

  10. SkyWalking简要介绍

    什么是 SkyWalking 分布式系统的应用程序性能监视工具,专为微服务.云原生架构和基于容器(Docker.K8s.Mesos)架构而设计.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化 ...