NOIP真题解答
文章平均质量分 72
真题题解
君义_noip
五道口职业技术学院毕业
信息学奥赛教练
小说作者
展开
-
信息学奥赛一本通 2077:【21CSPJ普及组】小熊的果篮(fruit) | 洛谷 P7912 [CSP-J 2021] 小熊的果篮
交替在st0与st1中选择数字,下一次在另一个集合中选择出的数字要比上一次选择出的数字更大,并删除数字。如果当前fruit链表在删除数字后,成为空链表,那么需要在block链表中删除该空链表,并判断前一个链表和后一个链表的水果种类是否相同,如果相同,则合并两个单链表(即把后一个链表接到前一个链表的后面)。每次遍历block链表,在block链表中的每个“块”中(fruit链表)取第一个数字输出,并删除fruit链表中的第一个数字。创建一个block双向链表,block链表中的每个元素都是一个“块”。原创 2023-10-09 20:08:48 · 1164 阅读 · 0 评论 -
信息学奥赛一本通 2075:【21CSPJ普及组】插入排序(sort) | 洛谷 P7910 [CSP-J 2021] 插入排序
对于相同的数值,在原数组中下标更大的元素应该排在后面。对于相同的数值,在原数组中下标更小的元素应该排在前面。先根据题意,使用索引数组完成插入排序,注意交换元素时需要使用我们定义的。sa与as保存的就是原数组a与目标数组s之间的两个方向的映射关系。主函数中,首先输入a数组,初始状态下s数组与a数组相同,满足。假想存在排序后的目标数组s,设数组sa为索引数组,表示。开始,不断变大,向后遍历s数组,直到j为n-1。开始,不断变小,向前遍历s数组,直到j为2。在排序后的s数组中的下标,也就是。原创 2023-09-26 17:12:55 · 1072 阅读 · 1 评论 -
信息学奥赛一本通 2074:【21CSPJ普及组】分糖果(candy) | 洛谷 P7909 [CSP-J 2021] 分糖果
根据上述规律,x从l变化到r的过程中,x%n的值是逐渐增大的,当x为r时,x%n的值最大,为。这似乎是在做取模运算。,那么从l到r范围内一定存在一个数字x%n为n-1,一定存在一个数字x%n为0。其中,x%n的值每“段”从0变到n-1,都满足x/n的值是不变的。下图横轴为x,纵轴为x%n,L,R为满足该描述的一种可能的情况。下图横轴为x,纵轴为x%n,L,R为满足该描述的一种可能的情况。可以看到,x%n的值始终是从0变到n-1,再从0变到n-1。,x/n的值始终是m,而x%n的值从0变化到n-1。原创 2023-09-25 20:56:10 · 830 阅读 · 2 评论 -
信息学奥赛一本通 2086:【22CSPJ普及组】乘方(pow) | 洛谷 P8813 [CSP-J 2022] 乘方
设r为累乘乘积,初值为1。如果在循环求幂的过程中,若发现r大于。,可以使用long long类型保存该值。因此当a=1时,应该直接输出1。,则直接输出-1,而后结束程序。的数字相乘,结果不会超过。原创 2023-09-25 19:56:32 · 611 阅读 · 0 评论 -
信息学奥赛一本通 ybt 1975:【16NOIP普及组】海港 | 洛谷 P2058 [NOIP2016 普及组] 海港
每条船为一个元素,包含属性vector类型的nation,保存所有人的国籍,以及time表示时间。设结构体Peo表示一个人,每个人包含属性:时间time、国籍nation。,这样可以节省空间。如果设为数组,则会内存超限。,可以把每个人作为一个元素保存在队列中。每次有船到岸,就输出一下国籍总数。每次有船到岸,就输出一下国籍总数。由于人数总和(即k的加和)最大为。注意:nation必须设为。表示第i国籍的人数。原创 2023-08-19 11:36:11 · 802 阅读 · 0 评论 -
信息学奥赛一本通 1984:【19CSPJ普及组】纪念品 | 洛谷 P5662 [CSP-J2019] 纪念品
结合购买纪念品的背景,每件商品可以购买无限件,因此在第i天买入商品,到第i+1天卖出所有商品,想要赚到最多的钱币,该问题实际是一个完全背包问题。到第二天,又可以卖出商品换钱了,因此只需要考虑商品在当天及第二天的差价,差价越高,今天买该商品,到第二天升值越多。由于小伟每天都可以买卖物品无限次,我们可以假想每天开始时,他把所有的商品都卖出,看用手中的钱该买哪些商品。原创 2023-08-19 12:17:50 · 957 阅读 · 0 评论 -
洛谷 P5657 [CSP-S2019] 格雷码
当n为1时,只有1位格雷码。k为0时,第0号格雷码为"0"。k为1时,第1号格雷码为1。推导对于正向、逆向都从0开始数的长为n的序列,逆向第i个数字是正向第几个数字。如将k转为二进制数后共有m位,从低位到高位的编号为0, 1, …号二进制串,在前面再加上前缀1,即为n位格雷码的第k号二进制串。k1的第i位就是k的第i+1位。要查询的是n位格雷码的第k号二进制串,先比较k与。第3位为1,第2位为1,第1位为0,第0位为1。例:k为13,二进制编码为:1101,:求n位格雷码中的第k号二进制串。原创 2023-04-06 16:55:56 · 1700 阅读 · 0 评论 -
信息学奥赛一本通 1916:【01NOIP普及组】求先序排列 | 洛谷 P1030 [NOIP2001 普及组] 求先序排列
已知中序、后序遍历序列,构建二叉树,而后对该二叉树做先序遍历,得到先序遍历序列。思路与写法1相同,不同点在于如果使用string类,需要使用string类对象的。成员函数来取子串,我们需要分别计算出左右子树中序(后序)遍历序列子串的长度。设全局的字符数组:s_m表示中序遍历字符串,s_p表示后序遍历字符串。为后序遍历序列构建二叉树,返回二叉树根结点的地址。原创 2023-01-03 18:51:23 · 981 阅读 · 0 评论 -
信息学奥赛一本通 1369:合并果子(fruit) | 1836:【04NOIP提高组】合并果子 | 洛谷 P1090 [NOIP2004 提高组] 合并果子
复杂度内取到所有果堆中数量最小的一堆,也就是取当前多个数字中的最小值,需要用到堆(heap)这一数据结构,C++ STL中提供了以堆为原理的优先队列(priority_queue),可以使用该容器求数字中的最小值。将优先队列设为小顶堆,将n个数字加入到优先队列之中,每次出队两个数字,出队的两个数字就是最小的两个数字,将这两个数字加和,即为合并两堆果子。如果a, b两堆合为一堆,则可以画一个根结点g表示a,b合并后的果堆,这个结点的左孩子是a,右孩子是b。下图中,冒号后面的数字表示果子数量。原创 2022-12-12 03:12:44 · 2400 阅读 · 0 评论 -
信息学奥赛一本通 2082:【21NOIP提高组】报数 | 洛谷 P7960 [NOIP2021] 报数
类比判断多次询问的数字是不是质数的问题,可以通过筛法求质数表,而后询问的方法来减少复杂度。简单说成:判断某数字的因数中是否包含7。否则,要输出x的下一个因数包含7的数字。表示数字i的下一个因数不包含7的数字。次的询问,如果预先确定了每个可能的数字的的因数中是否包含7,那么每次询问的复杂度为。根据新的规则,任何一个十进制中某一位含有7的数字的倍数都不能报出来。是一个因数不包含7的数字,它的下一个因数不包含7的数字是。在生成该数组后,x的下一个因数不包含7的数字就是。对于输入的x,如果x的因数包含7,即。原创 2022-11-04 17:06:55 · 1093 阅读 · 0 评论 -
信息学奥赛一本通 1365:FBI树(fbi) | 1928:【04NOIP普及组】FBI树 | 洛谷 P1087 [NOIP2004 普及组] FBI 树
递归出口为:如果FBI串fs长度为1,那么这个结点是叶子结点。看这个字符串中的唯一的字符来确定这个结点的val。设树中结点类型,包含char类型的val成员变量,意为结点的类型,可以是’F’, ‘B’或’I’。设函数createTree,参数为fs。意为:根据FBI串fs来构建一棵二叉树。取子串得到左右子树的FBI串,递归调用本函数根据FBI串生成左右子树。FBI串的长度都是2的整数幂,下表从0开始,长度为。,N最大是10,也就是说这个树的叶子结点最多有。左半边下标范围为0~个,整棵树的结点数为。原创 2022-10-20 17:25:42 · 1129 阅读 · 0 评论 -
信息学奥赛一本通 1852:【08NOIP提高组】火柴棒等式 | OpenJudge NOI 4.7 8466:火柴棒等式 | 洛谷 P1149 [NOIP2008 提高组] 火柴棒等式
枚举两个可能的加数,枚举范围为0~1111,对于每次枚举出的两个加数,求出这两个数字相加的等式所用的火柴棍数量是否等于n,如果是,则计数。设函数matchCt,matchCt(n)求数字n由多少火柴棍组成,用数字拆分的方法得到n的每位数字,将组成每位数字的火柴棍数量加和返回。打表程序:枚举两个加数为0~1111的每种情况,只要加和火柴数加和小于等于24,则做计数,将所有的计数带逗号输出。而后枚举每对可以相加的数字组成等式,直接在st数组中取值来获取数字使用火柴棍的数量,复杂度会比解法1降低一些。......原创 2022-08-10 15:44:34 · 1398 阅读 · 1 评论 -
信息学奥赛一本通 1923:【03NOIP普及组】数字游戏 | 洛谷 P1043 [NOIP2003 普及组] 数字游戏
集合:将n个数分成m个部分的方案限制:将第i到第j个数分成k部分属性:每个部分对10取模后的乘积条件:最大统计量:乘积状态定义:将第i到第j个数分成k部分的所有方案中,每个部分对10取模后的乘积值最大的那个方案的乘积的值。初始状态:如果k为1,那么将第i到第j个数分成1部分,乘积值为v[i][j],即。......原创 2022-08-08 02:12:45 · 1485 阅读 · 2 评论 -
信息学奥赛一本通 1941:【07NOIP普及组】Hanoi双塔问题 | 洛谷 P1096 [NOIP2007 普及组] Hanoi 双塔问题
可以用整型数组表示高精度数字,也可以把整型数组放在结构体中,构建高精度数字类型。也可以构建高精度数字类。也可以把上述递推代码变递推为迭代,而后将该低精度代码变为高精度。,这一定是个基本变量类型无法表示的数字,需要使用高精度数字。观察低精度代码中,a应该从整型数组变为高精度数字的数组,该问题为汉诺塔问题的变种。可以用递推或递归的方法完成。中,乘法是高精乘低精的运算,加法是高精加低精的运算。把该代码改为高精度代码即可。题目中n最大为200,那么。......原创 2022-07-31 17:03:38 · 1548 阅读 · 0 评论 -
信息学奥赛一本通 1966:【14NOIP普及组】比例简化 | 洛谷 P2118 [NOIP2014 普及组] 比例简化
这一步不做其实也可以。由于A’与B’都是从小到大遍历的,对于A’/B’比值相同的情况,一定是先遍历到A’与B’互质的情况,后遍历到二者不互质的情况。在求最小值时只需要使用’原创 2022-07-29 17:06:50 · 888 阅读 · 0 评论 -
信息学奥赛一本通 1915:【01NOIP普及组】最大公约数与最小公倍数 | 洛谷 P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
求出p,q的最大公约数,看最大公约数的值是否等于x。如果是,那么这一组p,q是满足条件的,做计数。已知两个正整数x,y。x是p,q两个数的最大公约数,y是p,q两个数的最小公倍数。p,q这两个数字,一定都大于等于最大公约数x,小于等于最小公倍数y。最后输出满足条件的p,q的个数。从x到y枚举p,通过。......原创 2022-07-29 16:18:46 · 1844 阅读 · 0 评论 -
信息学奥赛一本通 1974:【16NOIP普及组】回文日期 | 洛谷 P2010 [NOIP2016 普及组] 回文日期
判断当前日期是否是回文的,可以将年月日进行数字拆分,每一位保存在长为8的整型数组中。,先让日加1,如果日超过本月天数,那么月份加1,日变为1。主函数中,让d为起始日期,每次循环判断当前日期是否是回文的,如果是则计数,而后让日期变为下一天。构造出回文数字后,判断该日期是否合法,以及该日期是否在起始与终止日期之间。复杂度为两个日期数值的差值,极端情况下,从0年1月1日到9999年12月12日,一共有约。设表示日期的结构体,属性包括年月日,方法有进入下一天,以及判断当前日期是否是回文的。函数将字符串转为整数。..原创 2022-07-22 00:51:50 · 1131 阅读 · 0 评论 -
信息学奥赛一本通 1977:【08NOIP普及组】立体图 | 洛谷 P1058 [NOIP2008 普及组] 立体图
先画最后一面墙的积木(也就是y轴上位置最大的积木),对于这面墙的积木,从左向右分别画出每列的积木,对于每列积木从下向上画。只要知道左下角在画布的位置,就可以根据co数组获取其相对位置上的积木图像的字符,覆盖原字符。对于每个格子上的积木,其中最高的那个积木会让图像纵向长度最大,比较每个格子上最高的积木,K取。输入矩阵中的第i行j列表示的格子,为三维坐标系中x轴方向第j位置,y轴方向第m-i+1位置。表示画一个积木,积木在三维坐标系中的坐标为(x,y,z)记长的方向为x轴,宽的方向为y轴,高的方向为z轴。...原创 2022-07-21 19:53:02 · 1370 阅读 · 1 评论 -
信息学奥赛一本通 2076:【21CSPJ普及组】网络连接(network) | 洛谷 P7911 [CSP-J 2021] 网络连接
如果输入的ip是服务机,那么先查找该服务机是否存在(在数组a上做顺序查找,看能否找到)。1、必须形如a.b.c.de的格式,其中a,b,c,d,e均为非负整数;如果输入的ip是客户机,那么根据ip串在数组a上查找是否存在该字符串。对于每个输入的ip串,先判断该串是否合法,如不合法,输出ERR。我们一条一条讨论,每次讨论的情况不要贪多,避免逻辑混乱。由于n最大为1000,即便每次都做顺序查找,整体复杂度为。3、a,b,c,d,e均不能含有多余的前导0。指ip为s的服务机的编号。...原创 2022-07-20 00:36:13 · 1296 阅读 · 0 评论 -
信息学奥赛一本通 1920:【02NOIP普及组】产生数 | 洛谷 P1037 [NOIP2002 普及组] 产生数
ybt 1361:产生数(Produce)洛谷 P1037 [NOIP2002 普及组] 产生数首先通过搜索,得到每一位数字通过有限次变化后可能变成的数字种类。得到数组c,表示数字i经过有限次变化后可以变成的数字种类数。集合:数字n通过给定规则可以变成的数字限制:只看前几位统计量:方案数:前i位数字在应用规则经过有限次变化后可以变成的数字种类数。初始状态:前0位数字的种类数可以认为是1,即前i位数字通过应用规则可以变成的数字分割结合:根据第i位数字变成其它数字的情况分割集合已知第i位数字可以原创 2022-06-28 23:32:32 · 746 阅读 · 1 评论 -
信息学奥赛一本通 1945:【09NOIP普及组】多项式输出 | OpenJudge NOI 1.13 39:多项式输出 | 洛谷 P1067 [NOIP2009 普及组] 多项式输出
ybt 1945:【09NOIP普及组】多项式输出OpenJudge NOI 1.13 39:多项式输出洛谷 P1067 [NOIP2009 普及组] 多项式输出多项式中的一项分为:系数、x、指数这里要针对不同情况,考虑这三者是否需要输出,以及如何输出。i表示其中一项的指数,i从n循环到0,这里称指数为i是项为第i项。先考虑系数的符号:如果系数为正,只有在输出第n项时前面不用输出’+‘,只要不是第n项,前面都要输出’+‘。如果系数为负,任何情况下都要输出’-’再考虑系数的值:如果系数为0,那么原创 2022-06-20 12:26:14 · 1121 阅读 · 0 评论 -
信息学奥赛一本通 1927:【04NOIP普及组】花生采摘 | OpenJudge NOI 1.13 38:花生采摘 | 洛谷 P1086 [NOIP2004 普及组] 花生采摘
ybt 1927:【04NOIP普及组】花生采摘OpenJudge NOI 1.13 38:花生采摘洛谷 P1086 [NOIP2004 普及组] 花生采摘该题一定要仔细看题,题目中有:所以不是我们决定一条能够采花生的路线,而是这个鲁宾逊已经指定了采花生的顺序,狗只能按照他给的贪心的思路不断采有花生最多的植株。我们只需要判断什么时候要让狗停止采摘回到路边。设变量t表示已经用过的时间。在采摘下一个植株前,先计算一下t加上走到下一个植株、采摘、再回去所用的时间是否超出给定的时间。在这一过程中,统计采摘到的原创 2022-06-20 01:29:16 · 1359 阅读 · 0 评论 -
信息学奥赛一本通 1260 【例9.4】拦截导弹(Noip1999) | 洛谷 P1020 [NOIP1999 普及组] 导弹拦截
ybt 1260 【例9.4】拦截导弹(Noip1999)洛谷 P1020 [NOIP1999 普及组] 导弹拦截本题为完整问题,拆分后的问题:第1个问:ybt 1289:拦截导弹第2个问:ybt 1322:【例6.4】拦截导弹问题(Noip1999)该解法两问的复杂度均为O(n2)O(n^2)O(n2),该解法可以通过【ybt 1260】,提交【洛谷P1020】只能得100分。不上升子序列:序列中后面的元素小于等于前面的元素状态定义:表示以i为结尾的最长不上升子序列的长度。状态转移方程:分割原创 2022-06-09 02:23:04 · 4015 阅读 · 2 评论 -
信息学奥赛一本通 1947:【09NOIP普及组】细胞分裂 | 洛谷 P1069 [NOIP2009 普及组] 细胞分裂
ybt 1947:【09NOIP普及组】细胞分裂洛谷 P1069 [NOIP2009 普及组] 细胞分裂每个整数x都可以进行质因数分解,写成公式为x=p1a1p2a2...pnanx = p_1^{a_1}p_2^{a_2}...p_n^{a_n}x=p1a1p2a2...pnan,其中p1∼pnp_1\sim p_np1∼pn都为s的质因数。本题可以抽象为:有数字s1,s2,...,sns_1,s_2,...,s_ns1,s2,...,sn,s指其中的某个数字。看在这个数字序列中,原创 2022-06-07 00:57:33 · 904 阅读 · 0 评论 -
信息学奥赛一本通 1912:【00NOIP普及组】乘积最大 | 1821 | OpenJudge NOI 2.6 8782:乘积最大 | 洛谷 P1018 [NOIP2000 提高组] 乘积最大
ybt 1912:【00NOIP普及组】乘积最大ybt 1821:【00NOIP提高组】乘积最大OpenJudge NOI 2.6 8782:乘积最大洛谷 P1018 [NOIP2000 提高组] 乘积最大在一个最多40位数中,插入最多6个乘号,有最多7个数字相乘。可以肯定结果会超出long long可以表示的范围,因此本问题需要使用高精度数字。预先处理,(高精度数字)表示该数字从第i位到第j位截取出的数字。将输入的数字m取第i位到第j位填充到另一个高精度数字的数组中,即可获得该数字。集合:在数字原创 2022-06-02 02:19:23 · 1349 阅读 · 0 评论 -
信息学奥赛一本通 1239:统计数字 | 1847:【07NOIP提高组】统计数字 | OpenJudge NOI 2.4 7909 | 洛谷 P1097 [NOIP2007 提高组] 统计数字
【题目链接】ybt 1239:统计数字OpenJudge NOI 2.4 7909:统计数字【题目考点】1. 二分查找2. 插入排序【解题思路】如果数字范围很小,用散列思想,设数组ct,ct[i]表示数字i出现的次数,遍历并计数即可。但该题数字范围很大,达到10910^9109。如果设int型数组长度为10910^9109,那么占用的内存空间为:109B∗4/1024/1024≈3814MB10^9B*4/1024/1024\approx 3814MB109B∗4/1024/1024≈381原创 2022-03-12 15:14:35 · 2845 阅读 · 0 评论 -
信息学奥赛一本通 1922:【03NOIP普及组】乒乓球 | OpenJudge NOI 1.13 37:乒乓球 | 洛谷 P1042 [NOIP2003 普及组] 乒乓球
【题目链接】ybt 1922:【03NOIP普及组】乒乓球OpenJudge NOI 1.13 37:乒乓球洛谷 P1042 [NOIP2003 普及组] 乒乓球【题目考点】1. 字符串2. 模拟【解题思路】首先要了解兵乓球的规则,无论是11分制还是21分制,要想取得胜利,胜方的分数必须比败方的分数多至少2分。如果双方分数只差1分,即便两人分数都超过了分制的最大分数,比赛也没有结束,直到一方的分数超过对方2分为止。所以得到比赛结束的条件为:胜方的分数超过最大分数,且胜方的分数与对方的分数差原创 2022-05-26 19:30:44 · 1569 阅读 · 2 评论 -
信息学奥赛一本通 1959:【12NOIP普及组】摆花 |洛谷 P1077 [NOIP2012 普及组] 摆花
【题目链接】ybt 1959:【12NOIP普及组】摆花洛谷 P1077 [NOIP2012 普及组] 摆花【题目考点】1. 动态规划:多重背包多重背包:在背包问题中,每种物品最多只能取有限件【解题思路】该问题为多重背包求方案数的问题。题目中说:“摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列”。也就是说,只要确定每种花取用的盆数后,花的摆放方式也就确定了,在摆花的顺序上我们没有操作空间,所以我们实际关注的并不是“花的摆放”,而是“花的取用”,这一方面也算一种干扰信息原创 2022-05-14 01:08:22 · 1163 阅读 · 2 评论 -
信息学奥赛一本通 1295:装箱问题 | 1917:【01NOIP普及组】装箱问题 | OpenJudge NOI 2.6 8785 | 洛谷 P1049 [NOIP2001 普及组] 装箱问题
【题目链接】ybt 1295:装箱问题ybt 1917:【01NOIP普及组】装箱问题OpenJudge NOI 2.6 8785:装箱问题洛谷 P1049 [NOIP2001 普及组] 装箱问题【题目考点】1. 动态规划:01背包问题【解题思路】该题不能用贪心解决。如果贪心选择为:每次选择能放入的最大体积的物品。设箱子大小为4,三个物品大小为3 2 2。那么按照贪心选择,会选择3,剩余空间1。但选择两个2是最优解,剩余空间0。如果贪心选择为:每次选择最小体积的物品。设箱子大小为3,两原创 2022-05-07 21:23:22 · 1953 阅读 · 0 评论 -
信息学奥赛一本通 1304:数的划分 | 1440 | 1825:数的划分 | OpenJudge NOI 2.6 8787 | 洛谷 P1025 [NOIP2001 提高组] 数的划分
【题目链接】ybt 1304:数的划分OpenJudge 2.6 8787:数的划分【题目考点】1. 动态规划【解题思路】本题可以类比信息学奥赛一本通 1222 放苹果,上题是允许有空的盘子,本题数字拆分问题可以等价地描述为:将n个相同的苹果分在k个相同的盘子中,每个盘子至少有1个苹果的方案数。下面在放苹果的问题背景下描述思路。1. 状态定义集合:将n个相同的苹果放在k个相同的盘子中,每个盘子至少有1个苹果的方案限制:苹果数,盘子数属性: 无条件:无统计量:方案数状态定义:dp[i原创 2022-05-05 21:36:35 · 1267 阅读 · 1 评论 -
信息学奥赛一本通 1290:采药 | 1932:【05NOIP普及组】采药 | OpenJudge NOI 2.6 1775:采药 | P1048 [NOIP2005 普及组] 采药
【题目链接】ybt 1290:采药ybt 1932:【05NOIP普及组】采药OpenJudge 2.6 1775:采药洛谷 P1048 [NOIP2005 普及组] 采药【题目考点】1. 动态规划:背包问题01背包问题【解题思路】本题就是01背包问题。采药总时间对应背包大小,每个药的采集时间对应物品重量,药的价值对应物品价值。使用01背包问题的解法即可完成该题。01背包问题解法思路如下:1. 状态定义集合:将n件物品放入空间为M的背包的方案限制:物品范围,背包空间属性原创 2022-05-03 17:19:40 · 1546 阅读 · 1 评论 -
信息学奥赛一本通 1968:【14NOIP普及组】子矩阵 | 洛谷 P2258 [NOIP2014 普及组] 子矩阵
【题目链接】ybt 1968:【14NOIP普及组】子矩阵洛谷 P2258 [NOIP2014 普及组] 子矩阵【题目考点】1. 搜索2. 动态规划:线性规划【解题思路】该问题在二维矩阵中中取子矩阵,可以类比在一维数组中取子序列。思路上,可以先将二维矩阵变为一维数组,然后求一维数组中满足某一条件的子序列。记原n行m列的二维数组为a。1. 搜索确定r行设r行m列数组b保存从数组a中选出的r行数据。选择方法为搜索,该问题与“在1~n共n个数字中选出r个数字的组合”是同一个问题。每次从第原创 2022-04-28 21:13:50 · 1172 阅读 · 0 评论 -
信息学奥赛一本通 1238:一元三次方程求解 | 1824 | OpenJudge NOI 2.4 7891 | 洛谷 P1024 [NOIP2001 提高组] 一元三次方程求解
【题目链接】ybt 1238:一元三次方程求解ybt 1824:【01NOIP提高组】一元三次方程求解OpenJudge 2.4 7891:一元三次方程求解洛谷 P1024 [NOIP2001 提高组] 一元三次方程求解【题目考点】1. 二分:实数域二分查找实数域二分查找二分求函数零点问题,即为实数域上的二分查找。代码模板为:while(r - l >= 1e-x)//保留到小数点后x+1位{ double mid = (l+r)/2; if(要查找的结果小于m) r原创 2022-04-27 00:19:51 · 1719 阅读 · 0 评论 -
信息学奥赛一本通 1320:【例6.2】均分纸牌(Noip2002) | 1828:【02NOIP提高组】均分纸牌 | 洛谷 P1031 [NOIP2002 提高组] 均分纸牌
【题目链接】ybt 1320:【例6.2】均分纸牌(Noip2002)ybt 1828:【02NOIP提高组】均分纸牌洛谷 P1031 [NOIP2002 提高组] 均分纸牌【题目考点】1. 贪心【解题思路】解法1:贪心设数组a,a[i]表示第i堆纸牌的数量,一共有n堆纸牌。由于最后要均分纸牌,每堆牌最后的数量为纸牌总数除以n,记每堆纸牌平均数量为ave。考虑第1堆纸牌,第1堆纸牌的数量只能通过从第2堆拿或分给第2堆来改变,有以下几种情况:如果第1堆纸牌的数量等于ave,则不移动纸牌,原创 2022-04-25 02:17:51 · 1425 阅读 · 1 评论 -
信息学奥赛一本通 1955:【11NOIP普及组】瑞士轮 | OpenJudge NOI 4.1 4363:瑞士轮 | 洛谷 P1309 [NOIP2011 普及组] 瑞士轮
【题目链接】ybt 1955:【11NOIP普及组】瑞士轮OpenJudge 4.1 4363:瑞士轮洛谷 P1309 [NOIP2011 普及组] 瑞士轮【题目考点】1. 归并排序2. stl 排序相关函数stl:快速排序:sort(f1,l1,cmp);f1: stl容器起始迭代器,或数组第1个元素的指针。l1:stl容器末尾迭代器,或数组最后一个元素后一个位置的指针。cmp:比较函数bool cmp(a,b)参数a与b的类型必须是容器内元素的类型或数组中元素的类型。返回值原创 2022-04-23 00:06:00 · 1182 阅读 · 0 评论 -
信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge NOI 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方
【题目链接】ybt 1208:2的幂次方表示OpenJudge 2.2 8758:2的幂次方表示洛谷 P1010 [NOIP1998 普及组] 幂次方【题目考点】1. 递归【解题思路】递归问题:将数字k转为2的幂次方表示的字符串递归关系:二进制按位权展开式形式如下:k=d0∗20+d1∗21+...+dk∗2kk = d_0*2^0+d_1*2^1+...+d_k*2^kk=d0∗20+d1∗21+...+dk∗2k将数字k转为二进制数,即为在二进制下作数字拆分,与十进制数字拆原创 2022-04-20 22:46:58 · 1644 阅读 · 5 评论 -
信息学奥赛一本通 1277:【例9.21】方格取数 | 1823 | OpenJudge NOI 2.6 8786 | 洛谷 P1004 [NOIP2000 提高组] 方格取数
【题目链接】ybt 1277:【例9.21】方格取数ybt 1823:【00NOIP提高组】方格取数OpenJudge 2.6 8786:方格取数洛谷 P1004 [NOIP2000 提高组] 方格取数【题目考点】1. 动态规划:坐标型动规【解题思路】1. 状态定义集合:从(1,1)到(n,n)走两趟的路径方案限制:从(1,1)走到(i,j),再从(1,1)走到(k,l)的路径方案属性:取到的数字加和条件:最大统计量:数字加和状态定义:dp[i][j][k][l]:第一趟从(1,原创 2022-04-20 19:07:42 · 1524 阅读 · 2 评论 -
信息学奥赛一本通 1264:【例9.8】合唱队形 | 1837:【04NOIP提高组】合唱队形 | OpenJudge 百练 2711 | 洛谷 P1091 [NOIP2004 提高组] 合唱队形
【题目链接】ybt 1264:【例9.8】合唱队形ybt 1837:【04NOIP提高组】合唱队形OpenJudge 百练 2711:合唱队形洛谷 P1091 [NOIP2004 提高组] 合唱队形【题目考点】1. 动态规划:线性动规求最长上升子序列求最长下降子序列【解题思路】合唱队形中,站在C位(最中间)的人应该是最高的,设选择的人为iii。这个人左侧的人的身高应该是一个上升序列,右侧的人的身高应该是一个下降序列,左右侧人的身高都不应该高于tit_iti。为了使出列的人最少,第i原创 2022-04-04 20:03:02 · 2923 阅读 · 1 评论 -
信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
【题目链接】ybt 1844:【06NOIP提高组】金明的预算方案洛谷 P1064 [NOIP2006 提高组] 金明的预算方案【题目考点】1. 动态规划:分组背包2. 动态规划:依赖背包【解题思路】解法1:分组背包已知第i个商品的价格v[i],重要程度w[i],求出第i个商品的价值c[i] = v[i]*w[i]状态定义:dp[i][j]为使用j元钱买前i个主件及其附件能得到的最大价值状态转移方程:思考已有j元钱,如何购买第i个主件及其附件如果不买第i个主件及其附件,dp[i]原创 2022-04-04 02:18:01 · 866 阅读 · 0 评论 -
信息学奥赛一本通 1314:【例3.6】过河卒(Noip2002) | 1921:【02NOIP普及组】过河卒 | 洛谷 P1002 [NOIP2002 普及组] 过河卒
【题目链接】ybt 1314:【例3.6】过河卒(Noip2002)ybt 1921:【02NOIP普及组】过河卒洛谷 P1002 [NOIP2002 普及组] 过河卒【题目考点】1. 坐标型动态规划【解题思路】设状态数组dp,dp[i][j]表示从(0,0)到(i,j)的路径条数。考虑卒走到**(i,j)位置的前一个位置可能是哪里,把可能的到(i,j)的前一个位置**的路径数量加和,即为到(i,j)的路径数量。如果(i,j)是(0,0),到起始位置的路径数量为1,所以:dp[0][0]原创 2022-03-28 18:30:02 · 2132 阅读 · 0 评论