通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"NOIP真题" 试卷中 NOIP第二十二届全国青少年信息学奥林匹克联赛初赛试题[2016提高组] 中有题目如下:
第1题
(交朋友)根据社会学研究表明,人们都喜欢找和自己身高相近的人做朋友。 现在有 n 名身高两两不相同的同学依次走入教室,调查人员想预测每个人在走入教室的瞬间最想和已经进入教室的哪个人做朋友。当有两名同学和这名同学的身高差一样时,这名同学会更想和高的那个人做朋友。比如一名身高为 1.80 米的同学进入教室时,有一名身高为 1.79 米的同学和一名身高为 1.81 米的同学在教室里,那么这名身高为1.80 米的同学会更想和身高为 1.81 米的同学做朋友。对于第一个走入教室的同学我们不做预测。
由于我们知道所有人的身高和走进教室的次序,所以我们可以采用离线的做法来解决这样的问题,我们用排序加链表的方式帮助每一个人找到在他之前进入教室的并且和他身高最相近的人。
#include <iostream> using namespace std; #define MAXN 200000 #define infinity 2147483647 int answer[MAXN], height[MAXN], previous[MAXN], next[MAXN]; int rank[MAXN]; int n; void sort(int l, int r) { int x = height[rank[(l + r) / 2]], i = l, j = r, temp; while (i <= j) { while (height[rank[i]] < x) i++; while (height[rank[j]] > x) j--; if ( ___(1)___ ) { temp = rank[i]; rank[i] = rank[j]; rank[j] = temp; i++; j--; } } if (i < r) sort(i, r); if (l < j) sort(l, j); } int main() { cin >> n; int i, higher, shorter; for (i = 1; i <= n; i++) { cin >> height[i]; rank[i] = i; } sort(1, n); for (i = 1; i <= n; i++) { previous[rank[i]] = rank[i - 1]; ___(2)___ ; } for (i = n; i >= 2; i--){ higher = shorter = infinity; if (previous[i] !=0) shorter = height[i] - height[previous[i]]; if (next[i] != 0) ___(3)___ ; if ( ___(4)___ ) answer[i] = previous[i]; else answer[i] = next[i]; next[previous[i]] = next[i]; ___(5)___ ; } for (i = 2; i <= n; i++) cout << i << ":" << answer[i]; return 0; }
所属试卷:NOIP第二十二届全国青少年信息学奥林匹克联赛初赛试题[2016提高组]
下列语句中,能够进行正确初始化的是
下列语句中错误的是( )。
同一个关系模型的任意两个元组值( )。
编写代码,获得用户输入的一个十进制数,分别输出其二进制
有以下程序:程序的运行结果是( )。
某二叉树中度为2的结点有10个,则该二叉树中有( )个
以下选项中错误的是( )。
在Python中0xad是合法的十六进制数字表示形式。
表达式 {‘x’:1,**{‘y’:2}}的值为___
二进制是一种“逢二进一”的机制,它用0和_____两个
一棵二叉树有10个度为1的结点,7个度为2的结点,则该
若有char s[3][3]={"AAA","BBB"
如何快速切换到用户John的主目录下?
创建数据库mytest的命令是( )
表长为n的顺序存储的线性表,当删除任意一个元素的概率相
在网络工程中通常用的线缆标准为
请设计一个队列,要求满足:①初始时队列为空;②入队时,
排序过程中,对尚未确定最终位置的所有元素进行一遍处理称
下列给定的关键字输入序列中,不能生成如下二叉排序树的是
假设输入字符串由 ASCII 可见字符组成,当输入为“
若a是int型变量,且a的初值为6,则计算表达式a+=
执行下列语句后,b的十进制值是_____。
表达式a+=b相当于表达式_____。
数组在内存中占一段连续的存储区,由_____代表它的首
设char a,b;,若想通过a&&b运算保留a的第1
一个C源程序中至少应包括一个_____函数。
C语言中的字符变量用保留字_____来说明。
输出:( )
(打印月历)输入月份 m(1≤m≤12),按一定格式打
输入: 2 3 5 7输出: _________
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2