初赛题解
文章平均质量分 89
解答信奥初赛问题
君义_noip
五道口职业技术学院毕业
信息学奥赛教练
小说作者
展开
-
# CSP-J 2023 第一轮试题(初赛)
答:选B。声明常量的格式是 const 数据类型 常量名 = 常量值;123456708076543218222222218211111118221111118222222118答:选D列竖式,两数相加,逢8进1。123456700765432122222211答:选A。考察联合体union。原创 2023-09-23 15:18:42 · 1834 阅读 · 2 评论 -
CSP-J 2023 入门级 第一轮 完善程序(2)
i为0时,str1的前0个字符转变为str2的前j个字符的操作方案为j次插入,操作次数为j。j为0时,str1的前i个字符转变为str2的前0个字符的操作方案为i次删除,操作次数为i。就是str1的前i-1个字符转变为str2的前j-1个字符的最少操作次数,(4)填B。,那么接下来要将str1的前i-1个字符转变为str2的前j-1个字符,(5)填C。指表示str1的前i个字符转变为str2的前j个字符的最少操作次数。就是最后一次进行插入、或删除、或修改时的最少操作次数。如果str1第i字符。原创 2023-09-22 21:30:06 · 659 阅读 · 0 评论 -
CSP-J 2023 入门级 第一轮 完善程序(1)
也就是说如果丢失的数字是n+1个数字中的第1个或最后一个,find_missing函数会返回(5)处应该填的值,此时整个序列就是连续的。while循环跳出后,left或right的值就是找到的是"大于缺失数字"的最小值的最小下标,该下标就是上表中的m,缺失的值应该是。该题要找的是缺失的数字,那么二分查找的条件就可以是“大于缺失数字”,二分查找后找到的是“大于缺失数字的最小值的最小下标”。如果去掉的数字就是第一个数字s,或最后一个数字,整个序列是连续的序列,无论mid为何值,都满足。原创 2023-09-22 21:10:54 · 634 阅读 · 1 评论 -
CSP-J 2023 入门级 第一轮 阅读程序(3)
如果n是2,第一项是4的所有因数1,2,4的平方和,是21。第二项是2的所有因数1,2的平方和5的平方为25。27. 如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )27. 如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )30. 如果输入的n为质数p的平方,那么solve2(n)的返回值为( )30. 如果输入的n为质数p的平方,那么solve2(n)的返回值为( )因此solve2(n)求的是n的所有因数的平方和。的所有因数的平方和。原创 2023-09-21 21:49:53 · 444 阅读 · 0 评论 -
CSP-J 2023 入门级 第一轮 阅读程序(2)
f函数求x与y的最长公共子序列的长度,两字符串最长公共子序列的长度不会大于两字符串中任意一个字符串,最长时也就是与两字符串中更短的字符串一样长。当x与y相同时,x+x中一定存在子串y(即子串x),子串就是子序列,所以x+x与y的最长公共子序列的长度就是y的长度,g函数返回真。如果输入的x与y长度相等(空字符串无法输入,字符串长度最小为1),在g函数中调用的是f(x+x, y),运行到函数内部,主函数,输入x,y字符串,输出x+x是否存在一个子序列是y字符串,如果存在输出1,否则输出0。原创 2023-09-21 21:01:30 · 538 阅读 · 0 评论 -
CSP-J 2023 入门级 第一轮 阅读程序(1)
主函数中前两句是用于设定浮点数输出格式,输出时固定保留4位小数,最后一位四舍五入,不足4位则补0。很明显,a,b,c是三角形的三条边,s是半周长,f函数为使用海伦公式求三角形的面积。16. 当输入为"2 2 2"时,输出为"1.7321"( )16. 当输入为"2 2 2"时,输出为"1.7321"( )运行这两句后,设置了输出浮点数的格式为保留4位小数输出。20. 当输入为"5 12 13"时,输出为( )19. 当输入为"3 4 5"时,输出为( )19. 当输入为"3 4 5"时,输出为( )原创 2023-09-21 18:23:06 · 862 阅读 · 2 评论 -
CSP-J 2020 入门级 第一轮 完善程序(2)
明显这是数组填充的过程,p是数组中已有的元素个数,填充到下标0~p-1。ans是选择的区间数量,r为上文提到的关注点(上一个选择的区间的右端点),q是数组A的下标,初值为0。要想选择“包含关注点的区间”,应该按区间的左端点从小到大进行排序。:在最优解包含前k次的贪心选择的情况下,存在最优解包含第k+1次的贪心选择。:最优解包含第一次的贪心选择:在所有包含0的区间中,选择右端点最大的区间。这一次选择的,也就是唯一包含第0位置的区间,记该区间为。这样做的结果是,经过再次填充后的数组A,关于右端点。原创 2023-05-19 17:47:55 · 1463 阅读 · 0 评论 -
CSP-S 2022 提高级 第一轮 阅读程序(1) 第16-21题
shift后面的括号中传入两个参数,这是使用了vector的构造函数,传入的第1个参数表明初始化元素的个数,第二个参数是每个元素的值。是字符,作为shift的下标,也就是以字符的ASCII码为下标,这也对应了shift中要有128个元素。21. 当输入为“baaabaaabaaabaaaa aaaa”,第 20 行的“j++”语句执行次数为( )。匹配1个a,j++执行1次,遇到b与a不相等。i为13,执行字符串最后aaaa中的第1个a,与模式串aaaa匹配4个a,j++执行4次。原创 2023-05-11 14:31:30 · 1798 阅读 · 1 评论 -
CSP-J 2022 入门级 第一轮 完善程序(2) 第40-44题
颜色填充的操作描述如下:给定起始像素的位置和待填充的颜色,将起始像素和所有可达的像素(可达的定义:经过 一次或多次的向上、下、左、右四个方向移动所能到达且终点和路径上所有像素的颜色都与起始像素颜色相同),替换为给定的颜色。传入的image为图像二维数组,pt为被判断是否合法的位置,prev_color为起始位置颜色,new_color为要改变为的新颜色。是构造函数成员初始化列表的写法,意思是在调用构造函数时,将传入的第一个参数赋值给成员变量r,第二个参数赋值给成员变量c。元素类型为可迭代对象中元素的类型。原创 2022-09-24 12:00:52 · 2826 阅读 · 1 评论 -
CSP-J 2022 入门级 第一轮 完善程序(1) 第35-39题
fac中的元素为:fac[0], fac[1], …, fac[fax.size()-1],接下来应该输出的是:n/fac[fax.size()-1], n/fac[fax.size()-2], …factor是因数的意思,所以fac这个vector保存的是因数。数字i若是n的因数,那么n能整除i,n除以i的余数为0。,手动设置vector的容量,预先为vector对象分配空间,以免在运行过程中触发扩容。输出fac中的第k个元素:fac[k]。那么接下来应该输出n/d, n/c, n/b, n/a。原创 2022-09-23 18:00:20 · 2972 阅读 · 0 评论 -
CSP-J 2022 入门级 第一轮 阅读程序(3) 第28-34题
所以在solve2中x=(x+n/x)/2=(16+256/16)/2=16,每次计算后x的值不变,都是16。把1传入solve2,x为1,循环1次,x = (x+n/x)/2=(1+2/1)/2=1.5,函数的返回值,也就是ans的值为1.5。sove2中x=99,k为1,for循环执行一次,x=(x+n/x)/2=(99+9801/99)/2=99。把1传入solve2,x为1,循环10次,,每次循环让x=(x+n/x)/2,用模拟运行法。solve1函数是二分算法,二分查找的范围为n,复杂度为。原创 2022-09-23 15:42:00 · 2790 阅读 · 0 评论 -
CSP-J 2022 入门级 第一轮 阅读程序(2) 第22-27题
设想j=4时,i从0到7,h[i][4]的值与h[i][3]的值都相同,那么从h[8][4]开始,随着i的增大,需要填一些4,那么什么时候应该填5呢,需要让每个数对的最大值都是4,前面h[0][3]到h[7][3]是0,1,2,2,3,3,3,3,共8个数字,需要与后面8个数字4配对,这8个数字的位置应该为h[15][4]到h[8][4],这样最大值都是4,接下来h[8][3]往下都是4,与j=4的一列较小值配对,最大值都是4。j是2时确定了有2个2,j是3时确定了有4个3,j是4时就能确定有8个4,…原创 2022-09-23 12:27:03 · 4582 阅读 · 5 评论 -
CSP-J 2022 入门级 第一轮 阅读程序(1) 第16-21题
(例如对机器数10000000左移1位操作,如果是16位机器数,结果为100000000,如果是八位机器数,结果为00000000)。看一下后面几题,也能看出不可能对于什么输入,输出的都是0,否则后面三题都当做结果是0好了。看x的后4位,x为0010,x原创 2022-09-21 18:18:04 · 5931 阅读 · 0 评论 -
CSP-J 2022 第一轮试题 答案解析
已知入栈顺序是:e1,e2,e3,e4,e5,e6,出栈顺序是:e2,e4,e3,e6,e5,e1,请问在整个入栈出栈过程中栈中元素的最大个数。中用到的都应该是变化前的p->next,指向的是原来p的下一个结点。printf是C语言中就可以使用的函数,而c++中定义类或结构体,对象调用成员函数,构造派生类,都是面向对象语言才能支持的操作。C选项中,当4出栈时,4前入栈的6,5一定都在栈中,情况为:栈底-6-5。二叉树的顺序存储结构中,第i结点的左孩子的下标为2*i,右孩子的下标为2*i+1,双亲的下。原创 2022-09-21 16:32:31 · 14570 阅读 · 8 评论 -
CSP-J 2019 入门级 第一轮 第17题
至此已了解整段代码的功能为:有两列n个数字,输入m个数对,让两列中对应数字连线,如果新的连线会使得连线两边的数字连到的数字更大,则更新连线。一共会连线m对数字,未连线的数字减少2m个,总数字数量是2n个,所以剩下的未连线数字数量为2n-2m个,选A。两列数字中只有1–2连线,当i为1时,a[1]为2,b[1]为0,运行++ans,ans为1。两列数字中有1–2,2–1连线,那么a[1]是2,b[1]是2,都大于0。m个y都相等,最终y只能与左侧的1个数字相连,未相连的数字为2n-2,选A。原创 2022-09-17 11:32:36 · 510 阅读 · 0 评论 -
CSP-J 2019 入门级 第一轮 第16题
那么该段代码的含义为:i从1到n循环,如果i是n的约数,那么第i(从1开始)个字符如果是小写,变为大写。6.若输入的字符串长度为(),那么输入的字符串跟输出的字符串相比,至多有 3636 个字符不同。5.若输入的字符串长度为 1818,那么输入的字符串跟输出的字符串相比,至多有()个字符不同。4.若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。,因此可以看出,i指的是当前字符串中的第几个字符(从1开始数)。,还是可能是n的约数的。,n是i的整数倍,或者说i是n的约数。原创 2022-09-01 18:49:23 · 630 阅读 · 0 评论 -
【初赛题解】NOIP 2012 普及组初赛 第28题 排列数
在1~5中选3个数字做排列,已经数到145,接着改变倒数第二位,把4变为5,而后最后一位需要变为字典序最小的且没用过的2,所以下一个排列为152,然后153,154。如果某位置的值改变了,flag变为true,会运行进入下一段。假设n是5,m是3,在1~5中选3个数字做排列,先是123,而后改变最后一位变为124,接着是125。此时考虑,如果第i位的值已经改变了,接下来就需要将第i+1到最后一位的值变为可能的字典序最小的序列。的作用下,重新进度对i的循环,从末尾开始向前找一个位置,改变这个位置的值。....原创 2022-08-05 14:14:12 · 873 阅读 · 1 评论 -
【初赛题解】NOIP 2010 普及组初赛 第28题 过河问题
如果河岸右侧只有2人,这2人,就直接一起走到左岸了,时间为这两人中过河时间最长的时间,也就是ans。,那么让他到右侧,ans是tmp的最小值,返回的ans应该是所有人从右侧到左侧的最小时间,所以tmp应该是这一次让第i人从左侧到右侧,然后继续直到所有人完成过河需要的最小时间。观看if语句下的结构,先让i,j走到左侧,再让i,j变回为右侧。返回的ans是所有人走到左侧的最小总时间,而观察代码可知ans是每次求出的tmp的最小值,那么tmp就是当前选中i,j从右侧走到左侧时,所有人从右侧到左侧的最小时间,...原创 2022-08-05 12:03:13 · 1103 阅读 · 0 评论