粉丝179获赞545

二零二三年信息学奥赛 cd 加入门级第一轮认证今天上午刚刚结束,计算机学会官方随后就给大家公布了正确答案。有想要估分的,或者想要给孩子打印出来的家长,您可以点击我的头像进主页粉丝群领取。

大家好,我是 sunny 同学,今天给大家讲一个 c c f c s p 杠锥的这个二零二一年的一个题目,叫做分糖果,那么这个考试总共有四道题, 通常有四道题,然后这是第一题,那我们来看这道题,说这个幼儿园里有 n 个小朋友,你是其中的一个,然后你找到了 k 块糖,然后这个 k 呢?他有一个下介 l, 一个上介 r, 就是 k 大于等于 l 小于等于 r, 然后你把这颗一块糖放在篮子里,然后这 n 个小朋友就来分糖果,只要篮子里有不少于 n 块糖 果,幼儿园里所有小朋友,包括你自己都从篮子里恰好拿走一块,直到这个篮子里的糖的数量少于 n 块,少于 n 块之后,这剩下的这个剩余的糖果就都给你,作为你搬糖果的这个奖励, 然后给定你小妹有个数,这个拿着糖果的下界和上界问你,你能得到多少块糖果的奖励?那我们来看这个。首先第一个样例, n 等于七,就是有七个小朋友拿糖果的下界是十六,上界是二十三。好,他问你这个奖励的这个,呃,最大是多少? 你最多能获得多少奖励?那么首先比如说当你 k, 你拿十六块糖果,一下就是十六,如果你拿十六块糖果, 你能得到多少奖励呢?十六他是大于 n 的,所以每个人恰好拿走一块,也就是拿走了七块糖果,总共拿走七块糖果,剩下九块,哎,九块还是大于 n, 所以他每个人还会再拿走一块,就是再拿走七块,剩下两块,哎,剩下两块,两块小于七了,嗯,两块小于七了呀,所以这就是你的奖励,奖励为两块, 那么比如说你可以取十七的时候,这个不是最优的呀,比如我取十七就比他更优,比 十七大于七,所以每个人拿走一块,就拿走七块,还剩下十十大于七,每个人再拿走一块,哎,还剩下三块,三块小于七了,所以你这时候你能得到三块的奖励,哎,是不是比上一次优了?但这不是最优的, 那么这里直接告诉大家,当 k 等于二十的时候,你去你拿二十块糖果,那么这时候 每个人拿走一块,还剩下十三块,然后每个人再拿走一块,还剩下六块糖果,哎,六正好小于七,所以你能拿到六块糖果作为奖励,这个就是最优的,大家可以自己去推一下, 就是这个是你能拿到的最多的奖励。那我们通过这些奖励我们可以 得出来一个结论,就是说你 k 这个得到了奖励的数量其实是 k 魔 n, 比如第一个,你 k 取十六, k, 魔 n 就是十六除以,呃,十六魔七的余就是十六除以七的余数,就是魔十六除以七, 十六除以七的余数,摩七等于二,哎,大家发现这个其实就是你得到奖励,然后呢,第二个 k 等于十七,摩七 等于三,你可以获得三块糖果的奖励,这里就计算出来了, k 等于二十呢,二十磨七,哎,正好等于六,这就是你的获得了这个 奖励吗?所以我们就把这个题转化成了一个数学问题, k 满足大于等于 l, 小于等于 r, 然后呢问你使得 k 模 n 最大的 就是存在一个 k, 它满足这个条件,并且它使得 k 模 n 最大,然后问你 k 模 n 的最大值是多少? 就是这个数学问题,就是这些题你都需要转化成一个数学问题来解答。那我们来看第二个样例, 那这里最多的,这里能获得的最大的奖励数就是六嘛,所以这个样例这里输出六。好,那我们来 来看第二个样例,有十个小朋友最少拿十四块,最多 拿十八块,那现在我们来看一下这个 k 魔 n 的最大值, 那么 k 其实这个时候你可以自己去推一下,你可以自己去试一下十四到十八,那我告诉大家,当 k 取十八的时候, k 魔 n 的最大, k 魔 n 最大就等于什么呢?等于十八魔十等于八,可以获得八块糖果的奖励,这个就是最大的, 那这里输出八,大家可以自己去试一下。那么我们转化成了这个问题之后呢?那这个 长怎么来实现这个解答呢?首先大家最容易想到的就是使用复循环,是最简便的。 怎么使用负循环呢?这样第一种方法,负循环从啊,比如循环变量叫 k, 就是这个题里面的这个 k, 就是我没举这个 k 啊, k 从 l 没举到 r, 这种方法就是没举嘛,没举 k 直到 啊,就是每举 k 找到,找到 k 魔 n 的最大, 找到 k m n 的 max 最大值,那么可以从 l 到 r, 然后呢我们可以刚开始定一个变量,比如叫 m x, 它可以设一个非常小的数,我们来看一下这里的数据范围, r 减 l 就是这个循环的次数,循环次数十的九次方,那么 k 他的取得最大的也就是十的九次方,所以我们可以把它设成负十的九次方, 负十的九次方,这个编程里可以这么写。然后呢,刚开始出水化成这个值之后, 如果 k 魔 n 就是,你能获得奖励吗?如果这个值他比你现在的奖励要多,那么你就把最大的奖励更新成 k 魔 n 就可以了。 好,这样子,循环完之后,你就打印 m x 就是答案啊,就是 k m n 的最大值。那这个方法 也行,但是他会有一个弊端,就是他会超时,这个方法很容易想啊。 嗯,考试的时候这样子是想是最简单的,但是这个会超时,因为我们刚刚看了这个循环,比如我就叫他取完变量就叫 k, 输入 n l k 啊 n l r k 小于等于 r k 加加尾举,然后刚开始初始画一个 m x 负十的九次方, 如果 k 魔 n 这个次数大于 m x, 那么 m x 就等于 k 魔 n, 然后输出 m x 就可以了这个代码, 因为这里他是十了九次方,一次十了九次方的循环是绝对会超时的, 我们来看一下。哎,超时了一个点拿拿九十分已经很高了,但是呢,考场上最好 能拿满分的就要拿满分,因为这种题一般第一道题一般你要拿满分的,因为有一些啊,就是很多人都会做对这道题,那么他们的方法应该是什么呢?不是负我循环了, 负循环是比较比较笨的一种方法,就是暴力的方法。那我们来想一种比较巧妙的方法, 我们来分析一下分析情况。首先呢, 首先 画一个坐标系, 就是纵坐标代表 k 摩 n 的值,横坐标代表 k n 是已知的 圆点。然后呢,这个 k 的取值只能从 l 到 r 取,比如 l 到 r 是这儿, 那么可以怎么取呢?就是说这的这一段的距离,大家应该知道吧? r 减 l 加一嘛,如果这个值 就是这个之间的距离,是 r 减 l 加一,我们可以来看一下,就是这个 n 就是这个 k 不断地增长,那么它的这个区域的这个这个值是怎么变化的呢?刚开始可以从零开始越来越大, 随着 k 的增长越来越大,然后直到一个顶峰,这个顶峰大家应该知道是多少吧? n 减一啊, k 模 n 的最大值就是 k, 除以 n 得到了余数的最大值就是 n 减一, 因为如果 k 等于 n 减一,它这个值就等于 n 减一,如果它等于 n, 那这个值就变成零了,所以它最大值变成 n 减一之后就调回来了,调回来,调回来,这个值就变成零了,然后呢继续增长, 继续增长啊,又增到 n 减一啊,又掉下来,变成零,然后又增长,然后就这样子不断的增长,掉下来,增长,掉下来。那么在这个区间里面呢?我画的比较我画的好看一点, 就是说,比如我从这个在一个区间内,这个区间内有这样子的增长的, 哎,增长到 n 减一了,又掉下来, 增长,然后呢? l 是取在这个地方的, 比如 l 在这, r 在这,那么 k 的取值就像是这样, a 上来啊, k m n 的取值上来掉下来,上来掉下来,上来掉下来,上来,然后到 n, 呃,然后到 r, 这是这个地方啊,是 l, 这个地方是 r, 然后这样子增长下来,增长下来,增长下来,然后 这个区间里看能取到最大值,大家能看到啊,就是这个顶峰啊,对吧?只要这个之间的距离足够大, 那么他能达到最大值就是 n 减一,那我们怎么来判断就是这个之间存在至少一个区间呢? 对吧?这个其实可以不需要的,我们不需要这么分析,就是说我们知道这个区间是,我们知道 r 在哪个区间吗?这个其实比较好求,其实就是 r 除以 n, 为什么可以这么算呢?你看 r 除以 n 就代表就是,呃,就是 c 加加里面 r 除以 n, 其实是整,除,就是向下取整 就是 r 除以 n, 其实取的是它这个经过了多少个这种区间, 对吧?那 l 除以 n 呢?就是 l 之前有多少个区间? 就是说如果 r 除以 n 不等于 l 除以 n, 那说明他们俩在不同的区间内,所以他们之间至少存在一个区间。 据说只要他们不在一个区间内,那他们之间的这个取值就一定至少存在一个区间。如果至少存在一个区间,那这个区间就一定有一个最大值为 n 减一,那么如果这个成立,那么 k 区,那么 k 摩 n 的最大值最大就为 n 减一啊。这是第一种情况,就是他们之间至少存在一个这种 上去下来,上去下来这种区间,如果存在一个,那他的最,那他们那他这个 l 这个 y 轴的最大值就是 n 减一。 那么我们再来看一种情况,不在一种区间,呃,在同一种区间里呢?等于 l 除以 n, 那这时是什么样呢? 这种情况我们来看一下, 就是这是 l, 这是 r, 呃,这个地方太远,比如 are 在这儿,它们在同一个区间里,什么意思呢?比如一个区间是长这样的, 哎,这是一个区间,他到一个很高点才掉下来,然后又继续,这区间特别大,就是 r 和 n 在同一个区间里,然后在这,然后在这, r 在这, 就是 r 除以 n 就是上一个区间, l 除以 n 就是上一个区间。如果他们之前的区间个数相同,那说明他们就在同一个区间内,就在同一个区间内,他肯定取不到最高点了。 大家想明白吗?如果在同一个区间内,那这个 y 轴最大值大家显而易见嘛,就是 r m n 嘛,对吧?这个这个这个 y 轴的值就是 r 模 n, 所以如果在同一个区间内,那么 y 轴的最大值就是 r 模 n, 那么 k 模 n 的最大值 就为 rm。 哎,大家发现我们通过两种情况就把这个最大值就分析出来了,那只需要一个 if 判断这两种情况就可以了呀。 那就不需要这个繁琐的负循环了,就只需要 if 判断。如果 l 除以按 跟 r 除以 n 在同,就是他们在同一个区间内,那就是那最大值就是 r 摩 n。 否则呢,就是不在同一个区间内,就是他们之间至少存在一个区间,那就是 n 减一,你看 o 一的复杂度就搞定了。那我们现在只需要看一下这个测试样例, 好,第一个样例过了,第二个样例输出八好,对了,那么我们来教一下,看看能不能过, 这个不会超时, ok, 这个题就过掉了,那么这个题 他放在这个第一题已经算是比较难的一道题了。首先如果你用 暴力做法是过不了,拿不了最高分,然后呢你要分析出这个,你需要画画图,然后对这些书论的知识比较掌握的比较好,才可以推出这个结论。 那么推出来之后这道题就过了,虽然程序看起来很简单,但是这个要推出来还是嗯不是很容易的,所以大家 这个就是这个编程,这些的基础就是这些数论的这些数学,所以大家要数学学好编程才能做的比较好。那么这个谢谢大家的观看,这道题今天就给大家讲到这里。

