上午 NOIP模拟赛
最近每天上午都是模拟赛了,感觉每打一场信心都少了。
确实有全力认真打, \(4\) 个小时不是磨洋工过去的,但是有时候就是不能想出来。
思维题也太电波了。
A
很厉害的dp技巧题,基本是会这个trick就会吧。
\(O(nm)\) 的复杂度可以过掉这个弱化版。
对于几个数加起来有固定和,且数有大小顺序限制的方案数求解问题,即本题的:
\(a_1 + a_2 + ... + a_n = m\),且 \(a_1 \leq a_2 \leq ... \leq a_n\)。
可以考虑用以下这个思路 dp。
首先把大小关系倒过来做,即将原序列翻转。
\(f[i][j]\) 表示 \(i\) 个数和为 \(j\) ,满足大小关系,且数全部为正整数的方案数。
可以考虑决策是『将当前的数全部 \(+1\) 』和『新开一个位置,这个位置设为 \(1\) 』。
即 \(f[i + 1][j + 1] += f[i][j]\),\(f[i][j + i] += f[i][j]\)。
对于这道题可以同时求每个数乘以 \(b[i]\) 的和,设 \(sum\) 为 \(b\) 的前缀和,大概是
\(g[i + 1][j + 1] += g[i][j] + b[i + 1] * f[i][j]\),\(g[i][j + i] += g[i][j] + sum[i] * f[i][j]\)。
注意加上贡献的时候要乘上方案数。
由于原题 \(a_i \geq 0\),所设状态中 \(a_i \geq 1\)。所以统计答案的时候需要枚举一段前缀0。
B
线段树练习题。
考虑对于每个位置单独考虑『区间取到这个点的时候这个点为 \(1\)』的概率。
这样每个点被一个长度为 \(len\) 的区间覆盖时,就在原来的概率上乘一个 \(\dfrac {len - 1}{len}\)。
这样可以转化成区间乘、区间求和问题。用线段树维护即可。
对于x个不确定的位置,一开始将初始概率设成 \(\dfrac {1}{2}\),最后答案乘以 \(2^x\) 就行。
这里有点不好理解,答案乘的并非是区间里的特殊点个数,而是 \(x\),即总特殊点的个数。
考虑每个点有不同取值的 \(2^x\) 种情况,因为我们将特殊点的概率设成了 \(\dfrac {1}{2}\),所以我们这里维护的概率其实是 \(2^x\) 中情况的平均数。
求和时将平均数乘情况数就是总和。
虽然这两题订正都比较简单,但是考场上自己没有想出来。觉得很遗憾。
订正的时候反而心慌。
因为就算第二题想到了区间乘,也不一定想得到对于特殊点如何处理。
就算第一题想到了dp方程,也不一定想得到如何统计答案。
因为做出来的题想到的过程都太电波了。像蒙出来的。就对自己没了信任。
对自己的思维和实现水平已经不自信了,有点难过。
还有没两天就要考试了,还是不能相信自己的正常水平能走向胜利。
不知道如何调整这样的心态。
考试的时候,一定能做到杜绝低级错误。
但是想不出来就是想不出来,水平的差距不知道怎么弥补。
是因为数学太差吗?
自认为一场场模拟下来没什么思维定式能让我拿下哪题,对自己的积累感到失望和无力了。
策略的问题也挺大。
最近喜欢磕题。做不出来硬做。
明天开始,当一道题让我开始因为想不出来感到烦躁,就跳。
这就是我的跳题标准(暂定)。
还是少胡思乱想吧。赛场上臆想别的选手发挥绝佳或发挥失常对自己都没有帮助。
这几点在剩下的两场模拟里一定要改正了。
就写到这里,希望,不管怎么样,别后悔。
这几个字挺无力的。