2020CSP-S1答案解析及总结

P r e p a r a t i o n Preparation Preparation

回想以前的初赛经历,小学五年级第一次去初赛,差0.5分进普及组复赛,六年级因为特殊原因缺席了
初一第一次挤进普及组复赛,初二初三普及组就比较顺利了,初三挤进了提高组,分数还是挺悬的,讲真对这次初赛没有特别大的把握

于是9.17的时候就开始备战初赛了,起初是做做历年的NOIP,当然成绩不是很理想,开始整理错题复习知识点,写了一个错题本,说实话这个东西确实对我的帮助很大,特别是在修电脑的知识方面。。。

10/05开始正式天天做初赛,第一做了91.5(这辈子第一次初赛上90QwQ),第二次只有76,第三次又搞到了89,然后洛谷初赛做到了94,兴奋地写了题解,没想到看的人挺多的QwQ

然后间歇的刷刷复赛题,就到考试日了。。。


F e e l i n g Feeling Feeling

早上快八点出发去考点,到的时候和各位大佬复习了一下错题(中间趁上厕所的时间甚至开了一把单挑???)
然后做的总的来说还可以吧,由于监考人员的失误,大概开考5分钟了才正式做题,不过无关紧要。
今年是第一年初赛用答题卡的呢,时间还是有点紧
阅读2之前的题都很简单,做得很快,阅读2、3自闭了,完善1和2勉强能做到接近满分吧。。。

今年的阅读出奇的难,我这种菜鸡估计只有80+了
如果觉得作者太菜了的大佬轻点喷,给我留点面子QwQ


S o l u t i o n s Solutions Solutions

...

1~5

...
1:四个选项分别是,A 550、B 511、C 1024、D 558
2:定义题,没啥好说的
3:8分钟=480秒,每秒24帧,对应11520帧。每一帧都是 2048 × 1024 2048\times 1024 2048×1024的像素,且有32位,32位对应4B,相乘得到 11520 × 2048 × 1024 × 4 B 11520\times 2048\times 1024\times 4B 11520×2048×1024×4B,三项分别提取一个1024,得到 11.25 × 2 × 1 × 4 G B = 90 G B 11.25\times 2\times 1\times 4 GB=90GB 11.25×2×1×4GB=90GB
4:如图,最后栈中只剩下a和c,a是栈底,c是栈顶
5:A选项7和18会冲突,B选项7和18会冲突,C选项7和18会冲突。。。

6

....
单独放出来不是因为它有多难或多重要,只是因为它占了两页。。。

7~15

