题目描述

给你OliverOliverOliver三科的成绩,分别是OliverOliverOliver的ChineseChineseChinese、mathmathmath、EnglishEnglishEnglish的成绩
然后又来了nnn个人~~(来砸场子的,兄弟们揍他)~~ ,他们也有各自的成绩
现在要你求三科里
OliverOliverOliver与这nnn个人当中NO.1NO.1NO.1的人的成绩

输入

第111~333行,你的ChineseChineseChinese、mathmathmath、EnglishEnglishEnglish的成绩
第444行,来了nnn个人
第555~n∗3+4n*3+4n∗3+4行为nnn个人各自的成绩
注意是
第五行:第1个人Chinese的成绩
第六行:第1个人math的成绩
第七行:第1个人English的成绩
第八行:第2个人Chinese的成绩

输出

OliverOliverOliver与这nnn个人当中NO.1NO.1NO.1的人的成绩
如果OliverOliverOliver是NO.1NO.1NO.1,就输出000(都差不多)

样例输入
10
10
10
3
0
80
0
40
0
0
0
0
100
样例输出
30 70 90

数据范围限制

【数据范围】
对于50%的数据,0<N<1000,0<M<19.
对于100%的数据,0<N<10000,0<M<30.且都为整数。

思路

看了题,原本以为很简单
一看数据,就崩了

高精(悲伤,不多讲)