今天我们来讲解二零二二年普及主第二题解密。 我们先看一下题目描述。他说给定一个正整数 k, 有 k 词询问。每次给定三个正整数 n 一 d, 求两个正整数 p 和 q, 使得 n 等于 p 乘 q, 一乘 d 等于 p 减一乘上 q 减一加一。然后呢, 输入一个正整数 k, 表示询问的次数。接下来有 k 行第二行三个正整数 n、 d、 e。 和题目 描述的一样,输出 k 行每行两个正整数 p 和 q, 表示答案。为此输出统一。应保证 p 小于 q。 若无解输出弄。 那这是一个标准的数学问题。数学问题。已知 n、 e、 d, 并且给出他们的关系,求他们的两个解,求他们的两个解。好。我们先根据他们的解进行拆分。 p、 q、 q 和 n、 e、 d 具体的关系 椅子 n e d。 其中 p 乘 q 等于 n, p 减一乘上, q 减一等于一乘 d。 这个 方程很简单,我们要把这个方程给化解。那就是 p 乘 q 减 p 减 q 啊啊,加一加一,再加一等于一 d。 那这个时候 p 加 q 可得 p 加 q 等于 pq 减 ed 加二,而 pq 呢,又等于 n。 所以呢,我们得完之后就是 p 乘 q 等于 np 加 八, q 等于 n 减一, d 加二加二。那么解数学问题,我们通常有两种方法。第一, 每举所有根的范围。每举根的范围就是解的范围, 然后通过验证。通过验证什么?通过验证他的两个条件得出他的解。第二呢,直接数学求解法。 数学求解法。那这个题呢,我们要用到方程。用到方程求解。好,我们先看 每举跟的范围。这种方法该怎么写?那么首先我要定义一个 k, 我们看一下它的数据范围, t 的范围最多是到十的五次方, n 的范围到十到十八次方。那就是 n。 需要用浪浪型来表示 m 的范围。 m 就等于 m, 就等于 n 减一, d 加二就等于这一块,他就等于 mmm 的值呢,有皮加 q 的值最多到十到九次方。那这时候呢, k 的值我们可以定一个总数。然后呢, n e, d 是朗朗型航灯型。这时候呢,我们输入输入 k, 因为 k 最多有十的五次方。那这个时候呢,我们对于输入输入 n, e, d, 我们要用 scap 输入,可以用 scap 输入来优化他的效率。 二等于一,二小于等于 k, 一共有 k 个询问爱加加啊。然后呢,输入 三个整数, 长整形,弯弯形, e, d。 输入完之后呢,这时候我们刚才算的 m 的值就等于 n 减 m 十的九次方,十的九次方。我们用樱桃也行,最好用朗朗型。 m 就等于 n 减一乘 d 加二。 这时候呢,我只需要每举 p, 从一开始 p 小于等于 m, p 加加。 然后呢,算出 q 的值, q 就等于 m 减 q, m 减 p。 这时候就要判断一下,如果 n 的值等于 p 成 q, 因为 q 只是从 m 减 p 算出来,所以我们就不再算 p 加 q 等于 m 了,就不再算这一个了。如果 p 乘 q 等于 n, 那么他就是我们要的一个解,输出 p, 让他输出 q, 输出 q, 否则呢?否则就不行,否则就没解。如果输出解,这个时候呢,我们要做一个标记,我们要标记一下, 现在我这边做一个标记等于零,如果有解了,我将标记设的为一。然后呢,不是就不再找了,不再找了。循环这一轮循环结束之后呢,我判大家,如果弗莱格等于零, 要没有执行到输出,那我们就输出弄输出弄,别往家换行 好。但是这一个美女来说, k, 它是十的五次方, k 是十的五次方, k 最多十到五次方。而 m 的值,我们便利的是 m, m 的值呢, 十的九次方,那么他的范围有 kmkm, 那就十的十次次方。这个是得不满分的。得不满分的,比如说美景法的话,我们最多可以得到六十分, 六十分。那这种方式霉菌法呢,容易写,容易写,也容易左手。 但是呢,得不了满分,处于他的速度的限制。那我们怎么去优化呢?我们可以考虑我们现在是在 m 当中,从一到 m 里面去找, 去找 p 和 q 在这个范围里面去找,那这个范围里面去找。比如说 如果 mp 越大的话,那么 q 的值呢,就相对来少,当 p 无限接近于 q 的时候,他们就 他们的值就无限的接近于 m。 那这个时候呢,我们就可以将 m 的美举, m 的美举变成优化,变成二分法来美举。那这个时候呢, 从左边是一右边呢,因为我们找的只是他的从小到大,所以呢,我们只没举他的右边,没举他的一半。找出他的左端点主要是找左端点, lr 中间主要是找左端点。因为我们要从小到大输出屁小与口输出。所以呢,这个期间呢,二分法找的是 二分法找屁,直找第一个解,第一个解。然后呢,这个时候呢, 中间词 l, l 小于等于二。标准的二分法的写法, may 的等于 l, 加二除以二,除以二。这个时候我们要判断,如果没的相当于 p, 他相当于 我们找的 p 的值, p 的值。而妹的呈上小果号 m 姐妹的就 q 的值。如果他小于 n, 小于 n, 那么说明屁的子小。那个这时候呢,儿的子呢?应该没的。加一去右右区间去找,否则呢,在左区间去找, 否则在左曲间去找。找完之后,这个时候屁的直 p 的值就是 l。 然后呢, q 的值呢?就 等于 m 减 pm 减 p。 然后上完之后,这时候我们只需要再验证一下即可。然后呢,如果 p 成 q 等于 n, 并且 p 加 q 等于 m 等于 m。 这时候呢,我们输出 p 和 q, 这我们不用再判断他的大小了,因为我们找的 p, 他是在小于二分 m 在他这个 左端点左半区要你找的,那你找到这个 p, 用 m 减去这个 p, 他得到 q 肯定是大于 p 的。如果没有呢,我们就输出 no, 速度 no。 这是二分法,二分法为测试一下 啊,这是每级法和二分法两种方法来做的。那最有效的方法能不能达到 ok 的 ok 的复杂度呢?那我们最好是用 数学求解法。数学求解法那同样我们去算,现在已知 m 等 等于 n, 减一乘 d 加二, p 乘 q 等于 n, p 加 q 等于 m, 等于 m, 等于 m。 然后呢,这个时候我们就可以算出 q 就等于 m 减 pq 等于 m 减 p。 那这个时候呢, p 乘上小管, m 减 p 等于 n。 那拆分之后得出 p 的平方减 mp 加 n 等于零等于零。这就变成了一个 一元二次方程, p 的平方加小口号负, m 乘 p 加 n 等于零,一元二次方程他的减,当 b 的平方减去四 ac, 四 ac 小于零的时候,他是五减的。当 b 的平方减四 a, c 等于零的时候,他两个减相等。当 b 的平方减四 a 大于零的时候,他有两个减, 有两个解。那这个时候我们就要判断 b 的平方减四 ac 是否小于零。那在这里面 b 的平方减四 aca 的数值 a 等于一, b 等于负, mc 等于 n。 那么 b 的平方减四 ac, 就等于 m 的平方减四 n。 我们判断 m 平方减四 n 是否小于零,如果小于零呢,就没减。这是一个 第二题呢。第二个,又因为他们算的解是整数整数。而我们在求解的时候,一元二十方程的解解等于二分之 b 加减根号 b 的平方减四 ac。 抽根公式抽根公式 那么复辟。那么这个时候,那这个时候如果根号闭的平方减 cac, 他不是一个整数,那么我们算出来值,他肯定也不是一个整数。所以呢,这个时候呢,如果说根号 m 的平方减四 n, 他不是一个整数, 那么他也是不符合要求的,我们也要速度弄。那么如果他是个整数,这个时候呢, 因为 abc 的值我们都知道,我们可以算出他的解,算出他的解,算他的解有两个,一个是负 b 加上根号 b 的平方减四 ac, 一个是减去减去。 这个时候呢,我要算出两个 p 一, p 二和 q 一和 q 二, q 一和 q 二。 然后呢,我再去验证 p 一乘 q 一,或者是 p 二乘 q 二,哪一个值等于 n, 输出他们中的最小值和最大值即可。这是数学求解法。数学求解法主要是求根公式 和根的判断。这个题呢,其实还是比较简单的好。同样输入 k, 定义三个 n, e, d, 然后呢,输入 k, 输入 k。 这个时候呢, 收循环二等于一,二小于等于 ki 加加 输入 n, 输入 e, 输入 d。 这个用 scove 也是最好用 scop, 避免 数据过过多造成的输入输出读写的时候影响效率。 m 等于一,乘上 n 减一乘 d 加二。我们先算出 m 的值,先算出 m 的值。这时候我们可以判断,如果 m 的平方减去四乘 n, 比例配方减四, ac 小于领,那么他就是无解的,他就是无解的。这时候 如果他小于零,我们可以直接输出,输出 no, 否则否则我们还要判断一下。还要判断一下你这个 b 的平方减四 ac 是否是整数。那这时候呢,我算出他的平方根 k 等于 m, 乘 m 减四, n 减四 n。 如果他他的平方根是个整数,那么 他的平方跟的平方就等于他本人,否则的话,他就 不是。为什么不是,因为可以变成了一个整数,可以变成一个整数,那么他就会减,把他的小数点给去掉。这个时候我们在反向运算的时候,他就 结果就是不一样的,结果就是不一样的。所以呢,算成平方根之后,我们再反向运算一次,验证一下他平方根是不是整数。如果不是整数,也就不等于他。 那么我们要输出,同样输出五解,因为我们要秋的解是整数,然后呢?否则呢, 那是有解了。有解的情况下,我们算出两个字, p 一等于 p 一等于 复辟。复辟呢,那就是 mm, 他的平方根加减到平方根,加上 k 平方根,然后呢, 除上二点零,然后呢, wp 二就等于 m 减 k, 除上二点零。 同样我们算中他另外一个字 q e 等于 m 减 p e q 二等于 m 减 p 二减 p 二。这时候我需要验证一下,如果 p 一乘上 q 一 等于嗯,那么我们就输出输出他们两从小大大输出 p e q e 空格 最大值,两个的最大值 p e q 一最大值。否则呢,他们两个的最大 c 二 q 二 prq 二。 好。这样我们就可以循环 case 就可以解决这个问题。解决这个问题,我们验证一下 好,也没问题。我们现在呢测的数据呢,是我们自己照的数据,官方的数据呢,可能要等到三天以后一个星期才能出来。 所以呢,在官方数据出来之前,出来之后,我们再可以去验证我们的程序是否是完全的正确。现在我们自己照的数据呢,是这几种结法是没有问题的。 大家可以在我们的测评平台上 vmog 点 cn 去 做一下今年的题。用今年的题相对来说,呃,普及组的题相对来说还是比较简单的,大家可以试一下。


