万卷网
考级竞赛
乐高论坛
搜索
登录
/
注册
NOIP提高组
考级竞赛
电子学会
机器人技术等级考试
Scratch等级考试
Python等级考试
C/C++等级考试
GESP认证
图形化
Python
C++
信息学奥赛
CSP-J/入门级
CSP-S/提高级
NOIP普及组
NOIP提高组
NOI联赛
蓝桥竞赛
蓝桥Scratch
蓝桥Python
蓝桥C++
科技素养
计算思维
信息素养大赛
图形化编程挑战赛
Python编程挑战赛
C++编程挑战赛
考级竞赛
乐高论坛
专业题库
OJ系统
OJ团队
APP编程
万卷网
>
考级竞赛
>
信息学奥赛
>
NOIP提高组
NOIP提高组
更新时间:
2023-09-02 20:23:05
试题数量:
316
我的练习
顺序练习
随机练习
章节练习
错题练习
题库预览
简答题
信息学NOIP提高组编程试题
简答题
信息学NOIP提高组编程试题
简答题
信息学NOIP提高组编程试题
简答题
信息学NOIP提高组编程试题
简答题
信息学NOIP提高组编程试题
简答题
列队【问题描述】Sylvia 是一个热爱学习的女孩子。前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。Sylvia所在的方阵中有n × m名学生,方阵的行数为 n,列数为 m。为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中的学生从 1 到 n × m 编上了号码(参见后面的样例)。即:初始时,第 i 行第 j 列的学生的编号是(i − 1) × m + j。然而在练习方阵的时候,经常会有学生因为各种各样的事情需要离队。在一天中,一共发生了 q 件这样的离队事件。每一次离队事件可以用数对(x, y) (1≤x≤n, 1≤y≤m)描述,表示第 x 行第 y 列的学生离队。在有学生离队后,队伍中出现了一个空位。为了队伍的整齐,教官会依次下达这样的两条指令:1. 向左看齐。这时第一列保持不动,所有学生向左填补空缺。不难发现在这条指令之后,空位在第 x 行第 m 列。2. 向前看齐。这时第一行保持不动,所有学生向前填补空缺。不难发现在这条指令之后,空位在第 n 行第 m 列。教官规定不能有两个或更多学生同时离队。即在前一个离队的学生归队之后,下一个学生才能离队。因此在每一个离队的学生要归队时,队伍中有且仅有第 n 行第 m 列一个空位,这时这个学生会自然地填补到这个位置。因为站方阵真的很无聊,所以 Sylvia 想要计算每一次离队事件中,离队的同学的编号是多少。注意:每一个同学的编号不会随着离队事件的发生而改变,在发生离队事件后方阵中同学的编号可能是乱序的。【输入格式】输入文件名为 phalanx.in。输入共 q+1 行。第 1 行包含 3 个用空格分隔的正整数 n, m, q,表示方阵大小是 n 行 m 列,一共发生了 q 次事件。接下来 q 行按照事件发生顺序描述了 q 件事件。每一行是两个整数 x, y,用一个空格分隔,表示这个离队事件中离队的学生当时排在第 x 行第 y 列。【输出格式】输出文件名为 phalanx.out。按照事件输入的顺序,每一个事件输出一行一个整数,表示这个离队事件中离队学生的编号。【输入输出样例 1】【输入输出样例 1 说明】列队的过程如上图所示,每一行描述了一个事件。在第一个事件中,编号为 1 的同学离队,这时空位在第一行第一列。接着所有同学向左标齐,这时编号为 2 的同学向左移动一步,空位移动到第一行第二列。然后所有同学向上标齐,这时编号为 4 的同学向上一步,这时空位移动到第二行第二列。最后编号为 1 的同学返回填补到空位中。【数据规模与约定】数据保证每一个事件满足 1≤x≤n,1≤y≤m。
简答题
逛公园【问题描述】策策同学特别喜欢逛公园。公园可以看成一张N个点M条边构成的有向图,且没有自环和重边。其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从1号点进去,从N号点出来。策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不希望每天在逛公园这件事上花费太多的时间。如果1号点到N号点的最短路长为d,那么策策只会喜欢长度不超过d+ K的路线。策策同学想知道总共有多少条满足条件的路线,你能帮帮他吗?为避免输出过大,答案对P取模。如果有无穷多条合法的路线,请输出−1。【输入格式】输入文件名为 park.in。第一行包含一个整数 T, 代表数据组数。接下来M行,每行三个整数ai, bi, ci,代表编号为ai, bi的点之间有一条权值为 ci的有向边,每两个整数之间用一个空格隔开。【输出格式】输出文件名为 park.out。输出文件包含 T行,每行一个整数代表答案。【输入输出样例 1】对于第一组数据,最短路为 3。1 – 5, 1 – 2 – 4 – 5, 1 – 2 – 3 – 5 为 3 条合法路径。【数据规模与约定】 对于不同的测试点,我们约定各种参数的规模不会超过如下对于 100%的数据, 1 ≤ p ≤ 10^9,1 ≤ ai, bi ≤ N , 0 ≤ ci ≤ 1000。数据保证:至少存在一条合法的路线。
简答题
小凯的疑惑【问题描述】小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。【输入格式】输入文件名为 math.in。输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。【输出格式】输出文件名为 math.out。输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。【输入输出样例 1】【输入输出样例 1 说明】小凯手中有面值为3和 7的金币无数个,在不找零的前提下无法准确支付价值为 1、2、4、5、8、11 的物品,其中最贵的物品价值为 11,比 11 贵的物品都能买到,比如:12 = 3 * 4 + 7 * 0 13 = 3 * 2 + 7 * 1 14 = 3 * 0 + 7 * 2 15 = 3 * 5 + 7 * 0……【数据规模与约定】对于 30%的数据: 1 ≤ a,b ≤ 50。对于 60%的数据: 1 ≤ a,b ≤ 10,000。对于 100%的数据:1 ≤ a,b ≤ 1,000,000,000。
简答题
跳石头【问题描述】一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能移走起点和终点的岩石)。【输入格式】输入文件名为 stone.in。输入文件第一行包含三个整数 L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。接下来 N 行,每行一个整数,第 i 行的整数 Di(0 < Di < L)表示第 i 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。【输出格式】输出文件名为 stone.out。输出文件只包含一个整数,即最短跳跃距离的最大值。【输入输出样例 1】【输入输出样例 1 说明】将与起点距离为 2 和 14 的两个岩石移走后,最短的跳跃距离为 4(从与起点距离17 的岩石跳到距离 21 的岩石,或者从距离 21 的岩石跳到终点)。【数据规模与约定】对于 20%的数据,0 ≤ M ≤ N ≤ 10。对于 50%的数据,0 ≤ M ≤ N ≤ 100。对于 100%的数据,0 ≤ M ≤ N ≤ 50,000,1 ≤ L ≤ 1,000,000,000。
简答题
神奇的幻方【问题描述】幻方是一种很神奇的 N * N 矩阵:它由数字 1,2,3, … … , N * N 构成,且每行、每列及两条对角线上的数字之和都相同。当 N 为奇数时,我们可以通过以下方法构建一个幻方:首先将 1 写在第一行的中间。之后,按如下方式从小到大依次填写每个数 K(K = 2,3, … , N * N) :1. 若 (K − 1) 在第一行但不在最后一列,则将 K 填在最后一行, (K − 1) 所在列的右一列;2. 若 (K − 1) 在最后一列但不在第一行,则将 K 填在第一列,(K − 1) 所在行的上一行;3. 若 (K − 1) 在第一行最后一列,则将 K 填在 (K − 1) 的正下方;4. 若 (K − 1) 既不在第一行,也不在最后一列,如果 (K − 1) 的右上方还未填数,则将 K 填在(K − 1)的右上方,否则将 K 填在 (K − 1) 的正下方。现给定 N,请按上述方法构造 N * N 的幻方。【输入格式】输入文件名为 magic.in。输入文件只有一行,包含一个整数 N,即幻方的大小。【输出格式】输出文件名为 magic.out。输出文件包含 N 行,每行 N 个整数,即按上述方法构造出的 N * N 的幻方。相邻两个整数之间用单个空格隔开。【输入输出样例 1】【数据规模与约定】对于 100% 的数据,1 ≤ N ≤ 39 且 N 为奇数。
简答题
宝藏【问题描述】参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋,也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的长度。小明决心亲自前往挖掘所有宝藏屋中的宝藏。但是,每个宝藏屋距离地面都很远,也就是说,从地面打通一条到某个宝藏屋的道路是很困难的,而开发宝藏屋之间的道路则相对容易很多。小明的决心感动了考古挖掘的赞助商,赞助商决定免费赞助他打通一条从地面到某个宝藏屋的通道,通往哪个宝藏屋则由小明来决定。在此基础上,小明还需要考虑如何开凿宝藏屋之间的道路。已经开凿出的道路可以任意通行不消耗代价。每开凿出一条新道路,小明就会与考古队一起挖掘出由该条道路所能到达的宝藏屋的宝藏。另外,小明不想开发无用道路,即两个已经被挖掘过的宝藏屋之间的道路无需再开发。新开发一条道路的代价是:这条道路的长度 × 从赞助商帮你打通的宝藏屋到这条道路起点的宝藏屋所经过的宝藏屋的数量(包括赞助商帮你打通的宝藏屋和这条道路起点的宝藏屋)。请你编写程序为小明选定由赞助商打通的宝藏屋和之后开凿的道路,使得工程总代价最小,并输出这个最小值。【输入格式】输入文件名为 treasure.in。第一行两个用空格分离的正整数 n 和 m,代表宝藏屋的个数和道路数。接下来 m 行,每行三个用空格分离的正整数,分别是由一条道路连接的两个宝藏屋的编号(编号为 1~n),和这条道路的长度 v。【输出格式】输出文件名为 treasure.out。输出共一行,一个正整数,表示最小的总代价。【输入输出样例 1】【输入输出样例 1 说明】【样例输入输出 2】【输入输出样例 2 说明】【数据规模与约定】对于 20%的数据:保证输入是一棵树,1≤n≤8,v≤5000 且所有的 v 都相等。对于 40%的数据:1≤n≤8,0≤m≤1000,v≤5000 且所有的 v 都相等。对于 70%的数据:1≤n≤8,0≤m≤1000,v≤ 5000对于 100%的数据:1≤n≤12,0≤m≤1000,v≤ 500000
简答题
时间复杂度【问题描述】小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序,于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。A++语言的循环结构如下:其中“F i x y”表示新建变量 (i 变量 i 不可与未被销毁的变量重名)并初始化为 x,然后判断 i 和 y 的大小关系,若 i 小于等于 y 则进入循环,否则不进入。每次循环结束后 i 都会被修改成 i +1,一旦 i 大于 y 终止循环。x 和 y 可以是正整数(x 和 y 的大小关系不定)或变量 n。n 是一个表示数据规模的变量,在时间复杂度计算中需保留该变量而不能将其视为常数,该数远大于 100。“E”表示循环体结束。循环体结束时,这个循环体新建的变量也被销毁。注:本题中为了书写方便,在描述复杂度时,使用大写英文字母“O”表示通常意义下“Θ”的概念。【输入格式】输入文件名为 complexity.in。输入文件第一行一个正整数 t,表示有 t(t ≤ 10)个程序需要计算时间复杂度。每个程序我们只需抽取其中 “F i x y”和“E”即可计算时间复杂度。注意:循环结构允许嵌套。接下来每个程序的第一行包含一个正整数 L 和一个字符串,L 代表程序行数,字符串表示这个程序的复杂度,“O(1)”表示常数复杂度,“O(n^w)”表示复杂度为n^w,其中w是一个小于100的正整数(输入中不包含引号),输入保证复杂度只有O(1)和O(n^w)两种类型。接下来 L 行代表程序中循环结构中的“F i x y”或者 “E”。程序行若以“F”开头,表示进入一个循环,之后有空格分离的三个字符(串)i x y,其中 i 是一个小写字母(保证不为“n”),表示新建的变量名,x 和 y 可能是正整数或n ,已知若为正整数则一定小于 100。程序行若以“E”开头,则表示循环体结束。【输出格式】输出文件名为 complexity.out。输出文件共 t 行,对应输入的 t 个程序,每行输出“Yes”或“No”或者“ERR”(输出中不包含引号),若程序实际复杂度与输入给出的复杂度一致则输出“Yes”,不一致则输出“No”,若程序有语法错误(其中语法错误只有: ① F 和 E 不匹配 ②新建的变量与已经存在但未被销毁的变量重复两种情况),则输出“ERR”。注意:即使在程序不会执行的循环体中出现了语法错误也会编译错误,要输出“ERR”。【输入输出样例 1】【输入输出样例 1 说明】第一个程序 i 从 1 到 1 是常数复杂度。第二个程序 x 从 1 到 n 是 n 的一次方的复杂度。第三个程序有一个 F 开启循环却没有 E 结束,语法错误。第四个程序二重循环,n 的平方的复杂度。第五个程序两个一重循环,n 的一次方的复杂度。第六个程序第一重循环正常,但第二重循环开始即终止(因为n远大于100,100大于4)。第七个程序第一重循环无法进入,故为常数复杂度。第八个程序第二重循环中的变量 x 与第一重循环中的变量重复,出现语法错误②,输出ERR。【数据规模与约定】对于 30%的数据:不存在语法错误,数据保证小明给出的每个程序的前 L/2 行一定为以 F 开头的语句,第 L/2+1 行至第 L 行一定为以 E 开头的语句,L<=10,若 x、y 均为整数,x 一定小于 y,且只有 y 有可能为 n。对于 50%的数据:不存在语法错误,L<=100,且若 x、y 均为整数,x 一定小于 y,且只有 y 有可能为 n。对于 70%的数据:不存在语法错误,L<=100。对于 100%的数据:L<=100。
简答题
斗地主【问题描述】牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、方片的 A 到 K 加上大小王的共 54 张牌来进行的扑克牌游戏。在斗地主中,牌的大小关系根据牌的数码表示如下:3<4<5<6<7<8<9<10<J<Q<K<A<2<小王<大王,而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由 n 张牌组成。游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。请你帮他解决这个问题。需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。具体规则如下:【输入格式】输入文件名为 landlords.in。第一行包含用空格隔开的 2 个正整数 T, n ,表示手牌的组数以及每组手牌的张数。接下来 T 组数据,每组数据 n 行,每行一个非负整数对 ai, bi,表示一张牌,其中 ai表示牌的数码,bi 表示牌的花色,中间用空格隔开。特别的,我们用 1 来表示数码 A,11 表示数码 J,12 表示数码 Q,13 表示数码 K;黑桃、红心、梅花、方片分别用 1-4 来表示;小王的表示方法为 0 1,大王的表示方法为 0 2。【输出格式】输出文件名为 landlords.out。共 T 行,每行一个整数,表示打光第i组手牌的最少次数。【输入输出样例 1】【输入输出样例 1 说明】共有 1 组手牌,包含 8 张牌:方片 7,方片 8,黑桃 9,方片 10,黑桃 J,黑桃 5,方片 A 以及黑桃 A。可以通过打单顺子(方片 7,方片 8,黑桃 9,方片 10,黑桃 J),单张牌(黑桃 5)以及对子牌(黑桃 A 以及方片 A)在 3 次内打光。【输入输出样例 2】【数据规模与约定】对于不同的测试点,我们约定手牌组数 T 与张数 n 的规模如下:数据保证:所有的手牌都是随机生成的。
简答题
信息传递【问题描述】有 n 个同学(编号为 1 到 n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为Ti的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自己的生日时,游戏结束。请问该游戏一共可以进行几轮?【输入格式】输入文件名为 message.in。输入共 2 行。第 1 行包含 1 个正整数 n,表示 n 个人。第 2 行包含 n 个用空格隔开的正整数 T1, T2, … … , Tn,其中第i 个整数Ti表示编号为 i的同学的信息传递对象是编号为 Ti 的同学, Ti ≤ n 且 Ti ≠ i。数据保证游戏一定会结束。【输出格式】输出文件名为 message.out。输出共 1 行,包含 1 个整数,表示游戏一共可以进行多少轮。【输入输出样例 1】【输入输出样例 1 说明】游戏的流程如图所示。当进行完第 3 轮游戏后,4 号玩家会听到 2 号玩家告诉他自己的生日,所以答案为 3。当然,第 3 轮游戏后,2 号玩家、3 号玩家都能从自己的消息来源得知自己的生日,同样符合游戏结束的条件。【数据规模与约定】对于 30%的数据,n ≤ 200;对于 60%的数据,n ≤ 2500;对于 100%的数据,n ≤ 200000。
简答题
奶酪【问题描述】现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z = 0,奶酪的上表面为z = h。现在,奶酪的下表面有一只小老鼠 Jerry,它知道奶酪中所有空洞的球心所在的坐标。如果两个空洞相切或是相交,则 Jerry 可以从其中一个空洞跑到另一个空洞,特别地,如果一个空洞与下表面相切或是相交,Jerry 则可以从奶酪下表面跑进空洞;如果一个空洞与上表面相切或是相交,Jerry 则可以从空洞跑到奶酪上表面。位于奶酪下表面的 Jerry 想知道,在不破坏奶酪的情况下,能否利用已有的空洞跑到奶酪的上表面去?【输入格式】输入文件名为 cheese.in。每个输入文件包含多组数据。输入文件的第一行,包含一个正整数 T,代表该输入文件中所含的数据组数。接下来是 T 组数据,每组数据的格式如下:第一行包含三个正整数 n,h 和 r,两个数之间以一个空格分开,分别代表奶酪中空洞的数量,奶酪的高度和空洞的半径。接下来的 n 行,每行包含三个整数 x、y、z,两个数之间以一个空格分开,表示空洞球心坐标为(x, y, z)。【输出格式】输出文件名为 cheese.out。输出文件包含 T 行,分别对应 T 组数据的答案,如果在第 i 组数据中,Jerry 能从下表面跑到上表面,则输出“Yes”,如果不能,则输出“No”(均不包含引号)。【输入输出样例 1】【输入输出样例 1 说明】【数据规模与约定】对于 20%的数据,n = 1,1 ≤ h , r ≤ 10,000,坐标的绝对值不超过 10,000。对于 40%的数据,1 ≤ n ≤ 8, 1 ≤ h , r ≤ 10,000,坐标的绝对值不超过 10,000。对于 80%的数据,1 ≤ n ≤ 1,000,1 ≤ h , r ≤ 10,000,坐标的绝对值不超过 10,000。对于 100%的数据,1 ≤ n ≤ 1,000,1 ≤ h , r ≤ 1,000,000,000,T ≤ 20,坐标的绝对值不超过 1,000,000,000。
共316条
第一页
上一页
14
15
16
17
18
19
20
21
22
下一页
公众号
客服
反馈
顶部