- 博客(209)
- 收藏
- 关注
原创 基础知识 - 结构体
它把多个不同类型的变量封装在一起,形成一个新的复合数据类型。可以定义该结构体类型的变量,与使用 int 定义变量的方法相同结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量如:标量,指针,数组,甚至是其他结构体。
2025-04-17 23:12:06
687
原创 【例9.8】合唱队形(信息学奥赛一本通-1264)
N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T1,T2,…你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入的第一行是一个整数N(2≤N≤100),表示同学的总数。个整数Ti(130≤Ti≤230)是第i位同学的身高(厘米)。输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。对于全部的数据,保证有n≤100。
2025-04-15 23:26:54
278
原创 登山(信息学奥赛一本通-1283)
五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?第一行:N (2 <= N <= 1000) 景点数;第二行:N个整数,每个景点的海拔。最多能浏览的景点数。
2025-04-14 21:47:32
92
原创 【例9.7】友好城市(信息学奥赛一本通-1263)
每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和北岸的一对友好城市的坐标。第1行,一个整数N(1≤N≤5000),表示城市数。仅一行,输出一个整数,表示政府所能批准的最多申请数。
2025-04-13 18:23:29
224
原创 拦截导弹(信息学奥赛一本通-1289)
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹。第二行包含N个整数,为导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数)。第一行是一个整数N(不超过15),表示导弹数。一个整数,表示最多能拦截的导弹数。
2025-04-11 17:41:17
241
原创 【例9.4】拦截导弹(Noip1999)(信息学奥赛一本通-1260)
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。第二行:要拦截所有导弹最少要配备的系统数。
2025-04-11 17:40:19
200
原创 怪盗基德的滑翔翼(信息学奥赛一本通-1286)
他希望尽可能多地经过不同建筑的顶部,这样可以减缓下降时的冲击力,减少受伤的可能性。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。第二行包含N个不同的整数,每一个对应一幢建筑的高度h(0<h<10000),按照建筑的排列顺序给出。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。对于每一组测试数据,输出一行,包含一个整数,代表怪盗基德最多可以经过的建筑数量。
2025-04-10 20:20:48
688
原创 【例9.6】挖地雷(信息学奥赛一本通-1262)
在一个地图上有n个地窖(n≤200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任意一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。xiyi //表示从xi可到yi,xi<yi。−kv //挖地雷的顺序。第二行:为依次每个地窖地雷的个数;第一行:地窖的个数;
2025-04-10 18:08:40
250
原创 三角形最佳路径问题(信息学奥赛一本通-1288)
从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的任务就是求出最佳路径上的数字之和。注意:路径上的每一步只能从一个数走到下一层上和它最近的下边(正下方)的数或者右边(右下方)的数。第一行为三角形高度100≥h≥1,同时也是最底层边的数字的数目。从第二行开始,每行为三角形相应行的数字,中间用空格分隔。最佳路径的长度数值。
2025-04-09 10:02:19
394
原创 最低通行费(信息学奥赛一本通-1287)
一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。样例中,最小值为109=1+2+5+7+9+12+19+21+33。后面N行,每行N个不大于100的整数,为网格上每个小方格的费用。第一行是一个整数,表示正方形的宽度N (1≤N<100);
2025-04-08 14:19:16
234
原创 放苹果(信息学奥赛一本通-1222)
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。第一行是测试数据的数目t(0≤t≤20)。以下每行均包含二个整数M和N,以空格分开。对输入的每组数据M和N,用一行输出相应的K。
2025-04-08 11:07:04
123
原创 马走日(信息学奥赛一本通-1219)
每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,0为无法遍历一次。第一行为整数T(T < 10),表示测试数据组数。马在中国象棋以日字形规则移动。
2025-04-08 10:33:10
184
原创 LETTERS(信息学奥赛一本通-1212)
给出一个row×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。第一行,输入字母矩阵行数R和列数S,1≤R,S≤20。最多能走过的不同字母的个数。接着输出R行S列字母矩阵。
2025-04-08 10:09:19
718
原创 病人排队(信息学奥赛一本通-1183)
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。第1行,输入一个小于100的正整数,表示病人的个数;按排好的看病顺序输出病人的ID,每行一个。3.非老年人按登记的先后顺序看病。1.老年人(年龄 ≥60。岁)比非老年人优先看病。
2025-04-05 01:37:34
309
原创 明明的随机数(信息学奥赛一本通-1184)
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。有2行,第1行为1个正整数,表示所生成的随机数的个数:N;第2行有N个用空格隔开的正整数,为所产生的随机数。
2025-04-05 01:11:44
124
原创 单词排序(信息学奥赛一本通-1185)
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。按字典序输出这些单词,重复的单词只输出一次。
2025-04-05 01:00:42
181
原创 出现次数超过一半的数(信息学奥赛一本通-1186)
给出一个含有n(0 < n <= 1000)个整数的数组,请找出其中出现次数超过一半的数。数组中的数大于-50且小于50。第二行包含n个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。如果存在这样的数,输出这个数;第一行包含一个整数n,表示数组大小;
2025-04-04 20:55:52
201
原创 统计字符数(信息学奥赛一本通-1187)
输出一行,包括出现次数最多的字符和该字符出现的次数,中间以一个空格分开。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。给定一个由a-z这26个字符组成的字符串,统计其中哪个字符出现的次数最多。输入包含一行,一个字符串,长度不超过1000。
2025-04-04 20:36:34
168
原创 Knight Moves(信息学奥赛一本通-1257)
输入n代表有个n×n的棋盘,输入开始位置的坐标和结束位置的坐标,问一个骑士朝棋盘的八个方向走马字步,从开始坐标到结束坐标可以经过多少步。第二行和第三行分别表示马的起始位置和目标位置(0..L−1)。马移动的最小步数,起始位置和目标位置相同时输出0。第一行是棋盘的大小L(4≤L≤300);首先输入一个n,表示测试样例的个数。每个测试样例有三行。
2025-04-04 20:10:34
360
原创 献给阿尔吉侬的花束(信息学奥赛一本通-1256)
阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行。阿尔吉侬在1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。每组数据的输出结果占一行。每一组数据的第一行包含了两个用空格分开的正整数R和C(2 ≤ R, C ≤ 200),表示地图是一个R×C的矩阵。
2025-04-04 19:53:00
395
原创 迷宫问题(信息学奥赛一本通-1255)
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。一个5 × 5的二维数组,表示一个迷宫。左上角到右下角的最短路径,格式如样例所示。
2025-04-04 19:24:01
357
原创 The Castle(信息学奥赛一本通-1250)
后面的m行,每行有n个整数,每个整数都表示平面图对应位置的方块的特征。一座城堡被分成m*n个方块(m≤50,n≤50),每个方块可有0~4堵墙(0表示无墙)。在这个问题中,输入的每个方块的数字 g[i][j] 用二进制位来表示该方块四个方向上是否有墙。平面图用一个数字表示一个方块(第1个房间用二进制1011表示,0表示无东墙,用十进制11表示)。室内的墙被定义两次: 例如方块(1,1)中的南墙也被位于其南面的方块(2,1)定义了一次。i = 1 时,1 << 1 为 0010,对应北墙。
2025-04-03 23:09:21
728
原创 Dungeon Master(信息学奥赛一本通-1248)
这题是一个三维的迷宫题目,其中用‘.’表示空地,‘#’表示障碍物,‘S’表示起点,‘E’表示终点,求从起点到终点的最小移动次数,解法和二维的类似,只是在行动时除了东南西北移动外还多了上下。这题用BFS解,每次去队首元素,如果是终点则输出结果移动的次数,否则,从该点开始分别向东南西北上下移动(如果可以走的话)并继续搜,如果到队列为空还没搜到解法,则说明无解。对于题目给出数据的含义就是输入l,r,c,分别代表迷宫有l层,每层长宽分别是c,r。前三个数,分别表示层数、一个面的长和宽,后面是每层的平面图。
2025-04-02 18:10:45
340
原创 红与黑(信息学奥赛一本通-1216)
每组数据的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。在接下来的H行中,每行包括W个字符。有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。对每组数据,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。当在一行中读入的是两个零时,表示输入结束。1)‘.’:黑色的瓷砖;2)‘#’:红色的瓷砖;
2025-03-28 14:23:12
527
原创 合影效果(信息学奥赛一本通-1182)
小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数,单位米),两个数据之间以空格分隔。n个浮点数,模拟站好队后,拍照者眼中从左到右每个人的身高。第一行是人数n(2≤n≤40,且至少有1个男生和1个女生)。位,相邻两个数之间用单个空格隔开。
2025-03-26 14:27:27
301
原创 整数奇偶排序(信息学奥赛一本通-1181)
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。给定10个整数的序列,要求对其重新排序。1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。
2025-03-26 11:35:09
183
原创 分数线划定(信息学奥赛一本通-1180)
面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m×150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。第一行,两个整数n,m(5≤n≤5000,3≤m≤n),中间用一个空格隔开,其中 n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。
2025-03-26 11:23:11
201
原创 奖学金(信息学奥赛一本通-1179)
期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。第j行的3个数字依次表示学号为 j−1 的学生的语文、数学、英语的成绩。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和) ,但学号为7的学生语文成绩更高一些。
2025-03-26 11:04:18
392
原创 成绩排序(信息学奥赛一本通-1178)
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。第一行为n (0 < n < 20),表示班里的学生数目;
2025-03-26 10:51:20
216
原创 奇数单增序列(信息学奥赛一本通-1177)
给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。第2行为 N 个正整数,其间用空格间隔。
2025-03-26 10:43:25
219
原创 谁考了第k名(信息学奥赛一本通-1176)
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)
2025-03-26 10:34:35
178
原创 【例2.2】车厢重组(信息学奥赛一本通-1310)
在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。有两行数据,第一行是车厢总数N(不大于10000),第二行是N个不同的数表示初始的车厢顺序。一个数据,是最少的旋转次数。
2025-03-26 10:23:51
134
原创 【例3.4】昆虫繁殖(信息学奥赛一本通-1312)
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵),问过z个月以后,共有成虫多少对?过z个月以后,共有成虫对数。
2025-03-25 14:57:28
371
1
原创 【例3.5】位数问题(信息学奥赛一本通-1313)
在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。输出有多少个数中有偶数个数字3。读入一个数N(N≤1000)。
2025-03-25 14:29:25
362
原创 流感传染(信息学奥赛一本通-1191)
有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的一行是一个整数m,m不超过100。输出第m天,得流感的人数。
2025-03-25 13:37:48
361
原创 最大子矩阵(信息学奥赛一本通-1224)
输入是一个N×N的矩阵。输入的第一行给出N(0<N<=100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。已知矩阵中整数的范围都在[−127,127]。已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1×1)子矩阵。比如,如下4×4的矩阵09−4−1−2218−7−6−40021−2的最大子矩阵是9−4−1218这个子矩阵的大小是15。
2025-03-25 10:51:15
162
原创 An Easy Problem(信息学奥赛一本通-1223)
举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。输出若干行对应的值。
2025-03-24 23:59:29
310
原创 【例6.5】活动选择(信息学奥赛一本通-1323)
学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。现在给出n个活动使用礼堂的起始时间begini和结束时间endi(begini<endi),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。接下来的n行,每行两个整数,第一个begini,第二个是endi(begini<endi≤32767)。第一行一个整数n(n≤1000);输出最多能安排的活动个数。
2025-03-24 23:47:58
363
原创 【例6.6】整数区间(信息学奥赛一本通-1324)
首行包括区间的数目n,1≤n≤10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0≤a≤b≤10000。2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。第一行集合元素的个数,对于每一个区间都至少有一个整数属于该集合,且集合所包含元素数目最少。,它们是某一个区间的开始值和结束值。1.读取闭区间的个数及它们的描述;
2025-03-24 23:32:43
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人