同学们大家好,我是勒斯卓科教研老师,现在看一下这道题。输入 n 个整数,整数范围零到一千, 依次输出他们的最大值,最小值和平均值用空格隔开,其中平均值保留两位小数,让你输入三五八十一,让你输出十一五八点零零。 这里边要输入 n 的整数,因为这个个数不确定,所以我们需要用循环。另外这里边要保留两位小书,所以我们要用 flow 的类型,但是前两个一个是我们看 说摁个整数,前两个最大值和最小值肯定是整数,最后一个是词典数,所以我们要把它区分开, 看一下程序怎么变。首先建立变量印,恩,循环需要 i, 还需要输入数,每一次循环都需要输入数字 a, 因为需要求平均值,所以需要一个 sum, 但是我们要把 sum 定义成 flow, 因为一块平均值是有小数的, sum 等于零。 好,这个先加分号啊,先定义这些,首先要 c 印,输入 n 个数, n 是它的数量报, i 等于一, i 小于等于 n, i 加加,每一次都要 c 印 a, 现在他需要输出他们的最大值,最小值,所以在这里边需要定一个变量 max, 为了和我们的 max 函数区分,所以要多加一个 s, 等于 我们在求最大值的时候,要把它设成一呃,比最小值还要小的一个数,它的最小值是零,所以我们把它设成负一。还需要定一个 m, 等于这个 m, n, 也是为了和那个 m i n 进行区分,因为 m n 函数那个名字不能和变量重复。把最小只设成比最大只还大的一个数, 输完以后我们用那个函数来解决更好一些。 max 等于啊, max 函数, a 和 max 就是在 a 和 max 这两个 竖里边挑一个大的,可以,这个 max 就是每一次输入的时候,我们都把最大值存到这个 max, 然后咱们孔里 right i mean, 这是选取最大值和这小值,还有一个求和上加。等 a 输出的时候,我们可以都用 printf, 也可以先 seatmax 和 mn, 之后单独输出那个平均值, 我们采取分开输出啊, ciaton max, 然后还有一个咱们 别忘了加个红歌啊,可以,那个元阳叔叔也可以 是字符,但是不要忘了,然后 streetcom, 哈哈。双引号摆卡第二,这是两位小数,二 s 分号平均值的话我们是用核,注意它的个数和是 sum, 个数呢是 n, n 个, 这个程序就结束了,但是我另一种方法也给大家说一下, 一会儿再打,就是 us 段号,双引号板炮输出整数的话是本号第, 然后空格呢?直接空格输出整数,然后第空格,然后再输出这个分点数,第二二白数,然后做号, 第一个是 max, 第二个是 i'm in, 第三个是 sum three n 这种方法也完全可以, 就是只用 parent f 来解决也可以,然后我们用 sets 之后 parent f 也行, 这个我把它打成注释了,咱们两种方式留一种就可以,否则就重复输出了。 试一下三五八十一 十一,这是最大值,五是最小值,这个是平均值,没什么问题。然后再把这两个打成出事, 再试一下这种方法, 三五八十一,十一五八点零零一样啊,都可以。 还有这个地方我们也可以用 epios 来判断,就是如果 a 大于这个 max, 然后 max 等于 a, 然后如果 a 小于 m, 然后 m 等于那种方法也可以。这里边我就教大家用这个 max m 函数了, 自己做一下吧。



