早上五点半起来赶飞机。网络
下午到北大报到,而后是试机。函数
试机赛有一道 PKUSC 原题,一道造计算机题,一道交互通讯题。感受要完。由于我既不会造计算机也不会通讯题。优化
农园一楼的菜仍是挺好的,就是有点贵。随便吃一点就要 15+,吃好一点就要 25+。spa
开场先看题,而后感受第一题挺可作的,就头铁去写 t1 了。最终写了两个小时仍是写出来了。调试
而后去看第二题,先把暴力写了。又看到有一个全部数都是某个质数的幂的子任务,也去写了一下。最开始写了个比较复杂的作法,后来想到只须要记指数的差就行了,改了一下就过了那个子任务。class
第三题想了很久仍是不会,只能打暴力了。重构
得分:100+49+25=174方法
出考场后据说有人两个多小时就AK离场了。。。im
下午讲评,三题都挺简单的,均可以放成联赛模拟了,但我就是写不出来。我退役吧。通信
晚上回宾馆颓睡觉。
这个质心坐标好像不是全部顶点坐标之和的平均数啊?
只用求出每一个顶点最早接触地面的时间再取个min就行了。
对于每一个顶点,它的 \(y\) 坐标是一个二次函数+正弦函数的形式,那么能够先求出最先碰到地面的时间是在正弦函数的那个周期内,而后求一下导二分一下获得这个周期内的单调区间,再在单调降低的区间内二分获得答案。
时间复杂度:\(O(n\log^{-1}\epsilon)\)
记 \(x_i=\frac{b_i}{d_i},y_i=d_i\)
那么 \(\prod b_i\leq \prod d_i^2\Longleftrightarrow \prod x_i\leq \prod y_i\)
注意到 \(\prod x_i<\prod y_i\) 的方案是和 \(\prod x_i>\prod y_i\) 的方案一一对应的,因此咱们只须要求出总的方案数和以及
\(\prod x_i=\prod y_i\) 的方案数就行了。
时间复杂度:\(O(n\sqrt a_i+n\log^2a_i)\)
注意到把一棵树的点分树沿着原树中的一条边切开后获得的两棵树是每一个点选择他在对应那棵子树中的最近祖前后连成的树。那么反过来也能够把两棵点分树拼在一块儿,就是把那条边的两个端点到根的路径按任意顺序拼在一块儿。
记 \(f_{i,j}\) 为以 \(i\) 为根的子树构成的点分树中,\(i\) 的深度为 \(j\) 的方案数。
转移为
\[ f'_{i,j}=\sum_{k1}\sum_{k2}f_{i,k1}f_{v,k2}\binom{j-1}{k1-1} \]
大概是这样吧
搞个后缀和优化一下就行了。
看完题以后感受第三题比较简单,弄个指数生成函数再反演几下就行了。
而后去看第一题,想了一会想到了 \(O(n\sqrt n\log^2n)\) 的垃圾作法,显然过不了。又想了一会,就放弃去写暴力+一些部分分。
t2 先写了个暴力,打了个表发现了一点规律,就是每一行的最左边一个到最右边一个 \(1\) 中只有前面几个位置可能有 \(0\)。这样 DP 就只用 DP 每行的前面一部分就行了。
得分:\(55+49+100\)
然而又有人AK了。我退役吧。
首先你要会 \(O(n+m)\) 的无修改的作法。
考虑每加入 \(O(\sqrt m)\) 个修改就重构一次,询问的时候就把没有扔进去重构的修改单独计算一下贡献。
时间复杂度:\(O((n+m)\sqrt m)\)
先把所有周长 \(\div 2\)。
考虑一个 \(1\times 1\) 的矩形,能把 \((x,y)\) 的方案变成 \((x+1,y+2)\) 的方案。
记 \(f_i\) 为 \(2S-C=i\) 的方案中 \(S\) 最小的是多少。
还有一个结论:宽 \(\geq 2\) 的矩形中每种宽只会出现一次。由于你能够把两个 \(a\times b\) 和 \(a\times c\) 的矩形变成 \(1\times a\) 和 \(a\times (b+c-1)\) 的矩形。
后面的部分我忘了,想起来再补。
时间复杂度:\(O(n\sqrt n)\)
记 \(f_i\) 为把 \(1\sim n\) 的排列分红 \(i\) 段,每段内都是上升的且每段的最后一个大于下一段的第一个的方案数。
记 \(g_i\) 为把 \(1\sim n\) 的排列分红 \(i\) 段,每段内都是上升的的方案数。
那么 \(g_i\) 就是第二类斯特林数 \(S(n,i)\)
在容斥一下就能够获得 \(f_i\)
时间复杂度:\(O(n\log n)\)
开场先看题,发现 t2 的 80 分以前作过,直接 lct+线段树就行了。而后码了半个小时交上去拿到了 80分。
而后去看第三题,直接把 t2 的代码复制过去加点东西就行了。
t1 不会造计算机,只会三个部分分。
最后自闭了一个小时。
得分:15+80+100
弄一个校验码。单个数的校验码 \(\bmod P=C\),多个数的校验码就把单个数的校验码异或在一块儿就行了。若是 \(\bmod P=C\),说明只有一个出现了奇数次的数。
而后弄 15 个哈希函数,把全部数扔进 15 个桶内,每一个桶中有 1/2 的几率异或每一个值。
最后枚举全部 \(2^{15}\) 个桶的组合,若是只有一个数就输出。
\(F_2\) 下的 \(15\times 10\) 的矩阵满秩的几率约为 \(96\%\),再加上校验码的偏差,正确率为 \(90\%+\)
不会。
先用 lct+可持久化线段树处理全部区间的代价。
而后决策单调性优化DP便可。
时间复杂度:\(O(nk\log^2n)\)
先开 t1。感受细节会不少,想了一会没想到什么好的作法,就写暴力,下一题。
t2 猜想是网络流,试了几种建模方法都不对,就写暴力,下一题。
t3 以前据说过矩乘能够分块作,就写了矩乘 ,把整个 \(125\times 125\) 的网格分红 \(5\times 5\) 个 \(25\times 25\) 的子矩阵,而后每一个节点负责算一个子矩阵的矩阵乘法,最后把全部节点算的结果再传回来。总共要 \(3\times n^{\frac{2}{3}}+1=76\) 轮。
这个通讯题写起来挺麻烦的,各类坐标都要手算,调试也很不方便,写了很久才拿到分。
而后就自闭了。
得分:\(24+8+61\)
注意到初始的 dis 值只有 \(2^{60}\),而不是 \(n\times 2^{60}\)。
大概就是让每一个点的 dis 是最短路的时候才更新其余点。
\(rank_x\) 是 \(x\) 是第几个 dis 值达到最短路的。
第 \(i\) 次入队时 dis 变成 \(2^{60}-i\)
最后一次时 dis 变成 \(rank_x\times k\)
连通块个数最多等价于没修路的边数最少。
而后就直接费用流建图了。S 连到左边的点下限 1 上限 \(k\) ,右边的点连到 T 下限 1 上限 \(k\),每条边费用\(-\infty\),那么就是最大费用(最小/可行)流了。注意不是最大费用最大流。
个人作法每轮每一个点只能向 \(25\) 个点发信息。由于每一个点每轮只能向同一个点发送一条信息。
那么怎样发送更多信息呢?
转发!
假设 \(A\) 要向 \(B\) 发送 \(25\) 个信息,那么咱们就能够先由 \(A\) 向 \(25\) 个节点发信息,而后下一轮这 \(25\) 个节点再向 \(B\) 发信息。
这样就能够把轮数优化到 \(6n^{\frac{1}{3}}+1=31\) 轮。