通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
"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普及组]
若变量已正确定义为int型,要通过语句scanf("%
有以下结构体说明、变量定义和赋值语句则以下scanf函
输出如下格式的九九乘法表:1*1=12*1=2 2*2
己知x=[3,7,5],那么执行语句x=x.sort
表达式 type(3.0) in (int,float
字符串"ab\n\\012\\\"的长度是______
将当前目录下的bin目录和hello、hello.c文
FTP传输中使用哪两个端口( )?
升级安装wu-ftpd软件包参考答案:rpm –Uvh
结束后台进程的命令是( )。
从内核实现的角度说明Linux进程共享文件的方式有哪几
LINUX用于启动系统所需加载的内核程序位于( )
怎样了解您在当前目录下还有多大空间?
退出MySQL服务器连接的命令是 。
使用 ____ 是提高select操作性能的最佳途径
在按字节编址,采用小端方式的32位计算机中,按边界对齐
创建用户帐号时identified by参数的作用是
N个结点的二叉排序树有多种,其中树高最小的二叉排序树是
Prim(普里姆)算法适用于求边稀疏的网的最小生成树。
查找条件为:姓名不是NULL的记录( )
假设客户 C 和服务器 S 已建立一个 TCP 连接,
设char a,b;,若想通过a&&b运算保留a的第1
请补充函数proc,其功能是:计算下面公式S的值:例如
有以下程序,程序运行后的输出结果是( )。
(最小区间覆盖)给出 n个区间,第 i个区间的左右端点
本题t是s的子序列的意思是:从s中删去若干个字符,可以
输入:10 7 1 4 3 2 5 9 8 0 6输出
本题中,我们约定布尔表达式只能包含p, q, r三个布
(选排列)下面程序的功能是利用递归方法生成从 1 到
更多选择题
更多填空题
计算机二级Python语言程序设计模拟试卷
Python第三方库
2025年考研408计算机统考真题在线评测(附答案)
Python标准库
Python函数
Python文件
Python组合数据类型