最近我发现不少学生和家长对新学校才考什么的问题还是比较陌生的。 我们中国有句话叫做知己知彼才能百战百胜,就是我们上战场之前一定要把对手也都透彻,才能够获得胜利。我们考试或者竞赛也是一样的,所以无论你是刚了解新学员, 还是已经接触了比较久的时间,还是马上要参加竞赛,我们都有必要静下来,停下来研究一下新型学校在到底考什么的问题,跟着我们一起来对呃第一轮的题型进行分析。 从二零一九年 oip 改制以来,改成 csp 以来,近两年的题目有明显 变化,从初上来看的话,考察范围在扩大,原有的知识点 可能现在你会发现不够了,所以我们考察范围慢慢发现是在扩大的。其次,编程题或者是阅读题的难度都在有所增加,就是出赛的一个特征,复赛就更明显了,难度是明显增加 啊,总结来说的话,你看侧重点从基础知识迁移到了中国运用,难度变化从原来和相对简单变成了现在的较难 提高组的难度提升更加明显啊,就是这两年变化。所以针对这个变化的话,其实咱们备考咱们教学和咱们一些这个技巧 都需要做针对性的调整。 那么他初赛 cpg 初赛的题型包括哪些呢?包括三个部分啊,可以看到第一个是我们的单项选择题, 大家好,选择题总共是十五道题,每道题两分,这就是我们的啊第一部分,第二部分是要阅读程序题,他总共有三道大题,每题大约十二到十三分,总计是四十分,而每道 这个程序阅读题呢,是由六道判断或选择小题组成,也就是一道题里面包含六道小题,这是我们第二部分阅读程序题的一个题型。第三部分叫完善程序题,他有两道大题,每题十五, 共计三十分,可以看到的话,这每道完善程序大题也是由五道小题组成的哈, 所以我们这个 csp 出差分为三个部分,但是这三个部分的话,所有的题型都是选择题,都是选择题,即使是判断的话,他也会用选择的形式出现,也是为了方便我们这个机器批改啊,就是这个,嗯,题目的这个,嗯, 就是批改的话,尽量都是用机就机器来完成的,减少这个人为的因素。 好,那么在往下我们可以看到的是这次考点,那么我们 cspg 初赛呢,考哪些考点呢?分为四大块啊,四大块,第一块是计算机常识, 包括了网络知识,比如说咱们这个网站的这个域名啊,包括我们这个 ttp 的一些协议啊,包括计算机原理啊,这个电脑有哪些部分组成的呀?还有包括一些心理学的一些常识啊,这个历史啊,名人啊,这就是计算机常识部分。 第二份叫数学知识啊,数学知识也是很重要的一个考点啊,叫比如说排列组合、多进字,还有数数最大最小公,最小公约数,最大公斤数啊,这种,这个最大公斤数啊,这种,呃,数学上的一些知识都是我们考到的一个范围之一。 第三部分就是编程语言和数据结构知识,这部分就是我们谁要加学的主要内容啊,学主要内容包括你的编程语言的一些简单语言啊,嗯, 还包括了我们的数据结构,像这样对列数,你需要对这些数据结构有深入的理解啊,还要会综合应用才能把。呃,咱们知识考点能覆盖到最后一部分是算法综合应用 啊,他包括了像我们的地规啊,探亲搜索,还有一些,比如高精度啊,还有这些模拟啊, 还有一些这个美局啊,这样一些这个初级犯法二分啊,还有这个倍增啊,就是我们这个算法综合应用的范畴,但是还有一些高级算法会在复赛的时候再考啊,这复赛的这个 题解,我们会或者是这个题型分析号会单独做一个视频来出,前三项是由我们的单项选择题来覆盖的,而题四项算法度和应用 考察会由我们阅读程序题以及完善程序题来覆盖。 那么接下来的话,我们会用二零二零的真题来给大家展示道理。我们这个是 csp, 是怎么考察我们这个知识点啊? 我们来看我们分析了二零二零年四 sp 的真题,发现计算机常识题他占据了三题,像第一题在内存储器中,每个存储单元被赋予唯一的序号 啊,如果我们认真学习过基本常识的话,可以知道它就属于地质啊。第二题考察是变硬器的一个功能。第四道题考察是我们数据存储的一个基本原理。好, 接下来是我们的数学知识,可以看到数学知识在 c csp 中占据了五道题啊,五道题,其中第九题是我们的二定制转十定制,这是一个最清楚最最基础的一个镜头转化, 然后第十题,第十次题跟第十五题都是我们的排列组合,可以看到排列组合在数学知识中占比是很大的啊,所以大家一定要好好学好排列组合。 那么接下来就是基础语言语数结构题目占了七题,占比是在单选题中最大的, 他需要你对我们编程中通数据结构,还有一些这个基本原理,包括像排序的原理啊,还有像一些伪代码,一些基本应用啊,还有像念表啊,图啊,术啊,他们对有个深入了解之后的话,才能够正 做的做对这些题目。 那单项选择题之后的话,那么就是三道阅读程序题 啊,二零二零的四 sp 呢?第一道阅读程序群就是自助算处理,而这也是一个每年都会有的一个自助算处理的题目啊,基本上每年都会有。 那么第二道题就是我们的 kg 字转化,这道题目需要你认真的读取代码来分析,他不会告诉你这道题目是做什么功能,你要自己去分析。第三题就是我们,呃,最近近两年比较少出现的哈,就是 dfs 的深度微信搜索,他在二零一年烦恼出现了, 一般来说这个搜索跟图论的这个算法往年都在复赛考,在二零二年的时候,呃,把一些简单内容给他提 到初三啊,所以这也是值得我们关注啊,也是值得我们关注。那么第三部分就是我们两道完善程序题,然后完善程序题,第一个是自信数分解,这道题还是属于相对来说比较简单,只要你理解了这个自信数分解的一些基本 方法的话,这道题目拿分也不是很难。那么接下来就是我们的第二道区间问题啊,这是我们的全篇的压轴题,你需要首先知道贪心算法是什么,其实你要知道区间问题的常见贪心策略是什么,你才有可能把这道题目做对哈, ok 啊,那么接下来呢,我也会带大家一起来看一下二零二零年真题的情况啊,我们简单的来快速的浏览一遍, 这就是二零幺五年四 sp 的真题。可以看到的话,第一部分单相选择题快速浏览一遍,包括了这个计算机常识技术变成题目, 还有我们的数据结构电表图,这是数学题啊。二定制,这是排列组合,这是我们的数据结构,可以看到的话,十五到十五到单选题的话,就大概是这么组成。 那么接下来呢,就是阅读程序啊,他会给你一段完整的代码,你需要自己分析这段代码在实现什么功能, 在此基础上完成这个判断题的单选题啊啊。比如说像第一道题, 输入字母串应该由大写字母组成,你就得看懂他的输入在哪,同时他这个输入可不可以是大写字母之外的东西,会造成什么后果,这就是你长期积累编程经验才能得的结论啊。 好,这是单选。第二道题是我们刚刚说过的,是这个 k 进字的题目,如果你看不出来他是 k 进字的话,说明你对第一,你对这个代码或者是编成这个整体的认知可能还没达到一个我们要求的水平。第二个是你要对 k 进字有一定的了解哈。 第三个就是我们的刚刚说过 dfs 题目,这道题目还是有利难度啊,你要看懂它在使用什么功能啊,一定会有一道这个 考察会让你要读懂题目的意图之后才能作答的哈,一定会有甚至不值一提,所以你要看懂这道题目在做什么。这道题目实际上是在做两个呃数列,然后求出他们前任像最小核的一个最小值啊, 就是啊,不是不是,不是这个前任相合,他们是两两进行一个呃累加了,求他们一个最小值。好,那么再往下就是我们第三部分完善程序体 这个题目呢,就他要求的是你第一个还是要读懂这个题目, 理解这个方法,但是他把中间一部分完整代码,完整代码中间一部分给他抠去了,抠去了,你需要 是在这里填上下面的代码,使得这个代码完成题目要求的功能,比如说这道题目就完成的是进一步分解的题目。 再往后就是我们说的压轴题最小区间覆盖这个题目,如果我们上课啊,在我们课程中学过贪心的这个专项的话,你就会知道这是一道经典的这个区间覆盖问题, 你就可以知道这个失误啊。当然你还你,你要理解这个贪心是一个先排序后选择的一个这个框架的话,那么你第一空跟第二空的话,那就很容易能打出来,很容易能打出来。然后三四五的话,你需要 一方面结合这个贪心方法的本质和贪心选择策略,另外一部分你要结合这个代码 自己的这个呃理解能力啊,最后才能得到重点。谈好了,这个就是我们二零二零年 csp 的真题的一个简单讲解啊,那么回到我们的 ppt 上, 那下一个大关系的问题就是多少分才能晋级呢?那将进到第二轮呢,我们来看啊, 我们统计了一下一九年跟二零年两年的一个晋级情况,可以看到哈,不同省份的差别还是非常的大的哈,像这些标红的,先看左边啊,先看左边,二零一九年哈, 标红的这个省份都属于是考分或者是难度很大的这些省份啊,可以看到江苏要八十分才能晋级,这张也是八十分。 广东汽车、澳门、福建和北京属于第二梯队啊,五十四分和五十五分才能进行到第二轮。 你想想看,刚刚那么多题的话,你要做到八十分的话,是是挺不容易的哈,所以在这三个省份的这个学生,你就得比别人更加努力。而有一些省份,像一些这个心理学不是那么发达的省份啊, 像这个甘肃啊,贵州啊,河河南啊,湖北啊,江西啊,他们只需要十多分甚至二十多分啊,二十多分甚至十多分的话,就能够进入到复赛啊,进入到复赛 啊,这也是新英学一个特征。分省差异很大,每个省的普及程度不同,一般来说是,呃,教育资源越发达,这个经济越发达,地方的话,自然这个大家这个综合程度也高, 但是现在这个情况已经慢慢的改变了,我们可以看到在二零年的时候,我们可以从两个维度来分析一下,第一个是每个省之间的分数变化,比如说北京 啊,虽然说这个二零年的题目难度肯定是比一九年难的,但他的分数还提升哈,晋级分数线还提升哈,说明什么?说明北京在学这个新学的人在越来越多, 他们的水平在不停的增加,你要越早学才有优势,越持学的话,这个竞争又越激烈了。但是因为有些其他省份像这个 啊,比如说大部分的水分哈,他们这个路第一轮的晋级线的话,由于难度的加提升的话,他的这个分数是下降的哈,可以看到像安徽、福建,福建是大幅下降 江了,甘肃甚至是广东啊,他们都在上一年级以上分数线有所下降,原因就是题目难了哈,题目难了, 也有例外的,像除了北京之外的还有一个是河北啊,河北从去年的三十五分,从一九年三十五分快速增加到了二零年的四十九分啊,说明咱们河北这种传统高考大神也在逐渐重视这些心理学,所以这些分数实际上是能分析出来, 分析出来各个省的新学的普及情况,普及情况,你的这个呃,趋势是如何,大家的这个水平如何,都可以从其中分析出来啊 啊,这是一个获奖线,获奖线参考意义不大哈,我们就略过了。那么最后一点是我们二 一年的题目猜测哈,根据我个人的经验的话,三年的题目会做一个完整的覆盖,就近三年,前两年呃,就二一年跟一九年已经考过了,所以二一年大概率的话是会考前两年没有考的到内容, 没考到的内容啊,首先单选题的比例应该是不会变化的,数学题,计算机常识和数学结构三分天下, 大概率还是会按照二零零的比例啊,比如说三道教学常识,五道数学题,七道数学结构跟那个呃基础变成题目, 这个比例我认为是不会大变化的哈。所以特别是数学题,大部分都是排列组合专机常识方案,这个设计方面很广,你需要呃,在平常过程中注意积累数学结构的话,那就是好好学我们的课程,把这数学结构的这些基本原理都弄清楚,那么带 安全题问题不大了哈。然后接下来是我们的呃,后面后面两部分大题内容哈。第一个自负题,自助创意题目肯定必考啊,这是每年都会有的一个保留节目啊。自助算题题目他也不他也不难,可以让我们送分题。 二零二零年呢,他没有考察,是地规分制啊,一九年考察了,二零年没有考察,一九年考察了两道地规分制题目,二零年一题没有考察,所以今年有一半概率以上至少会考察考察一题。 然后还有一个是高精度啊,高精度近两年都没有烤,但是高精度在我们的这个 ny 烤缸里面是有 还是有不少的笔墨呢?所以今年我认为大概率会考高定度。 ok, 这就是对二一年停的一个猜测。 好的,有更多的 深度分析的话,请在腾讯课堂搜索书名创客啊,或者联系我们继续专业的辅导啊。 行,那我们今天就简单介绍到这,欢迎大家继续关注我们,给我们点赞哦,再见!