...
7:每个点和每条边只会被遍历一次
8:左右侧各12各点,左侧的每个点都能向右连12条边,所以是 12 × 12 = 144 12\times 12=144 12×12=144
9:常识题
10:可以暴力求解,也可以像我考场一样列 C R T CRT CRT
{ x ≡ 2 ( m o d      3 ) x ≡ 3 ( m o d      5 ) x ≡ 4 ( m o d      7 ) \left\{\begin{matrix} x\equiv 2 & (\mod\ 3)\\ x\equiv 3 & (\mod\ 5)\\ x\equiv 4 & (\mod\ 7) \end{matrix}\right. x2x3x4(mod 3)(mod 5)(mod 7)
M = 3 × 5 × 7 = 105 M=3\times 5\times 7=105 M=3×5×7=105
M 1 = M 3 = 35 M_1=\frac M3=35 M1=3M=35 M 1 M 1 ‘ ≡ 1 ( m o d    3 ) M_1M_1^`\equiv 1(\mod 3) M1M11(mod3),得 M 1 ‘ = 2 M_1^`=2 M1=2
M 2 = M 5 = 21 M_2=\frac M5=21 M2=5M=21 M 2 M 2 ‘ ≡ 1 ( m o d    5 ) M_2M_2^`\equiv 1(\mod 5) M2M21(mod5),得 M 2 ‘ = 1 M_2^`=1 M2=1
M 3 = M 7 = 15 M_3=\frac M7=15 M3=7M=15 M 3 M 3 ‘ ≡ 1 ( m o d    7 ) M_3M_3^`\equiv 1(\mod 7) M3M31(mod7),得 M 3 ‘ = 1 M_3^`=1 M3=1
所以该同余方程组有最小正整数解
x = ( 2 M 1 M 1 ‘ + 3 M 2 M 2 ‘ + 4 M 3 M 3 ‘ ) m o d    M x=(2M_1M_1^`+3M_2M_2^`+4M_3M_3^`)\mod M x=(2M1M1+3M2M2+4M3M3)modM
= ( 2 × 35 × 2 + 3 × 21 × 1 + 4 × 15 × 1 ) m o d    105 =(2\times 35\times 2+3\times 21\times 1+4\times 15\times 1)\mod 105 =(2×35×2+3×21×1+4×15×1)mod105
= ( 140 + 63 + 60 ) m o d    105 =(140+63+60)\mod 105 =(140+63+60)mod105
= 263 m o d    105 =263\mod 105 =263mod105
= 53 =53 =53
所以, x ∈ ( 50 , 60 ) x\in(50,60) x(50,60)
11:爬到第 i i i层需要的体力为 ∑ i = 1 i − 1 10 i = 10 ( i 2 − i ) 2 \sum _{i=1}^{i-1}10i=\frac {10(i^2-i)}2 i=1i110i=210(i2i),暴力带入计算即可
12:如图,画出这个树,然后写出后序遍历即可
13:每一个格子都能和九个格子连边,这样会多算一倍,所以是 16 × 9 2 = 72 \frac{16\times 9}2=72 216×9=72
14:显然
15:修电脑题,不多BB

阅读1

...
1:可以等于1000
2:如果所有 d i d_i di都相等,会输出-1
3:改过来之后如果是不上升序列一定会输出-1,不改的话不一定
4: i , j i,j i,j都判断一次 d i < d j d_i<d_j di<dj d j < d i d_j<d_i dj<di,其实就相当于判断 d i ≠ d j d_i\neq d_j di=dj
5:容易发现那个运算其实在二进制下是不进位的
6:自己看,反例都举在旁边了

阅读2

...
1:显然是 [ L , R ] [L,R] [L,R]
2:运行是不会出毛病的
3:答案应该是 l o g 2 n log^2n log2n,所以四个选项都给分
4~6:作者都错了,无法给出解析(我太菜了5555)

阅读3

...
1:当两串完全相同时,输出0
2~6:作者不是蒙对了就是错了,无法给出解析(我是真的菜555)

完善1

...
1:提示里已经给出按照 w j v j \frac {w_j}{v_j} vjwj从大到小排序,容易看出代码里写的是冒泡排序,所以当前面的权值比后面小时,交换,即 w j v j ≤ w j + 1 v j + 1 \frac {w_j}{v_j}\leq \frac{w_{j+1}}{v_{j+1}} vjwjvj+1wj+1,由于是分数运算,容易有精度问题,两边同时乘 v j ( v j + 1 ) v_j(v_{j+1}) vj(vj+1),即可得到 w j v j + 1 ≤ w j + 1 v j w_jv_{j+1}\leq w_{j+1}v_j wjvj+1wj+1vj
2:若体积不够或刚刚好,才需要考虑后面的
3:初始化
4: p r i n t ( w , v ) print(w,v) print(w,v)其实相当于输出 w v \frac w v vw,之前的 c u r W curW curW都是可以完整选走的,由于输出的时候除了 v [ i ] v[i] v[i],所以要乘下去,然后剩下的空间 ( B − c u r V ) (B-curV) BcurV全部填上 w [ i ] w[i] w[i]
5:如果能完全填满,相当于输出 c u r W curW curW,即 c u r W 1 \frac {curW}1 1curW

完善2

...
1:可以带入二进制下的1010去试验,发现只有 D D D合法,其实其相当于 x − = x & − x x-=x\&-x x=x&x,即 l o w b i t lowbit lowbit
2:观察发现 y y y取走了 a a a的低四位,那么显然 x x x是要取走 a a a的高四位
3:我也错了QwQ
4:低位转移
5:高位转移


有问题和建议可以在下方留言