T01 查找特定元素的值

描述

在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。

输入

第一行包含一个正整数n,表示序列中元素个数。1 <= n <= 10000。
第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。
第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。

输出

若序列中存在x,输出x第一次出现的下标;否则输出-1。

  1. 样例输入
  2.  
  3. 样例输出

样例

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. int a[],n,m;
  5. int main()
  6. {
  7. cin>>n;
  8. for(int i=;i<=n;i++) scanf("%d",&a[i]);
  9. cin>>m;
  10. for(int i=;i<=n;i++)
  11. if(a[i]==m)
  12. {
  13. cout<<i;return ;
  14. }
  15. cout<<-;
  16. }

T02 输出最高分数的学生姓名

描述

输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入

第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格式如下:
分数 姓名
分数是一个非负整数,且小于等于100;
姓名为一个连续的字符串,中间没有空格,长度不超过20。
数据保证最高分只有一位同学。

输出

获得最高分数同学的姓名。

  1. 样例输入
  2.  
  3. lilei
  4. hanmeimei
  5. lily
  6. lucy
  7. jim
  8. 样例输出
  9. hanmeimei

样例

不一样的解法:利用map有序存数的特点,慢2ms

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<map>
  4. #include<cstring>
  5. using namespace std;
  6. map<int ,string>mp;
  7. int n;
  8. int main()
  9. {
  10. cin>>n;
  11. for(int i=;i<=n;i++)
  12. {
  13. int m;
  14. string a;
  15. cin>>m>>a;
  16. mp[m]=a;
  17. }
  18. map<int,string>::iterator it=mp.end();
  19. it--;
  20. cout<<it->second;
  21. }

一般解法:0ms

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. int n,maxx;
  6. string ans;
  7. int m;
  8. string a;
  9. int main()
  10. {
  11. cin>>n;
  12. for(int i=;i<=n;i++)
  13. {
  14. cin>>m>>a;
  15. if(m>maxx)
  16. {
  17. ans=a;
  18. maxx=m;
  19. }
  20. }
  21. cout<<ans;
  22. }

2

T03 不高兴的津津

描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入

包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出

包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

  1. 样例输入
  2.  
  3. 样例输出

样例

  1. #include<iostream>
  2. using namespace std;
  3. int maxx,ans;
  4. int main()
  5. {
  6. int a,b;
  7. for(int i=;i<=;i++)
  8. {
  9. cin>>a>>b;
  10. if(a+b>maxx)
  11. {
  12. maxx=a+b;
  13. ans=i;
  14. }
  15. }
  16. cout<<ans;
  17. }

T04 谁拿了最多奖学金

描述

某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:

1)     院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;

2)     五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;

3)     成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;

4)     西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;

5)     班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;

只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。

现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。

输入