我们拆解今年入门组第一题,小苹果一、问题描述,小歪的桌子上放着 n 个苹果,从左到右排成一列,编号为从一至 n。 小包是小歪的好朋友,每天他都会从中拿走一些苹果。 每天在拿的时候,小包都是从左侧第一个苹果开始,每隔两个苹果拿走一个苹果,随后小包会将剩下的苹果按原先的顺序重新排成一列。小包想知道多少天能拿完所有的苹果, 而编号维恩的苹果是在第几天被拿走的。输入格式,输入的第一行包含一个正整数, n 表示苹果的总数。输出格式输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小包拿走所有苹果所需的天数,以及拿走编号维恩的苹果是在第几天 输入,输出样例、数据规模与约定。 二、问题分析,解读问题关键点。第一问,拿多少轮可以把苹果拿完?每一轮拿走多少个苹果呢?分除以三向上取整的苹果数对吗?嗯,想一想,由于每次都是从第一个开始拿,所以可以想象成在第一个苹果前面始终有两个苹果,这样才是每一次取都间隔两个取一个, 那么每一轮拿走的苹果数应该是这个要取多少次呢?复杂度是 lock 三,大约最多循环五十次。第二问,编号维恩的苹果在第几天被拿走? 实际上每取一轮就有可能会产生一个新的最后一个苹果,所以我们只需要记住第一次取到的最后一个苹果,即当第一次摩三等于一时就是答案。三、代码分析与实操。

