【华为2016上机试题C++】最高分是多少

[编程题] 最高分是多少

时间限制:1秒

空间限制:65536K

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

输入描述:
输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为‘Q‘的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。
输出描述:
对于每一次询问操作,在一行里面输出最高成绩.
输入例子:
5 7
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 4 5
U 2 9
Q 1 5
输出例子:
5
6
5
9
 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4
 5 int getmax(vector<int> &gra,int x,int y)//选出x到y中的最大值
 6  {
 7        int temp;
 8        if(x>y)//考虑输入前面的比后面大的情况
 9        {
10             temp=x;
11              x=y;
12               y=temp;
13
14        }
15        int max;
16        max=gra[x];
17        for(int i=x;i<=y;++i)
18        {
19             if(gra[i]>max)
20                 max=gra[i];
21
22        }
23
24     return max;
25
26 }
27
28 int main()
29  {
30       int x,y;
31       char ch;
32       int temp,g_num,op_num;
33       vector<int> max;
34
35       cin>>g_num>>op_num;
36       vector<int> gra;
37
38       for(int i=0;i<g_num;i++)
39      {
40          cin>>temp;
41          gra.push_back(temp);
42
43       }
44
45      while(op_num--)
46      {
47
48            cin>>ch>>x>>y;
49
50             if(ch==‘Q‘)
51             {
52                  if(x==y)
53                  {
54                          max.push_back(gra[x-1]);
55
56                  }
57                  max.push_back(getmax(gra,x-1,y-1));
58
59              }
60              else if(ch==‘U‘)
61              {
62                   gra[x-1]=y;
63              }
64
65
66      }
67      for(vector<int>::iterator it = max.begin(); it < max.end(); it++)
68       {
69               cout<<*it<<endl;
70        }
71
72     max.clear();
73
74     return 0;
75
76 }
时间: 2024-11-03 21:35:50

【华为2016上机试题C++】最高分是多少的相关文章

华为上机试题:最高分是多少

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩.输入描述:输入包括多组测试数据.每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目.学生ID编号从1编到N.第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询

华为校招上机笔试试题(A卷)——java实现

华为校招上机笔试试题(A卷)--java实现 编程题:A1.最小长方形, A2. 判断一个数字中是否包含两个相同的子串, A3. 取石子游戏. A1.最小长方形 java代码: import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class MinRectangle { public static void main(String arg[]){ List<Integer> ld

华为上机试题

一.题目描述:通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉.比如字符串“abacacde”过滤结果为“abcde”. public String stringFilter(String str) { Map<String, Integer> map = new LinkedHashMap<String, Integer>(); String s = ""; for(int i=0

华为2014机试题(一)

过几天就要进行华为的机试了,今儿临时抱抱佛脚,在网上找到2014届华为校招的机试题,琢磨了一会儿,贴出来记录下. 首先感谢一下Hackbuteer提供的题目:http://blog.csdn.net/hackbuteer1/article/details/11132567 对于第一题,字符过滤.最简单也是最直接的就是HASH.题目规定了输入序列只能为小写字符'a~z'.因此直接开辟一个大小为26的数组用于记录当前字符是否已经出现即可. 需要注意的问题: 1. hash数组记得初始化 2. pOu

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然

华为2016开发者大赛:赢的不仅仅是百万元奖金

当人们的工作和生活被不同平台的各种应用包围,工业和信息化部专家关于"软件定义世界的时代将开启"的论断愈发清晰--这是开发人员的黄金时代,同时这也意味着开发者的挑战,包括创新idea落地的支撑环境.解决方案竞争力的提升.目标客户难以触及等一系列的问题都需要去解决.好消息是,本月启动的2016华为开发者大赛,为全球互联网.移动互联网.传统解决方案领域的开发者们提供了一个平台,让应用的开发和价值的实现变得更加容易. ### 华为开发者大赛 经过20多年的发展成为一家综合性的信息与通信解决方案

西邮Linux兴趣小组2016免试题

持续更新ING!才到第四关,欢迎探讨! 4月伊始,西邮Linux小组为五月纳新进入了前期宣传阶段,免试题一放出,引来各个热爱技术的同学热情挑战. 免试题入门可从西邮Linux小组官网中戳入,或直接点西邮Linux小组2016免试题进入. 本想着从百度进入免试题入口,却意外发现2013年曾有外校学生写过13年的免试题攻略,对小组免试题考察风格有了初步的了解.详见西邮Linux小组2013免试题 第一关 首页如图所示,看见START,就立刻戳了进去. 进去后是一张背景图片,中间写着2006的年份(西

Linux 兴趣小组2016免试题 第四关揭秘

Linux 兴趣小组2016免试题 点这里 首先贴出第四关链接Linux 兴趣小组2016免试题 第四关 第四关: 进入网址我们看到的是4张扑克牌K,这是什么意思? 要我斗地主?好了,还是乖乖的先查看源码吧. 但是什么也没有发现啊.没办法,将四张照片都下载下来看看,可是左看右看还是一张图片啊,该不会在图片内容中隐藏着什么吧?那怎样查看图片内容呢? 找个十六进制编辑器吧! 这些其实都可以,大家自己选择由于我在Linux操作系统下熟悉了hexedit,就下载了一个hexedit来分析.没办法,一张一

华为2016机试题目01

牛客网做的华为2016机试题目,新手,代码较乱,一起讨论. 题目要求如下: 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据. 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目. 学生ID编号从1编到N. 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩 接下来又M行,每一行有一