快来估分!2020CSP-J2题解和自测

快来估分啦!

今天上午进行了J组的第二轮认证,小编程家的老师们马不停蹄的完成了考题解题。

为选手们提供第二轮认证线上自测。

请关注【小编程家信奥赛】公众号,点击中间菜单领取课程短码后,到电脑上进行自测。

网址是:www.itbegin.com

以下是每个题目的解题思路

供选手参考

【题目概要】

把一个整数n拆分成 2的正整数次幂的和 (不存在2的零次幂)

因为不存在2^0 所以在求和的时候是不可能存在奇数,所以奇数就直接输出负一

只要是偶数都可以写成2的正整数次幂的和

例如 18 = 2^4 + 2^1;

【暴力思路】

这题把n减去最接近他的 2次幂即可最大复杂度为O(276) 可得满分

外层循环为n!=0

内层循环找最接近n的2次幂,每找到一个就输出

【题目概要】

给定n名同学的成绩,和p%的获奖率,每读入一名同学的成绩输出当前读入人数中获奖的最低分.

【暴力思路】

外层循环i举例读入i名同学的成绩,设t为前max(1 , i*p%) 的获奖人数,

内层循环在i名同学中找第t高分.

复杂度为O(N^2),可得到75分。

【优化思路】

100%数据范围:n=10000。

在外层循环读入第i名同学时,我们可以设to数组记录当前分数出现的次数,根据题目分数是不超过600的整数,

那么内层循环找第t高分时,可以选择从高到低范围to数组,记录所有分数出现次数和t进行比较,只要次数不超过t就继续找低分,直到超过为止

时间复杂度为 O(600*n)

【题目概要】

一个&、|、!和变量xi(i从1..n)组成的表达式,对于q次查询,每次查询把xi改成!xi的情况下,表达式重新运算的结果。每次查询都是临时的,即xi的修改只在当次输出有效。

【暴力思路】

循环q,对每个修改重新计算表达式,输出结果。

复杂度为O(q * n),可得到30分。

【优化思路】

100%数据范围:q<=10^5, n<=10^5。

思考:

对每个xi的修改,重新运算可分为两部分来考虑:

l 第一部分:从前面到xi-1的运算。

l 第二部分:从xi修改过后,往后运算。

其中,第一部分跟xi的修改无关,因此可以预处理缓存起来,记为f[i]

第二部分,如果xi修改过后,往后运算某个位置k,运算结果(架设g[k])还是原来的f[k]的话,那么再往后就无需运算了,显然答案不会有变化。

但对每个xi的修改往后运算,直到g[k]==f[k]停止,这样的复杂度还是O(q * n)。

再思考-q次查询,每次修改一个xi,先后顺序有没有可重用的点?

假设两个查询xi < xj:

l 对xj来说,往后求g[k],直到g[k]==f[k]停止,最坏的可能是k==n

l 对于xi<xj来说,往后求g[k],如果到g[j]还是不等于f[j],意味着进入了xj的节奏,那么在j位置就可以停止了,答案就是j位置修改过后的结果。

依次类推,对q次查询排序,从后往前计算,则每次xi的修改最多只需要运算到xi+1,同时考虑第一部分的重用,算法复杂度变成了O(n)。

【题目概要】

一个n*m的矩阵,从左上到右下,每次只能往右、下、上,求路径上和的最大值。

【暴力思路】

搜索回溯,对每个位置递归往右、下、上,走过的不能再走,走到右下角时计算最大值。

复杂度为O(3^n),可得到20分。

【优化思路】

如果只能往右、下走,那就是一个DP模板题,递推方向很明显。

那么增加了往上走,递推方向就大大变难了,对某格子(x , y)来说,可以从左边、上边、下边过来,但从上边过来的最大值又可能会从下过来,出现了回路。

结论:用一个状态f[x][y]表示走到(x,y)位置的最大和,不好做。

思考:分成三个状态呢?

l fl[x][y]表示(x,y)位置,最后从左边过来的最大和。

l fu[x][y]表示(x,y)位置,最后从上边过来的最大和。

l fd[x][y]表示(x,y)位置,最后从下边过来的最大和。

