![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
题解
文章平均质量分 77
各大oj、比赛等题目的题解
xishanmeigao
这个作者很懒,什么都没留下…
展开
-
树形DP/换根DP 习题
树形DP,树形背包,换根DP的习题讲解原创 2023-03-23 09:31:41 · 314 阅读 · 0 评论 -
莫比乌斯反演 习题
莫比乌斯反演习题讲解及代码原创 2023-04-03 15:42:51 · 459 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1149:最长单词2
【题目描述】一个以‘.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式。【输入】一个以‘.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。【输出】该句子中最长的单词。如果多于一个,则输出第一个。【输入样例】I am a student of Peking University.【输出样例】University代码如下#include<bits/stdc++.h>using namespace std;int原创 2020-05-24 19:16:37 · 2636 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1147:最高分数的学生姓名
【题目描述】输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。【输入】第一行输入一个正整数N(N ≤ 100),表示学生人数。接着输入N行,每行格式如下: 分数 姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。数据保证最高分只有一位同学。【输出】获得最高分数同学的姓名。【输入样例】587 lilei99 hanmeimei97 lily96 lucy77 jim【输出样例】hanmeimei原创 2020-05-24 19:13:47 · 2254 阅读 · 3 评论 -
信息学奥赛一本通c++语言——1146:判断字符串是否为回文
【题目描述】输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。【输入】输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。【输出】如果字符串是回文,输出yes;否则,输出no。【输入样例】abcdedcba【输出样例】yes代码如下#include<bits/stdc++.h>using namespace std;int main(){ char a[5000]; scanf("%s",a); int n=strlen(a)原创 2020-05-24 19:09:11 · 1297 阅读 · 0 评论 -
信息学奥赛一本通——1145:字符串p型编码
【题目描述】给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此我们说122344111的p型编码串为1122132431;类似的道理,编码串101可以用来描述1111111111;00000000000可描述为"11个0",因此它的p型编码串即为110;100200300可描述为"1个1、2个 0、1个2、2个0、1个3、2个0",因此它的p型编码串为112012原创 2020-05-15 16:19:53 · 1069 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1144:单词翻转
【题目描述】输入一个句子(一行),将句子中的每一个单词翻转后输出。【输入】只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。【输出】翻转每一个单词后的字符串,单词之间的空格需与原文一致。【输入样例】hello world【输出样例】olleh dlrow代码如下#include<bits/stdc++.h>using namespace std;int main(){ char a[500]; gets(a); //输入字符串 int t=0,su原创 2020-05-14 14:48:16 · 2767 阅读 · 3 评论 -
信息学奥赛一本通c++语言——1143:最长最短单词
【题目描述】输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。试输出第1个最长的单词和第1个最短单词。【输入】一行句子。【输出】第1行,第一个最长的单词。第2行,第一个最短的单词。【输入样例】I am studying Programming language C in Peking University【输出样例】ProgrammingI【提示】提示:如果所有单词长度相同,那么第一个原创 2020-05-13 15:46:17 · 7775 阅读 · 4 评论 -
信息学奥赛一本通c++语言——1142:单词的长度
【题目描述】输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。注意:如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。【输入】一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。【输出】依次输出对应单词的长度,之间以逗号间隔。【输入样例】She was born in 1990-01-02 and from Beijing city.【输出样例】3,原创 2020-05-13 10:50:23 · 3192 阅读 · 0 评论 -
信息学奥赛一本通——1141:删除单词后缀
【题目描述】给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。【输入】输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。【输出】输出按照题目要求处理后的单词。【输入样例】referer【输出样例】refer#include<bits/stdc++.h>using namespace std;int main(){ char a[32]; scanf("%s",a);原创 2020-05-13 09:33:20 · 879 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1140:验证子串
【题目描述】输入两个字符串,验证其中一个串是否为另一个串的子串。【输入】输入两个字符串, 每个字符串占一行,长度不超过200且不含空格。【输出】若第一个串s1是第二个串s2的子串,则输出(s1) is substring of (s2)否则,若第二个串s2是第一个串s1的子串,输出(s2) is substring of (s1)否则,输出 No substring。【输入样例】abcdddncabca【输出样例】abc is substring of dddncabca#incl原创 2020-05-12 13:31:10 · 1791 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1138:将字符串中的小写字母转换成大写字母
【题目描述】给定一个字符串,将其中所有的小写字母转换成大写字母。【输入】输入一行,包含一个字符串(长度不超过100,可能包含空格)。【输出】输出转换后的字符串。【输入样例】helloworld123Ha【输出样例】HELLOWORLD123HA代码如下#include<bits/stdc++.h>using namespace std;int main(){...原创 2020-05-08 10:10:43 · 1701 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1137:加密的病历单
【题目描述】小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)1.原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz...原创 2020-05-07 10:15:35 · 1063 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1136:密码翻译
【题目描述】在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串。【输入】输入一行,包含一个字符串,长度小于80个字符。【输出】输出...原创 2020-05-05 11:59:50 · 3323 阅读 · 0 评论 -
信息学奥赛一本通——1135:配对碱基链
【题目描述】脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶©。我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。【输入】一个字符串,表示一条碱基链。这个字符串只含有大写字母A、T、G、...原创 2020-05-05 11:40:34 · 1656 阅读 · 0 评论 -
信息学奥赛一本通——1134:合法C标识符查
【题目描述】给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。C语言标识符要求:1.非保留字;2.只包含字母、数字及下划线(“_”)。3.不以数字开头。【输入】一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。【输出】一行,如果它是C语言的合法标识符,则输出yes,否则输出no。【输入样例】RKP...原创 2020-05-04 20:50:13 · 1085 阅读 · 1 评论 -
信息学奥赛一本通——1133:输出亲朋字符串
【题目描述】编写程序,求给定字符串s的亲朋字符串s1。亲朋字符串s1定义如下:给定字符串s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符; 给定字符串s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到给定字符串s的倒数第二个字符。亲朋字符串的最后一个字符由给定字符串s的最后一个字符ASCII值加s的第一个字符的ASCII值。【...原创 2020-05-04 20:34:15 · 2666 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1132:石头剪子布
【题目描述】石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。游戏规则:石头打剪刀,布包石头,剪刀剪布。现在,需要你写一个程序来判断石头剪子布游...原创 2020-05-03 17:09:44 · 1685 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1131:基因相关性
【题目描述】为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。现比对两条长度相同的DNA序列。定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。【输入】有三行,第一...原创 2020-05-03 16:47:17 · 1395 阅读 · 0 评论 -
信息学奥赛一本通——1130:找第一个只出现一次的字符
【题目描述】给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。【输入】一个字符串,长度小于100000。【输出】输出第一个仅出现一次的字符,若没有则输出no。【输入样例】abcabd【输出样例】c代码如下#include<bits/stdc++.h>using namespace std;char a[100000];boo...原创 2020-04-30 11:31:37 · 3189 阅读 · 1 评论 -
信息学奥赛一本通c++语言——1129:统计数字字符个数
【题目描述】输入一行字符,统计出其中数字字符的个数。【输入】一行字符串,总长度不超过255。【输出】输出为1行,输出字符串里面数字字符的个数。【输入样例】Peking University is set up at 1898.【输出样例】4这道题难就难在怎么判断数字上但我们只要用到ASCII码就可以了在ASCII码中数字1~9分别对应48 ~57知道了这个我们就好办了...原创 2020-04-29 11:16:52 · 4222 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1128:图像模糊处理
【题目描述】给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:1.四周最外侧的像素点灰度值不变;2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。【输入】第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空...原创 2020-04-27 10:19:11 · 756 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1127:图像旋转
【题目描述】输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。【输入】第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。【输出】m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。【输入样例】3 3...原创 2020-04-26 15:41:03 · 2331 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1124:矩阵加法
【题目描述】输入两个n行m列的矩阵A和B,输出它们的和A+B。【输入】第一行包含两个整数n和m,表示矩阵的行数和列数(1≤n≤100,1≤m≤100)。接下来n行,每行m个整数,表示矩阵A的元素。接下来n行,每行m个整数,表示矩阵B的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。【输出】n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。...原创 2020-04-24 10:08:04 · 681 阅读 · 0 评论 -
信息学奥赛一本通c++语言1123:图像相似度
【题目描述】给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。【输入】第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。1≤m≤100, 1≤n≤100。之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻...原创 2020-04-23 10:16:41 · 1552 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1122:计算鞍点
【题目描述】给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。11 3 5 6 912 4 7 8 1010 5 6 9 118 6 4 7 215 10 11 20 25【输入】输入包含一个5行5列的矩阵。【输出】...原创 2020-04-22 19:35:13 · 3996 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1121:计算矩阵边缘元素之和
【题目描述】输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。【输入】第一行分别为矩阵的行数m和列数n(m<100,n<100),两者之间以一个空格分开。接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。【输出】输出对应矩阵的边缘元素和。【输入样例】3 33 4 13 7 12 ...原创 2020-04-22 10:17:21 · 1418 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1120:同行列对角线的格
【题目描述】输入三个自然数N,i,j(1≤i≤n,1≤j≤n),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,当n=4,i=2,j=3时,输出的结果是:(2,1) (2,2) (2,3) (2,4) 同一行上格子的位置(1,3) (2,3) (...原创 2020-04-21 17:49:34 · 1784 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1119:矩阵交换行
【题目描述】给定一个5×5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。【输入】输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。第6行包含两个整数m、n,以一个空格分开(1≤m,n≤5)。【输出】输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。【输入样例】1 2 2 1 25...原创 2020-04-21 11:18:54 · 2649 阅读 · 0 评论 -
信息学奥赛一本通c++一样——1118:铺地毯
【题目描述】为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n张地毯,编号从1到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。输入输出样例1说明:如下图,...原创 2020-04-17 11:15:48 · 942 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1117:整数去重
【题目描述】给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。【输入】输入包含两行:第一行包含一个正整数n(1≤n≤20000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于10、小于等于5000。【输出】输出只有一行,按照输入的顺序输出其中不重复的数字...原创 2020-04-15 11:12:34 · 436 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1116:最长平台
【题目描述】已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6中1,2−2,3−3−3,4,5−5,6都是平台。试编写一个程序,接收一个数组,把这个数组最长的平台找出来。在上面的例子中3−3−3就是最长的平台。【输入】第一行有一个整数n,为数组元素的个数。第二行有n个整数,...原创 2020-04-15 10:01:04 · 4942 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1115:直方图
【题目描述】给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。假设 Fmax(Fmax<10000)是数组里最大的数,那么我们只统计{0,1,2…Fmax}里每个数出现的次数。【输入】第一行n是数组的大小。1≤n≤10000。紧接着一行是数组的n个元素。【输出】按顺序输出每个数的出现次数,一行一个数。如果没有出现过,则输出0。对于例子中的数组,最大...原创 2020-04-14 17:45:00 · 754 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1114:白细胞计数
【题目描述】医院采样了某临床病例治疗期间的白细胞数量样本n份,用于分析某种新抗生素对该病例的治疗效果。为了降低分析误差,要先从这n份样本中去除一个数值最大的样本和一个数值最小的样本,然后将剩余n−2个有效样本的平均值作为分析指标。同时,为了观察该抗生素的疗效是否稳定,还要给出该平均值的误差,即所有有效样本(即不包括已扣除的两个样本)与该平均值之差的绝对值的最大值。现在请你编写程序,根据提供的n...原创 2020-04-14 14:09:49 · 4742 阅读 · 1 评论 -
信息学奥赛一本通c++语言——1112:最大值和最小值的差
【题目描述】输出一个整数序列中最大的数和最小的数的差。【输入】第一行为M,表示整数个数,整数个数不会大于10000;第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。【输出】输出M个数中最大值和最小值的差。【输入样例】52 5 7 4 2【输出样例】5代码如下#include<bits/stdc++.h>using namespace std...原创 2020-04-13 11:59:09 · 2088 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1110:查找特定的值
【题目描述】在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。【输入】第一行包含一个正整数n,表示序列中元素个数。1 ≤n≤ 10000。第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。【输出】若序列中存在x,输出x第一次出现的下标;否则输...原创 2020-04-11 19:24:11 · 2430 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1109:开光灯
【题目描述】假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。请问:当...原创 2020-04-10 22:00:07 · 1057 阅读 · 0 评论 -
洛谷计算机科学教育新生态——P4956 [COCI2017-2018#6] Davor
题目描述After successfully conquering the South Pole, Davor is preparing for new challenges. Next up is the Arctic expedition to Siberia, Greenland and Norway. He begins his travels on 31 December 2018, ...原创 2020-04-10 13:48:27 · 492 阅读 · 0 评论 -
洛谷计算机科学教育新生态——P1307 数字反转
这道题在一本通里也有出现过,不过我忘了是在哪,所以就把它当作洛谷的题解发出来题目描述给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。输入格式一个整数 NN输出格式一个整数,表示反转后的新数。输入输出样例输入 #1123输出 #1321输入 #2-380输出 #2...原创 2020-04-09 10:08:34 · 233 阅读 · 0 评论 -
信息学奥赛一本通c++语言——1103:陶陶摘苹果
【题目描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。【输入】包括两行数据。第一行包含10个100到200之间(包...原创 2020-04-08 19:00:45 · 533 阅读 · 0 评论