排名(paiming.pas/c/cpp)
[问题描述]
宁波市的小学生们在镇海中学完成程序设计比赛后,老师们批出了所有学生的成
绩,成绩按分数从高到低排名,成绩相同按年级从低到高排(注:纯属虚构,勿对号入座)。
现在主办单位想知道每一个排名的学生前,有几位学生的年级低于他(她)。
[输入]
输入文件paiming.in,有若干行:
第1行只有一个正整数n(1<=n<=200),表示参赛的学生人数。
第2行至第n+1行共n行,每行有两个正整数s(0<=s<=400),g(1<=g<=6)。
其中第
i+1行的第一个数s表示第i个学生的成绩,第i+1行第二个数g表示第i个学生的的年级。
[输出]
输出文件paiming.out有n行,每行只有一个正整数,其中第i行的数k表示排第i名的学生前面有k个学生的排名比他(她)高,且年级比他(她)低。
[样例输入]
5
300 5
200 6
350 4
400 6
250 5
[样例输出]
1
1
3
[数据限制]
50%的数据,每个学生的成绩互不相同
种树(trees.pas)
【问题描述】
一条街的一边有几座房子。
因为环保原因居民想要在路边种些树。
路边的地区被分割成块,并被编号成1..N。
每个部分为一个单位尺寸大小并最多可种一棵树。
每个居民想在门前种些树并指定了三个号码B,E,T。
这三个数表示该居民想在B和E之间最少种T棵树。
当然,B≤E,居民必须记住在指定区不能种多于区域地块数的树,所以T≤E-B+l。
居民们想种树的各自区域可以交叉。
你的任务是求出能满足所有要求的最少的树的数量。
写一个程序完成以下工作:
* 从trees.in读入数据
* 计算最少要种树的数量和位置
* 把结果写到trees.out
【输入】
第一行包含数据N,区域的个数(0<N≤30000);
第二行包含H,房子的数目(0<H≤5000);
下面的H行描述居民们的需要:B E T,0<B≤E≤30000,T≤E-B+1。
【输出】
输出文件第一行写有树的数目,下面的行包括所有树的位置,相邻两数之间用一个空格隔开。
【样例】
trees.in trees.out
9 5
4 1 4
5 8 9
1 4 2
4 6 2
8 9 2
3 5 2
NBA总冠军(nba.pas/c/cpp)
【问题描述】
又要考试了,Ljw决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的NBA 总冠军队伍。
由于复习紧张,他只记起了一部分,记忆的内容是正确的,可能不是按时间顺序排列的,记忆的内容可能有重复。
现在请求学过编程的你帮助Ljw,按时间依次输出总冠军的球队(不能重复)。
(NBA 从1947A.D到2009A.D)
【输入】
输入文件nba.in的第一行是一个整数n(0<n<50)。
接下来的n行,每行先是城市名(由大到小写字母、空格组成),后是时间(由数字组成)二者之间用空格隔开。
【输出】
输出文件nba.out共n行,即排序后的NBA总冠军队伍。
每行先是时间,后是城市名。
【输入输出样例】
机器翻译(translate.pas/c/cpp)
【问题描述】
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。
这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。
对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。
假设内存中有M个单元,每单元能存放一个单词和译义。
每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入M 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。
假设一篇英语文章的长度为N 个单词。
给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。
【输入】
输入文件名为translate.in,输入文件共2 行。
每行中两个数之间用一个空格隔开。
第一行为两个正整数M 和N,代表内存容量和文章的长度。
第二行为N 个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。
文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。
【输出】
输出文件translate.out 共1 行,包含一个整数,为软件需要查词典的次数。
【输入输出样例1】
translate.in
3 7
1 2 1 5 4 4 1
translate.out
5
【输入输出样例 1 说明】
整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:
空:内存初始状态为空。
1. 1:查找单词1 并调入内存。
2. 1 2:查找单词2 并调入内存。
3. 1 2:在内存中找到单词1。
4. 1 2 5:查找单词5 并调入内存。
5. 2 5 4:查找单词4 并调入内存替代单词1。
6. 2 5 4:在内存中找到单词4。
7. 5 4 1:查找单词1 并调入内存替代单词2。
共计查了5 次词典。
【输入输出样例2】
translate.in
2 10
8 824 11 78 11 78 11 78 8 264
translate.out
6
【数据范围】
对于10%的数据有M=1,N≤5。
对于100%的数据有0<M≤100,0<N ≤1000。
奖品(jiangpin.pas/c/cpp)
[问题描述]
托塔李天王的三太子那吒,本领高强,他要赶在奥林匹克运动会之际,开一个头脑奥林匹克比赛,获胜者的奖品就是经过提炼后的“氦-3”晶结体;该物质在月球上大量存在,是一种无色、无味的氦气同位素,它在核聚变研究中有重要作用。
氦-3还是一种绝对清洁的能源,因为它本身不带放身性,因此不会产生任何放射性废料。
可是如果从月球上将该晶体运回地球呢?那吒说:用我的肚兜吧!当然他的肚兜易受太阳风等因素的影响,载重量不能超过k(1<=n<=100000),超过这个值,肚兜就不会飞了;这个k值那吒会告诉你的,同时还会告诉你每一个晶体的重量。
你的任务是使这个肚兜一次能运回更多的晶体。
[输入]
输入文件jiangpin.in有两行
第一行有两个正整数n和k,用一个空格隔开。
表示有n个晶体,肚兜最大载重量为k。
第二行有n个不超过10000的正整数,分别表示n个晶体的重量,数与数之间用一个空格隔开。
[输出]
输出文件jiangpin.out只有一行,该行只有一个正整数,表示那吒的肚兜一次能运回的晶体重量的最大值。
[样例输入]
5 15
2 4 4 8 10
[样例输出]
14
[数据限制]
40%的数据:1<=n<=20
100%的数据:1<=n<=100。