同学们大家好,我是勒斯卓科教严老师,现在看一下求圆周率派的金丝哲。这道题题目描述 如下,公式,派除以四等于一,减三分之一加五分之一减七分之一 啊,省一号求圆周率派的近似值,直到发现某一项的绝对值小于十的六次方位置啊,该项不累加输入五输出, 我们把这个派等于需要直接输出圆周率的近四指输入,输出一个数就可以。 这道题第一个问题就是号 问题,第一项这个一我们可以看作是一,除以就是一分之一,他是正的。第二项变成负的,所以我们需要建一个变量来控制他的符号。 另外我们看这个相当于分数,我们看分母,这是三,这是五,这是七,他每次都增加二,所以我们需要另一个变量来控制一下他的分母。还有一个需要求他的和 好,现在我们编一下大宝,因为要输出的是小数,所以建双定度, 先建一个派派是应该等于零,因为他负责累加的,还需要一个。嗯嗯呢,我 我们应用来表示这个分母, 然后 n 的初值应该是等于一,因为是从一开始,一相当于一分之一,他的分母是从一开始 再用一个 a 等于一,我们让这个 a 呢来控制符号。 然后我们要找一下循环条件,循环条件是小于十的负六次方为止,那么就是大于十的负六次方,十的负六次方就是呃,零点五个零,一个一 就是小数点后总共有六位 这个绝对值。我们就看我们用的是这个 n, 没有考虑到符号啊, n 是表示这分母没有考虑到符号,所以我们就是 n 分之一,就是一 b, n 大于等于五点一二三四四六, 这个条件的情况下要重复执行。 首先这个 a 是一,我们刚刚好,这个一是正的,所以我们就直接上 啊,这是三啊,是菜 satin eight 乘以,那到下一项就是三分之一,下一项是五分之一, 我们要乘的是低足以,嗯,我们把这个乘以 a 算,后边 到第二项的时候,他就变成负了,第三项又正的,所以我们要把这个 a 呢等于负 a, 这样他原来因为 a 是一变成负 a 的话,他就变成负一了。 另外我们的这个 n 呢,下一次是三,再下一次入,那么我们要 n 加等二,每次都加二, 这样呢就可以实现整个这个数列向下的问题了。好,我们下午 seat。 但是我们要注意的是,我们求的是这一列数,也就是这个小派啊,他是 属于四分之大派,那么我们要输出的圆周率是这个大派,所以我们要输出这个派乘以四,这样才是求出真正的圆周率。我们试一下 三点一四一五九,这个就是圆周率的近似圆周率,他是一个无限不循环的小数,所以只能求他的近似, 这就是这道题,同学们自己做一下吧。

抖友们大家好,今天我们一起来写一下一零二八这道题。一零二八呢,他要求是输入一个字符,然后输出一个菱形,那这个菱形的形状是固定的,所以呢我们直接呃按样子输出他就可以了。 首先问计算机要一个差类型的变量, 然后从键盘输入到 c, 那第一行他输出的是有两个空格,然后是 c, 然后 是回车,我们来一个偷懒右键拷贝,因为他有五行,所以呢我们继续粘贴。 第二行呢是有一个空格,有三个拷贝, 然后呢这个呢是没有了,第三行他是没有空格的, 嗯,有五个,三个,四个,五个,然后这个和这个是一样的。 coffee 整体好,这个和这个是一样的。我们边眼一零二八 进行假设,新号放进去,好,成功了,我们把它全选拷贝,再进行提交, 好,成功。