
NOIP
全国青少年信息学奥林匹克联赛试题
H_Cisco
路在脚下,只要走起来离目标会近一点。
展开
-
C++(29)——case
目录01倒序输出02斐波那契数列03互换二维数组元素04截取字符串05绝对值差最小06冒泡排序07选择排序08选择排序-标准09三个元素一行输出10最大的与第一个调换最小的与最后一个调换11闰年12整数中最大值最小值及其下标13把数按顺序插入到数组中14最大公约数和最大公倍数15.1+12+123+123416.x的y次方17通过宏交换两个数的值18.19判断是否为素数20.反序存放21判断字符串是否回文22最大公约数原创 2021-03-29 12:22:28 · 10480 阅读 · 31 评论 -
动规(25)-并查集基础题——局域网(net)
某个局域网内有n(n原创 2023-03-24 09:32:46 · 8746 阅读 · 0 评论 -
动规(24)-并查集基础题——关押罪犯
如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。公务繁忙的Z 市长只会去看列表中的第一个事件的影响力,如果影响很坏,他就会考虑撤换警察局长。他准备将罪犯们在两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。接下来的M 行每行为三个正整数aj,bj,cj,表示aj 号和bj 号罪犯之间存在仇恨,其怨气值为cj。罪犯之间的怨气值如下面左图所示,右图所示为罪犯的分配方法,市长看到的冲突事件。对于70%的数据有N≤2000,M≤50000。原创 2022-09-25 08:57:22 · 10058 阅读 · 33 评论 -
动规(23)-并查集基础题——家谱
现代的人对于本家族血统越来越感兴趣,现在给出充足的父子关系,请你编写程序找到某个人的最早的祖先。输入文件由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系由二行组成,用。按照输入文件的要求顺序,求出每一个要找祖先的人的祖先,格式:本人的名字。只是一个普通的并查集问题,然而字符串的处理挺麻烦,然后遇到了神奇的。需要注意的是,给名字的编号必须是它第一次出现的编号。的形式表示要求该人的最早的祖先;的形式描写一组父子关系中的儿子的名字;的形式描写一组父子关系中的父亲的名字,用。人,家谱中的记载不超过。原创 2022-09-25 08:55:42 · 9276 阅读 · 19 评论 -
动规(22)-并查集基础题——CD收藏 cd.cpp(并查集)
(如果没有说明则认为是没有分辨出来,为不同歌手)现在他列了一个表记录哪些专辑是同一歌手,但他面对着这一堆记录不知如何处理,请你告诉他到底他有多少个歌手的专辑。n表示CD的个数(标号分别为1到n),m表示约翰所分辨出来的共有几组。接下来的m行每一行有两个数a,b。返回指定元素出现的次数。原创 2022-09-12 08:06:49 · 11126 阅读 · 14 评论 -
动规(21)-并查集基础题——搭配购买
并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。觉得云朵很美,决定去山上的商店买一些云朵。对于每组数据,输出一行,表示可以获得的最大价值。的钱有限,所以他希望买的价值越多越好。输入有多组数据,每组数据第。原创 2022-09-12 08:05:29 · 11099 阅读 · 15 评论 -
动规(20)-并查集基础题——打击犯罪
他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度唯一由集团内的犯罪团伙数量确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为。现在当地警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过。行每行有若干个正整数,第一个整数表示该行除第一个外还有多少个整数,若第。个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为。两个团伙可以直接联系。原创 2022-09-12 08:04:34 · 11295 阅读 · 15 评论 -
动规(19)-并查集基础题——城镇道路
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。行给出两个正整数,分别是城镇数目。两个城市之间可以有多条道路相通。输出最少还需要建设的道路数目。原创 2022-09-12 08:03:05 · 16253 阅读 · 28 评论 -
动规(18)-并查集基础题——团伙
条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多少个团伙?所有是朋友的人组成一个团伙。包含一个整数,即可能的最大团伙数。条信息,内容为以下两者之一“我朋友的朋友是我的朋友;我敌人的敌人是我的朋友;,第二行包含一个整数。......原创 2022-07-28 18:43:14 · 13505 阅读 · 24 评论 -
动规(16)-并查集基础题——格子游戏
他们的游戏实在是太长了!他们甚至在游戏中都不知道谁赢得了游戏。于是请你写一个程序,帮助他们计算他们是否结束了游戏?,代表了画线的起点坐标,接着用空格隔开一个字符,假如字符是。)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了。输入数据不会有重复的边且保证正确。输出一行在第几步的时候结束。直到围成一个封闭的圈(面积不必为。玩了一个古老的游戏首先画一个。步之后也没有结束,则输出一行“,则是向下连一条边,如果是。输入数据第一行为两个整数。行,每行首先有两个数字。...原创 2022-07-28 18:40:55 · 12047 阅读 · 21 评论 -
动规(16)-并查集基础题——亲戚(Relations)
或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥的表姐的孙子。如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及。请写一个程序,对于我们的关心的亲戚关系的提问,以最快的速度给出答案。为了将问题简化,你将得到一些亲戚关系的信息,如同。从这些信息中,你可以推出。在这种情况下,最好的帮手就是计算机。为问题涉及的人的个数。...原创 2022-07-28 14:31:34 · 12183 阅读 · 19 评论 -
动规(15)-最低通行费
描述一个商人穿过一个 N*N 的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。输入第一行是一个整数,表示正方形的宽度N (1 ...原创 2022-06-09 15:23:10 · 18407 阅读 · 0 评论 -
动规(14)-三角形最佳路径问题
描述如下所示的由正整数数字构成的三角形:73 88 1 02 7 4 44 5 2 6 5从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的任务就是求出最佳路径上的数字之和。注意:路径上的每一步只能从一个数走到下一层上和它最近的下边(正下方)的数或者右边(右下方)的数。输入第一行为三角形高度100>=h>=1,同时也是最底层边的数字的数目。从第二行开始,每行为三角形相应行的数字,中间用空格分隔。输出最佳路径的长度数值。样例原创 2022-06-09 15:21:36 · 15293 阅读 · 0 评论 -
动规(13)-数据包的调度机制&山区建小学(试改成轮换数组)
目录一、数据包的调度机制二、山区建小学(试改成轮换数组)一、数据包的调度机制描述随着 Internet的迅猛发展,多媒体技术和电子商务应用日益广泛,Internet上的服务质量(QoS,Qualityof Service)问题已越来越受到重视。网络中采用的数据包调度机制与网络的服务质量 QoS 有着密切的关系。研究表明传统的基于队列的调度机制已不能满足网络服务质量QoS 的需求。服务质量 QoS 取决于数据包的延迟。每一个数据包都有一个延迟惩罚值。由于数据包承载的数据不同,不原创 2022-05-02 17:47:14 · 14690 阅读 · 30 评论 -
动规(12)-开餐馆
描述北大信息学院的同学小明毕业之后打算创业开餐馆.现在共有n 个地点可供选择。小明打算从中选择合适的位置开设一些餐馆。这 n 个地点排列在同一条直线上。我们用一个整数序列m1, m2, ... mn 来表示他们的相对位置。由于地段关系,开餐馆的利润会有所不同。我们用pi 表示在mi 处开餐馆的利润。为了避免自己的餐馆的内部竞争,餐馆之间的距离必须大于k。请你帮助小明选择一个总利润最大的方案。输入标准的输入包含若干组测试数据。输入第一行是整数T (1 <= T <= 1000)原创 2022-02-08 13:41:43 · 17907 阅读 · 30 评论 -
动规(11)-踩方格
描述有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a.每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b.走过的格子立即塌陷无法再走第二次;c.只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。输入允许在方格上行走的步数n(n <= 20)输出计算出的方案数量样例输入2样例输出7#include <iostream&g...原创 2022-01-01 13:58:57 · 21404 阅读 · 32 评论 -
动规(10)-宠物小精灵之收服(背包)
描述宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事。一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵。小智也想收服其中的一些小精灵。然而,野生的小精灵并不那么容易被收服。对于每一个野生小精灵而言,小智可能需要使用很多个精灵球才能收服它,而在收服过程中,野生小精灵也会对皮卡丘造成一定的伤害(从而减少皮卡丘的体力)。当皮卡丘的体力小于等于0时,小智就必须结束狩猎(因为他需要给皮卡丘疗伤),而使得皮卡丘体力小于等于0的野生小精灵也不会被小智收服。当小智的精灵球用完时,狩猎也宣告结束原创 2022-01-01 13:56:15 · 20884 阅读 · 4 评论 -
动规(9)-怪盗基德的滑翔翼
描述怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱。假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同。初始时,怪盗基德可以在任何一幢建筑的顶端。他可以选择一个方向逃跑,但是不能中途改变方向(因为中森警部原创 2021-12-21 16:39:14 · 14241 阅读 · 22 评论 -
动规(8)-移动路线
描述×桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩原创 2021-12-14 09:53:15 · 14106 阅读 · 17 评论 -
动规(7)-最长公共子上升序列
描述给定两个整数序列,写一个程序求它们的最长上升公共子序列。当以下条件满足的时候,我们将长度为N的序列S1 , S2 , . . . , SN 称为长度为M的序列A1 , A2 , . . . , AM 的上升子序列:存在 1 <= i1 < i2 < . . . < iN <= M ,使得对所有 1 <= j <=N,均有Sj = Aij,且对于所有的1 <= j < N,均有Sj < Sj+1。输入每个序列用四行表示,第一行是长原创 2021-12-08 10:11:57 · 18634 阅读 · 41 评论 -
动规(6)-登山
描述五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?输入Line 1: N (2 <= N <= 1000) 景点数Line 2: N个整数,每个景点的海拔输出最多能浏览的景点原创 2021-12-04 13:57:30 · 19211 阅读 · 24 评论 -
C++(39)——与指定数字相同的数的个数
总时间限制:1000ms内存限制:65536kB描述输出一个整数序列中与指定数字相同的数的个数。输入输入包含三行:第一行为N,表示整数序列的长度(N <= 100);第二行为N个整数,整数之间以一个空格分开;第三行包含一个整数,为指定的整数m。输出输出为N个数中与m相同的数的个数。样例输入32 3 22样例输出2#include<iostream>using namespace std;int main..原创 2021-12-03 11:31:08 · 15301 阅读 · 6 评论 -
C++(38)——画矩形
总时间限制:1000ms内存限制:65536kB描述根据参数,画出矩形。输入输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。输出输出画出的图形。样例输入7 7 @ 0样例输出@@@@@@@@ @@ @@ @@ @@ @@@@@@@@..原创 2021-12-03 11:29:16 · 19033 阅读 · 20 评论 -
C++(37)——骑车与走路
总时间限制: 1000ms 内存限制: 65536kB描述在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。输入输入一行,包含一个整数,表示一次办事要行走的距离,单位为米。输出输出一行,如果骑车快,输出一行"Bike";如果走路快,输出一行"W原创 2021-10-28 16:19:33 · 14375 阅读 · 21 评论 -
动规(4)-公共子序列
描述我们称序列Z = < z1, z2, ..., zk >是序列X = < x1, x2, ..., xm >的子序列当且仅当存在 严格上升 的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = < a, b, f, c > 是X = < a, b, c, f, b, c >的子序列。现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找到一个最长的序列原创 2021-07-31 17:31:26 · 13299 阅读 · 3 评论 -
动规(3)-采药(背包)
描述辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入输入的第一行有两个整数T(1 <= T <= 1000)和原创 2021-07-31 17:30:27 · 13265 阅读 · 1 评论 -
C++(36)——有一门课不及格的学生
总时间限制:1000ms内存限制:65536kB描述给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。输入一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。输出若该生恰好有一门课不及格,输出1;否则输出0。样例输入50 80样例输出1#include<iostream>using namespace std;int main(){ int a,b; cin>>..原创 2021-07-04 23:07:05 · 17493 阅读 · 12 评论 -
C++(35)——判断一个数能否同时被3和5整除
总时间限制:1000ms内存限制:65536kB描述判断一个数n 能否同时被3和5整除输入输入一行,包含一个整数n。( -1,000,000 < n < 1,000,000)输出输出一行,如果能同时被3和5整除输出YES,否则输出NO样例输入15样例输出YES#include<iostream>using namespace std;int main(){ int a; cin>>a; if((..原创 2021-07-04 23:05:45 · 15189 阅读 · 6 评论 -
C++(34)——收集瓶盖赢大奖
总时间限制:1000ms内存限制:65536kB描述某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果你拥有10个印有“幸运”、或20个印有“鼓励”的瓶盖,就可以兑换一个神秘大奖。现分别给出你拥有的印有“幸运”和“鼓励”的瓶盖数,判断是否可以去兑换大奖。输入一行,包含两个整数,分别是印有“幸运”和“鼓励”的瓶盖数,用一个空格隔开。输出一行。若可以兑换大奖,输出1,否则输出0。样例输入11 19样例输出1#include<i..原创 2021-07-04 23:03:45 · 14690 阅读 · 4 评论 -
动规(2)-最大子矩阵
描述已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。比如,如下4 * 4的矩阵0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2的最大子矩阵是9 2-4 1-1 8这个子矩阵的大小是15。输入输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给原创 2021-05-19 21:21:08 · 11458 阅读 · 1 评论 -
动规(1)-最长上升子序列
动规1:最长上升子序列描述一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子原创 2021-05-19 21:19:55 · 11765 阅读 · 1 评论 -
C++(33)—判断是否为两位数
总时间限制:1000ms内存限制:65536kB描述判断一个正整数是否是两位数(即大于等于10且小于等于99)。输入一个正整数,不超过1000。输出一行。若该正整数是两位数,输出1,否则输出0。样例输入54样例输出1#include<iostream>using namespace std;int main(){ int a; cin>>a; if((a>=10)&&(a<...原创 2021-05-19 21:17:27 · 14965 阅读 · 0 评论 -
C++(32)—整数大小比较
总时间限制:1000ms内存限制:65536kB描述输入两个整数,比较它们的大小。输入一行,包含两个整数x和y,中间用单个空格隔开。0 <= x < 2^32, -2^31 <= y < 2^31。输出一个字符。若x > y,输出 > ;若x = y,输出 = ;若x < y,输出 < ;样例输入1000 100样例输出>#include<iostream>us...原创 2021-05-19 21:14:30 · 14681 阅读 · 0 评论 -
C++(31)—奇偶ASCII值判断
总时间限制:1000ms内存限制:65536kB描述任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输出NO例如,字符A的ASCII值是65,则输出YES,若输入字符B(ASCII值是66),则输出NO输入输入一个字符输出如果其ASCII值为奇数,则输出YES,否则,输出NO样例输入A样例输出YES#include <cstdio>#include <iostream>using n...原创 2021-05-19 21:13:20 · 11502 阅读 · 0 评论 -
C++(30)—奇偶数判断
总时间限制:1000ms内存限制:65536kB描述给定一个整数,判断该数是奇数还是偶数。输入输入仅一行,一个大于零的正整数n。输出输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。样例输入5样例输出odd#include<iostream>#include<cstdio>using namespace std;int main(){ int n; cin>>n; if(n...原创 2021-05-19 21:12:03 · 13063 阅读 · 6 评论 -
C++(28)——输出绝对值
总时间限制:1000ms内存限制:65536kB描述输入一个浮点数,输出这个浮点数的绝对值。输入输入一个浮点数,其绝对值不超过10000。输出输出这个浮点数的绝对值,保留到小数点后两位。样例输入-3.14样例输出3.14#include<iostream>#include<cstdio>using namespace std;int main(){ float x; cin>>x; i...原创 2021-02-14 20:45:37 · 13793 阅读 · 4 评论 -
C++(27)——判断数正负
总时间限制:1000ms内存限制:65536kB描述给定一个整数N,判断其正负。输入一个整数N(-109<= N <= 109)输出如果N > 0, 输出positive;如果N = 0, 输出zero;如果N < 0, 输出negative样例输入1样例输出positive#include<iostream>using namespace std;int main(){ long...原创 2021-02-14 20:44:15 · 10219 阅读 · 0 评论 -
C++(26)——计算2的幂
总时间限制:1000ms内存限制:65536kB描述给定非负整数n,求2n。输入一个整数n。0 <= n < 31。输出一个整数,即2的n次方。样例输入3样例输出8#include<iostream>#include<cstdio>using namespace std;int n,i;int main(){ int mul=1; cin>>n; for(i=1;i<=n;..原创 2020-10-08 16:15:54 · 12923 阅读 · 1 评论 -
C++(25)——A*B问题
总时间限制:1000ms内存限制:65536kB描述输入两个正整数A和B,求A*B。输入一行,包含两个正整数A和B,中间用单个空格隔开。1 <= A,B <= 50000。输出一个整数,即A*B的值。样例输入3 4样例输出12提示注意乘积的范围和数据类型的选择#include<stdio.h>int main(){int a,b; scanf("%d%d",&a,&b); p..原创 2020-10-08 16:14:31 · 11667 阅读 · 0 评论 -
C++(24)——计算三角形面积
总时间限制:1000ms内存限制:65536kB描述平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。输入输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。输出输出也是一行,输出三角形的面积,精确到小数点后两位。样例输入0 0 4 0 0 3样例输出6.00提示海伦公式#include<cstdio> ..原创 2020-10-08 16:12:52 · 10628 阅读 · 0 评论