不知道为什么学习数学相关的东西总会思绪淤塞,心情烦躁,于是狂贺不止跑来写总结。
第 \(2\) 次 $ NOIP$ 模拟赛进步了整整 \(38pts\),增幅到了 \(30.4%\) ,来到了惊人的 \(163pts\) !
实际得分 \(0+100+63+0\) 。
A.兰亭序
无关风月 我题序等你回 悬笔一绝 那岸边浪千叠 情字何解 怎落笔都不对 而我独缺 你一生的了解
点击查看代码
给定数列 $c_i$ ,问有多少个序列满足每个 $i$ 的出现次数恰好为 $c_i$ 且能划分成两个不降子序列。\(1\le\sum c_i,n\le5000\)
赛时意识到自己忘了 导弹拦截 第二问怎么求了。
一个序列能划分成两个不降子序列的的充要条件是他的最长下降子序列长度 \(\le2\) ,也就是说不存在 \(i<j<k\) 满足 \(a_i>a_j>a_k\)。
考虑从左往右填数,第一个数显然可以任意填,后面填的每个数都要满足其为未填数的最小值或已填数的最大值,所以考虑 \(dp\)。
设 \(dp_{i,j,k}\) 为填完第 \(i\) 个数,已填数的最大值为 \(j\),且已经填了 \(k\) 个 \(j\) 的合法方案数,每次转移时:
那么 \(dp_{i,j,k}\) 可以转移到 \(dp_{i+1,j,k},dp_{i+1,j,k+1},dp_{i+1,x,1}(x>j)\)
- 若填的未填数的最小值 \(<j\),则 \(dp_{i,j,k}+=dp_{i-1,j,k}\) 。
- 若填的为已填数最大值即 \(j\) ,则 \(dp_{i,j,k}+=dp_{i-1,j,k-1}\) 。
- 若填的未填数的最小值 \(x>j\) 则 \(dp_{i,x,1}+=\sum\limits_{j=1}^{x-1}\sum\limits_{k=1}^{c_j}dp_{i-1,j,k}\)
第三个东西使用前缀和优化一下就好,时间复杂度 \(O(n^2)\)。
B.星晴
手牵手 一步两步三步四步 望着天 看星星 一颗两颗三颗四颗 连成线 背对背 默默许下心愿 看远方的星 是否听得见
点击查看代码
初始为 $0$ 的数列 $a_i$ 1. 给定 $l,r,k$,将区间 $[l,r]$ 里的数全都赋值为 $k$;- 给定一个数 \(x\),求 \(\max\limits_{a_y=1}\{(x\bmod y)\times y\}\)。
\(1\le n,m\le3\times10^5\)
\((x \bmod y)y=(x-\lfloor\frac{x}{y}\rfloor y)y\),然后数论分块。
设当前区间为 \([l,r]\) ,设 \(k=\lfloor\frac{x}{y}\rfloor\),则原式为 \((x-ky)y\) 是个二次函数,照常说应找出取最大值的点设为 \(p\) ,则 \(p=\lceil\frac{r+1}{2}\rceil\) ,此时 \(p\) 一定 \(\le l\),所以我们直接查询区间第一个 \(1\) 的出现位置,线段树维护,时间复杂度 \(O(n\sqrt n\log n)\) 。
发现我们有 \(O(n)\) 次修改和 \(O(n\sqrt n)\) 次查询,所以值域分块维护,实现 \(O(\sqrt n)\) 修改,\(O(1)\) 查询就可以通过了。
C.你听得到
站在屋顶只对风说 不想被左右 本来讨厌下雨的天空 直到听见有人说爱我 坐在电影院的二楼 看人群走过 怎么那一天的我们 都默默的微笑很久
P5126 鬼故事,但 \(k\le500\) 。
赛时果断弃 \(A\) 来码 \(C\), 结果发现矩阵是 \(k\times k\) 的,而且还没推出来矩阵,输!
D.半岛铁盒
放在糖果旁的 是我很想回忆的甜 然而过滤了你和我 沦落而成美
Median Queries
改不动,挂个链接。