通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"NOIP真题" 试卷中 NOIP第十六届全国青少年信息学奥林匹克联赛初赛试题[2010普及组] 中有题目如下:
第1题
(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥 走到河的左岸。 在这伸手不见五指的黑夜里, 过桥时必须借助灯光来照明, 很不幸的是,他 们只有一盏灯。 另外,独木桥上最多承受两个人同时经过,否则将会坍塌。 每个人单独过桥 都需要一定的时间,不同的人需要的时间可能不同。两个人一起过桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥时所花的时间。现输入 n( 2≤n≤100)和这 n 个 人单独过桥时需要的时间,请计算总共最少需要多少时间,他们才能全部到达河的左岸。 例如,有 3 个人甲、乙、丙,他们单独过桥的时间分别为 1、 2、4,则总共最少需要 的时间为 7 。具体方法是:甲、乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然 后甲、丙再一起过桥到河的左岸,总时间为 2+1+4=7 。
#include<iostream> using namespace std; const int SIZE = 100; const int INFINITY = 10000; const bool LEFT = true; const bool RIGHT = false; const bool LEFT_TO_RIGHT = true; const bool RIGHT_TO_LEFT = false; int n, hour[SIZE]; //存放每个人的过河时间 bool pos[SIZE]; int max(int a, int b) { if (a > b) return a; else return b; } int go(bool stage) { int i, j, num, tmp, ans; if (stage == RIGHT_TO_LEFT) { num = 0; ans = 0; for (i = 1; i <= n; i++) if (pos[i] == RIGHT) { num++; //人数加1 if (hour[i] > ans) ans = hour[i]; //ans保留了最长的过桥时间, } if ( ① __________ ) return ans; ans = INFINITY; for (i = 1; i <= n - 1; i++) if (pos[i] == RIGHT) //如果这个人在右侧 for (j = i + 1; j <= n; j++) if (pos[j] == RIGHT) { pos[i] = LEFT; pos[j] = LEFT; tmp = max(hour[i], hour[j]) + ② __________) ; if (tmp < ans) ans = tmp; pos[i] = RIGHT; pos[j] = RIGHT; } return ans; } if (stage == LEFT_TO_RIGHT) { ans = INFINITY; for (i = 1; i <= n; i++) if ( ③_________) { pos[i] = RIGHT; tmp = ④ _________; if (tmp < ans) ans = tmp; ⑤__________ ; } return ans; } return 0; } int main() { int i; cin>>n; for (i = 1; i <=n; i++) { cin>>hour[i]; pos[i] = RIGHT; //pos是记录每个元素所处的位置。 } cout<<go(RIGHT_TO_LEFT)<<endl; //初始状态RIGHT_TO_LEFT return 0; }
所属试卷:NOIP第十六届全国青少年信息学奥林匹克联赛初赛试题[2010普及组]
有如下程序,运行时的输出结果是。
已知类CC以成员函数方式重载了二元运算符*,c1和c2
下列叙述中错误的是( )。
以下定义数组的语句中错误的是( )。
请在下面程序的横线处填上适当内容,以使程序完整,并使程
以下基类中的成员函数,哪个表示纯虚函数_____。
字典对象的________方法返回字典的“键”列表。
#编写程序,其功能是:用for循环语向求1到n之间所有
给定程序MODI1.C中函数fun的功能是:输出M行M
以下printf语句中的负号的作用是_________
有以下程序程序运营后的输出结果是____
将student表上的sname、sbirth两字段的
数据视图属于三级模式中的( )
顺序存储方式插入和删除时效率太低,因此它不如链式存储方
连通图上各边权值均不相同,则该图的最小生成树是唯一的。
数据库管理系统是位于用户和之间的一个数据管理软件。
(寻找被移除的元素)问题,原有长度为n+1,公差为1的
某计算机系统中的磁盘有 300 个柱面,每个柱面有 1
设x=4<4-!0,x的值为_____。
一个C源程序中至少应包括一个_____函数。
若a为int类型,且其值为3,则执行完表达式a+=a-
定义int a[2][3];表示数组a中的元素个数是_
当输入为“2 -65536 2147483647”时,
对于入栈顺序为a,b,c,d,e的序列,下列( )不是
给定程序fun函数的功能是:根据整型形参m,计算如下公
(读入整数)请完善下面的程序,使得程序能够读入两个 i
平面图是可以画在平面上、且它的边仅在顶点上才能相交的简
排序算法是稳定的意思是关键码相同的记录排序前后相对位置
在字长为 16 位的系统环境下,一个 16 位带符号整
输入: 3 1 2输出: __________
更多选择题
更多填空题
第十章 C++流
第九章 C++模板
第八章 C++运算符重载
C++语言程序设计真题5
C++语言程序设计真题4
C++语言程序设计真题3
C++语言程序设计真题2