读入其他人的成绩时,可以进行比较,找到最大的
最后相减输出,完事

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int Others[55],Gap[55];
//Others是别人的成绩,Oliver[0]是成绩的位数
//Gap是Oliver和NO.1的成绩差
int Results[2][4][55];
//Results[i][j][k]
//i=0代表Oliver的成绩,否则为NO.1的成绩
//j=1代表Chinese成绩,2代表math成绩,3代表English
//k就位数,这里是按最低位在最右边(50),k=0时代表成绩的位数
int n,m,t,tot;
string s;
bool flag;
void read(int t)//高精读入
{getline(cin,s);tot=0;while(s[tot]>='0' && '9'>=s[tot])tot++;for(int i=0;i<tot;++i)Results[0][t][50-(tot-i)+1]=s[i]-'0';Results[0][t][0]=tot;
}
/*
Oliver Results read
Oliver的成绩读入
*/
void readd()//高精读入
{memset(Others,0,sizeof(Others));getline(cin,s);tot=0;while(s[tot]>='0' && '9'>=s[tot])tot++;for(int i=0;i<tot;++i)Others[50-(tot-i)+1]=s[i]-'0';Others[0]=tot;
}
/*
Others Results read
其他人的成绩读入
*/
void Compare(int k)//比较+替换
{if(Others[0]>Results[1][k][0] || //如果位数大于别人(Others[0]==Results[1][k][0]) &&Others[50-(Others[0])+1]>Results[1][k][50-Results[1][k][0]+1])//如果位数相同但最大的数大于别人{for(int i=50;i>=0;--i)Results[1][k][i]=Others[i];//全盘替换return;}else if(Others[0]==Results[1][k][0] &&Others[50-(Others[0])+1]==Results[1][k][50-Results[1][k][0]+1])//如果最高位相同{int flag=0,i;for(i=50-(Others[0])+1;i<=50;++i)//比较每一个位子if(Others[i]>Results[1][k][i])//如果别人比NO.1大{flag=1;break;}else if(Others[i]<Results[1][k][i])//如果别人比NO.1小break;if(flag){for(;i<=50;++i)Results[1][k][i]=Others[i];//全盘替换}return;}
}
/*
Others and Rank.1 Compare
其他人与No.1的比较和替换
*/
void Subtraction(int k)
{if(Results[0][k][0]>Results[1][k][0] || (Results[0][k][0]==Results[1][k][0] &&Results[0][k][50-Results[0][k][0]+1]>Results[1][k][50-Results[1][k][0]+1]))return;//判断Oliver是不是比NO.1大else{memset(Gap,0,sizeof(Gap));int l=0,r=0;for(int i=50;i>0;--i)//高精减{l=Results[1][k][i]-Results[0][k][i]-r;if(l<0)l+=10,r=1;else r=0;Gap[i]=l;//注意借位}}
}
/*
Subtraction
减法
*/
void write(int k)//输出
{if(Results[0][k][0]>Results[1][k][0] || (Results[0][k][0]==Results[1][k][0] &&Results[0][k][50-Results[0][k][0]+1]>Results[1][k][50-Results[1][k][0]+1]))printf("0");//判断Oliver是不是比NO.1大else{t=1;while(!Gap[t] && t<50)++t;while(t<=50)printf("%d",Gap[t++]);}printf(" ");
}
int main()
{read(1);read(2);read(3);scanf("%d\n",&n);for(int i=1;i<=n;++i){readd();Compare(1);//读入+比较readd();Compare(2);readd();Compare(3);}Subtraction(1);write(1);//高精减和输出Subtraction(2);write(2);Subtraction(3);write(3);return 0;
}

注意

有个漏洞(尽然没卡掉),就是高精减和输出的时候判断OliverOliverOliver是否比NO.1NO.1NO.1大时,只比较了位数和最高位,没有比较其他位数
所以如果WA了,可以在那里加一个forforfor语句判断

【高精】Oliver的成绩相关推荐

  1. 【高精】Oliver的成绩(jzoj 2008)

    Oliver的成绩 题目大意: Oliver考了一次试,现在知道他的语数英的成绩,还有年级其他n个人的成绩,现在问Oliver三科各和年级第一差多少分,如果Oliver在这一科上是第一,则输出'0' ...

  2. 面向自动驾驶的高精地图及数据采集生产体系

    前言:又到春招季!作为国民级出行服务平台,高德业务快速发展,大量校招/社招名额开放,欢迎大家投递简历,详情见文末.为帮助大家更了解高德技术,我们策划了#春招专栏#的系列文章,组织各业务团队的高年级同学 ...

  3. 腾讯自动驾驶布局全态观:高精地图、仿真、数据云......

    11月1日,是自动驾驶圈子值得铭记的日子. 南京这厢,腾讯全球合作者伙伴大会,呐喊智能出行,自动驾驶三大核心技术平台首次亮相. 北京那厢,百度世界开发者大会,高调宣布与一汽红旗发布L4级别自动驾驶乘用 ...

  4. 高精地图与自动驾驶(下)

    高精地图与自动驾驶(下) 二.高精地图与自动驾驶 谈到高精地图对自动驾驶的作用,可以对比自动驾驶和人类驾驶的流程的相通性. 人驾驶的时候以眼睛为主,耳朵辅助观察测量环境:自动驾驶车用多种传感器包括摄像 ...

  5. 高精地图与自动驾驶(上)

    高精地图与自动驾驶(上) 前言 自动驾驶的实现主要有三个步骤:感知.决策规划.行车控制.这与你走路上班/上学的逻辑是相似的:眼睛看到画面,告诉大脑,然后你就知道了自己在哪里,以及要往哪个方向走,并指挥 ...

  6. 高精地图中导航标识识别

    高精地图中导航标识识别 思路 主要介绍高精地图导航标识识别上的技术演进,这些技术手段在不同时期服务了高精地图产线需求. 高精地图介绍 当你开车导航的时候,导航地图会向我们推荐一条或几条路线,有些地图甚 ...

  7. 高精地图:为自动驾驶汽车提供动力的新时代地图

    专为自动驾驶而构建的地图通常称之为高精地图(High Definition Maps),这些地图在厘米级别,一般具有极高的精度,阅读本文将了解有关高精地图的一些基本内容.你将了解到高精地图的定义,为什 ...

  8. 高德联手凯迪拉克 发布全球首个高精地图应用

    6月13日,在CES ASIA活动现场,上汽通用汽车凯迪拉克超级智能驾驶系统(Super CruiseTM)在国内首发亮相,未来将搭载在凯迪拉克CT6 40T铂金版车型上推向市场.高德地图作为上汽通用 ...

  9. 智能网联汽车高精地图白皮书(2020)

    1. 前言 高精地图的发展与智慧交通.智能网联汽车紧密相关,从智能网联汽车上路伊始,高精地图产业就应势而生并飞速发展.相对于以往的导航地图,高精地图是智能网联汽车交通的共性基础技术,其服务的对象并非仅 ...

  10. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★

    P1005 矩阵取数游戏 输入 2 3 1 2 3 3 4 2 输出 82 说明/提示 NOIP 2007 提高第三题. 数据范围: 60%60\%60% 的数据满足:1≤n,m≤301\le n,m ...

最新文章

  1. 这六段代码隐藏着深度学习的前世今生!
  2. asp开发中存储过程应用全接触 _asp技巧
  3. 算法工程与计算机科学,合并的分水岭算法-计算机工程与科学.PDF
  4. nodejs在服务器上运行
  5. windows下,linux下elasticsearch安装插件bigdesk插件的步骤
  6. 未来计算机对世界的改变,到2030年,世界将会发生的10个改变,科学家:科技决定未来!...
  7. android捕获全局异常,并对异常做出处理
  8. 用python做一个输入半径值计算圆的面积保留两位小数_1063 计算谱半径 (20分)
  9. 读书笔记3——《用户故事与敏捷方法》
  10. Matlab-Simulink文件类型总结
  11. 10大名场面!Python处理办公自动化的10招!
  12. 保险精算笔记Chapter02
  13. 深发银行为什么要更名为平安银行?
  14. 有些微信朋友,每天喜欢发早安、图片给别人,这些人是什么心理?
  15. 程序员面试100题之六 最长公共子序列
  16. 真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标
  17. 几个javascript框架对比(vue,react,Angular等),如何选择?
  18. 天选2出现找不到wlan问题
  19. java程序阅读题6,阅读以下说明和java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对 - 信管网...
  20. win7上安装MySQL没提示密码_win7下安装mysql后修改密码

热门文章

  1. 2010年终总结报告
  2. Ubuntu20.04微信安装 简单 使用方便
  3. XINS Web服务框架
  4. ubuntu下解决longene-qq 退出之后再登录出现登录失败的问题
  5. Python常用第三方库大全, 值得收藏!
  6. 利用DSRM账号进行权限维持
  7. 网络安全-古典加密算法之置换密码加解密算法
  8. android textview 字母数字键盘,android数字键盘怎样设置成默认的
  9. sql优化与索引使用
  10. 网站制作的流程是什么?网站制作的流程包括哪些步骤?