第一行是一个整数N(1 <= N <= 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。

输出

包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。

  1. 样例输入
  2.  
  3. YaoLin Y N
  4. ChenRuiyi N Y
  5. LiXin N N
  6. ZhangQin Y N
  7. 样例输出
  8. ChenRuiyi

样例

  1. #include<iostream>
  2. using namespace std;
  3. int maxx,sum;
  4. string name,a;
  5. int n,qimo,banji,lunwen;
  6. char ganbu,xibu;
  7. int main()
  8. {
  9. cin>>n;
  10. for(int i=;i<=n;i++)
  11. {
  12. cin>>a>>qimo>>banji>>ganbu>>xibu>>lunwen;
  13. int k=;
  14. if(qimo>&&lunwen) k+=;
  15. if(qimo>&&banji>) k+=;
  16. if(qimo>) k+=;
  17. if(qimo>&&xibu=='Y') k+=;
  18. if(banji>&&ganbu=='Y') k+=;
  19. if(k>maxx)
  20. {
  21. maxx=k;
  22. name=a;
  23. }
  24. sum+=k;
  25. }
  26. cout<<name<<endl<<maxx<<endl<<sum;
  27. }

T05 最大值和最小值的差

描述

输出一个整数序列中最大的数和最小的数的差。

输入

第一行为M,表示整数个数,整数个数不会大于10000;
第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。

输出

输出M个数中最大值和最小值的差。

  1. 样例输入
  2.  
  3. 样例输出

样例

方法1:读入的时候顺便记录最大最小值,时间6ms,内存464KB

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. using namespace std;
  5. int n,x;
  6. int maxx=-,minn=;
  7. int main()
  8. {
  9. cin>>n;
  10. for(int i=;i<=n;i++)
  11. {
  12. scanf("%d",&x);
  13. maxx=max(maxx,x);
  14. minn=min(minn,x);
  15. }
  16. cout<<maxx-minn;
  17. }

1

方法2:读完之后,sort排序,时间12ms,内存464KB

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. using namespace std;
  5. int n,a[];
  6. int main()
  7. {
  8. cin>>n;
  9. for(int i=;i<=n;i++)
  10. scanf("%d",&a[i]);
  11. sort(a+,a+n+);
  12. cout<<a[n]-a[];
  13. }

2

noi题库(noi.openjudge.cn) 1.9编程基础之顺序查找T01——T05的更多相关文章

  1. noi题库(noi.openjudge.cn) 1.9编程基础之顺序查找T06——T15

    T06 笨小猴 描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词 ...

  2. noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T01、02、04

    T01 查找最接近的元素 描述 在一个非降序列中,查找与给定值最接近的元素. 输入 第一行包含一个整数n,为非降序列长度.1 <= n <= 100000.第二行包含n个整数,为非降序列各 ...

  3. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  4. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  5. NOI题库 09:图像旋转翻转变换

    NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此 09:图像旋转翻转变换 总时间限制: 1000ms 内存限制: 65536kB 描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作 ...

  6. NOI题库-小学奥赛QwQ

    今天Loli教育我们让我们来看看NOI题库的奥赛部分,不过,为何是小学的( ⊙ o ⊙ )啊!感觉智商被各种侮辱. 余数相同问题: 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为 ...

  7. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35

    T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...

  8. noi题库(noi.openjudge.cn) 1.5编程基础之循环控制T36——T45

    T36 计算多项式的值 描述 假定多项式的形式为xn+xn-1+-+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入 输入仅一行,包括x和n,用单个空格隔开.x在flo ...

  9. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

    T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...

随机推荐

  1. Mac下修改Hosts文件工具——Gas Mask

    这段时间在做公司APP的项目,看到公司开发IOS的同事和我这边联调程序时,经常需要手动修改hosts文件,比较麻烦. 在公司忙,没有来及找,给同事推荐了我当时知道的一个切换hosts文件的工具:sma ...

  2. 重启 IIS7 应用程序池的批处理

    批处理很简单:c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP.NET v4.0"c:\ ...

  3. spring 和springMVC的区别

    springmvc只是spring其中的一部分.spring 可以 支持 hibernate ,ibatis ,JMS,JDBC 支持事务管理, 注解功能,表达式语言,测试springmvc 就是一个 ...

  4. 判断字符串的首字母 ---------startsWith

    列: {                                            xtype : 'gridcolumn',                                ...

  5. MySQL锁机制总结(二)

    前言: Mysql是一个支持插件式存储引擎的数据库系统,本文讨论的锁机制也主要包含两部分SERVER层的锁和存储引擎的锁,存储引擎是指innodb,其它存储引暂不讨论. 1. 数据库中锁相关的基本概念 ...

  6. 十五天精通WCF——第十三天 用WCF来玩Rest

    在我们玩wcf的时候,都会潜意识的觉得wcf就是通过soap协议交换消息的,并且可以在basic,tcp,msmq等等绑定中任意切换, 牛逼的一塌糊涂,但是呢,如果说哪一天wcf不再使用soap协议, ...

  7. android 获取本机SMI卡号码

    //获取手机号码 TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); S ...

  8. win7 telnet

    一.telnet连接 1.linux linux下可以通过net stat 查看22端口来确认端口是否开放. 然后在cmd中可通过telnet 10.0.200.151 22来连接. 2.win7 w ...

  9. sql中视图的作用

    视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态 ...

  10. 我的STL学习之路

    说起STL(标准模板库),相信了解C++的都不会陌生吧^_^.LZ是从大三开始学习C++(ps:不是科班出身),并慢慢接触使用STL的,在学校中使用STL比较多的情况是写数据结构代码,使用STL实现数 ...