分析一下就知道,结合题目里不能重复走的约束,还是可以递推的,没有回路。

再设f[x][y]为走到位置(x,y)的最大和。

得到递推方程:

fl[x][y] = f[x][y-1]+a[x][y]

fu[x][y] = max(fl[x-1][y],  fu[x-1][y]) + a[x][y]

fd[x][y] = max(fl[x+1][y],  fd[x+1][y]) + a[x][y]

f[x][y] = max(fl[x][y],  fu[x][y],  fd[x][y]);

算法复杂度为O(n*m)。

如果觉得递推方向还是比较难实现的话,可以用记忆递归来实现。

需要参考代码

可加陈老师微信咨询


(0)

相关推荐

  • 数学饭第22餐:数列压轴题放缩技巧(三)

    离家出走,数学饭 本期主打: 通过数列的递推关系式,探究数列的单调性,有界性,进而改变递推关系式的形式,进行放缩处理. 也就是说,无法直达目标时,可以先试试这个数列具有哪些性质,递推关系式可以有哪些变 ...

  • 组合与集合如何搭配

    我们在必修一学习了集合,选秀2-3学习了排列组合,那么如果这两个放在一起考察的话,那该怎么办呢? 今天给大家一个题目,大家可以参考学习一下. 由于截图的原因,可能有点小,大家可以点击放大去看哈.这个题 ...

  • 快来估分!2020CCF NOIP部分题解

    本周的NOIP联赛完满落下帷幕,以下是小编程家教研组老师们提供的前三题题解 T1-排水系统 [题目概要] 给定n个结点和di个单向管道,从接收口出发,排水口结束,每次经过结点将污水均分. [解题思路] ...

  • 「造价」土建计量答案已出,快来估分

    上午考完试,就有同学向小编哭诉,今年土建计量太难了! 相比于昨天考的两门,今天这两门考试确实难度比较大. 尤其今天下午的案例考试,四个小时的时间很多考生还觉得不够用. 反正考过了,来对对答案不就知道了 ...

  • 兰花盆栽,长得越快越该分株,期间切记注意这些小细节

    导语:很多花友在养护兰花之后,会发现整个兰花的状态越来越好,在这个阶段,大家很多时候都会选择给兰花进行分株,但是不得不说兰花分株还是比较麻烦的事情. 很多人在分株过程中也出现了一些操作不当的问题,因为 ...

  • 高中化学,选择题还犯愁“14招快、准、狠的秒杀技巧”快来提分

    高中化学,许多选择题的条件或某种信息比较隐蔽,外加有的答题者知识不全面或理解题意不透彻,常常会引起漏答或错解. 历年各地高考化学试题或高考化学模拟题中,有不少得分率偏低的题目,但这些题目并非难度过大而 ...

  • KPL、巅峰赛中已和澜镜齐名,娜可露露正式跻身T0刺客,快去上分

    大家好我是指尖,不知道大家有没有发现一个问题,从上个赛季开始,娜可露露又重新成了打野的宠儿,从kpl到巅峰赛,分段越高出场率越高,这个英雄到底经历了什么才让她重新被认可,这个英雄又该如何打出好成绩呢? ...

  • 21研途|上交初试、初复试总分双料第一以及快题148分,工作一年后我是如何做到的

    D学长 2021上交初试排名第一(408分) 初复试总分排名第一(572.6分) 本科:安徽建筑大学 几凡冲刺班.评图班及复试班学员 写在开始 在热爱建筑的道路上不抛弃,不放弃,笔下的每一根线条都是有 ...

  • 2017年12月六级答案+估分方法

    六级答案 一分钟教会你估算成绩 大众的误区 ▼ 四六级考试的原始赋分是满分100分,标准分为满分710分,于是有些不明所以的少男少女就会按照原始赋分*7.1=???的方式来计算自己的得分. 请有心机的 ...

  • 最准六级考试真题&答案 | 最准的估分建议

    虫子们久等啦,大家已经看过了不少网上五花八门的答案啦.这一份答案,是考虫的老师们认真做题,校对好几遍才整理出来的.虽然这份答案来得有些慢,不过虫虫敢保证,这是全网准确率最高的答案! 今天先给出一部分, ...