8.22前部分题目题解

头晕,故回来总结
最近几道题都挺高质,记录下。
8.16:
1.法阵:建模思想。
题意描述不算特别清晰,意思是矩阵染色四个限制,(1)一行内必染A,(2)每行A连续,(3)一列内必染B,(4)每列B连续。
考虑矩阵怎么染色是合法的,可以大致分两种情况。
第一种,B染色部分为两个块,这时可以看出整个图形有一个分界处,设其列坐标为i。
这时就要思考怎么建立模型了,我们先独立分析左边那部分。
首先为了便于分析,我们规定左边的部分在分界线上最靠下的点S严格高于右边部分最靠上的点T。
发现S与T均不可以选到n/0这两点上。
这时考虑我们换一种思考方式,因为可以观察到,在右边的染色固定的情况下,左边的染色只要以该点为分界就一定可行。
反之亦然,然后就能够想到固定枚举左边的端点去考虑右边端点对其的贡献。
那么现在问题就是如果一个端点固定为右/左端点怎么计算贡献。
对S分析,既然它是最下点,那么以它为右下角的小方格一定被染B了,而其下的一定染A。
所以这时候事实上有两个点也在分界上,S左侧的点与上侧的点。
考虑我们枚举出分界线行经情况,首先上侧的点一定由左上角延伸而来,左侧点则是左下角延伸而来。
模拟从两个角上的点走过来的过程,因为限制2,所以不能走任意一步使得到达位置到起始点的曼哈顿距离比上一点要小。
那么它走过的总步数是固定的,考虑用插板法解决计算方案数问题。
这时考虑固定好左端点之后合法的右端点有哪些,因为我们前提限制的是B被分为两块。
所以说,可以发现,对于左侧的每一个端点S来说,它下方的所有点(包括它自己)都可以作为合法的右侧点T计入统计。
如果这里我们暴力枚举右端点的话,复杂度\(O(n×m^2)\),但是显然这里可以从下往上枚举左分界同时统计右分界贡献。
所以做一个前缀和优化一下,复杂度为\(O(n^2)\)(n,m同阶)。
现在考虑第二种情况,B的染色是一个整体,这时我们换个角度看,就是A的染色不连续。
所以把矩阵翻转,问题按照上面一样的方式分析,即可统计完毕。
只需注意一点,在第二种情况下,由于B的染色是整体,所以A左端点固定后,右端点不能等于左端点,否则就会重复统计。
这样就完成了,复杂度\(O(n^2)\)
2.连通块:并查集维护直径。
这个知识点其实之前出现过,但是没有重视,现在回来补补。
首先有树上任何一个点在树上的最远点为树上直径的一个端点。
所以该题问题变成了维护树直径问题。
考虑维护树直径还有分裂操作不好做,所以倒着考虑把边加进去。
因为原树已经给出,所以树上距离也好算,直接在原树上树剖计算即可。
3.未改,但留下位置。
8.17:
1.进击的巨人:二项式定理。
赛时猫树\(O(nklog\ n)\)然后和暴力一个分,已经无所谓了,所以直接讲正解思路。
考虑把贡献的表达式写出。
(l为左端点(开区间),r为右端点(闭区间),cntl/r分别代表对应位置之前的?数量(在1/?连续的前提下)):

\[E(x)=\sum_{r=1}^n\sum_{l=0}^{r-1}(r-l)^k×\frac{1}{2^{cnt_r-cnt_l}} \]

\[=\sum_{r=1}^n\sum_{l=0}^{r-1}\sum_{i=0}^k\binom{k}{i}r^i×l^{k-i}×\frac{1}{2^{cnt_r-cnt_l}} \]

\[=\sum_{i=0}^k\binom{k}{i}\sum_{r=1}^{n}r^i×2^{-cnt_r}×\sum_{l=0}^{r-1}l^{k-i}×2^{cnt_l} \]

后面l的贡献用前缀和,整体直接\(O(nk)\)复杂度解决。
2.未改留位。
3.樱花庄的宠物女孩:
先处理人到达箱子周围所有点的最短路,边权为一,bfs。
然后如果没有箱子,就根据每个在箱子周围的点为起点再去dij,最终直接输出终点步数。
但问题在于它有箱子的限制,所以一个点不能只经过一次。
考虑什么情况下它能够把周边的所有点所有情况都更新。
发现我们进入到一个点的时候,一定是一条边被占用,也就是说,不能从进来的边返回。
所以环路是特殊的,它可以帮助我们枚举到一些其他状态。
那明显我们再次行经这个点的时候,我们一定经过了一个最小环再回来。
这时有两种情况,一种我们从入边的方向的一个环再次进入,这时各个点的情况一致,还是入边无法访问。
但是考虑既然入边侧有环,而且它比左侧可能的环更快的再次更新了该点,这说明左侧可以直接通过该环最快的找出所有情况。
另外一种从左侧一个环折返回来,那么我们左侧的环路可找出所有情况,然后可能会对入边处有贡献。
这里不讨论其他出边的原因是显然的,该边相对于其他出边依旧是入边,情况不会拓展。
那么就发现了,一个点顶多被扩展两次,再多不可。
这样问题就解决了,另外有一点是标程里面事实上是扩展了三次,因为它写的是>2而不是>=2/>1。
关于双指针去实现bfs代替dij,这个还没弄懂,最后自己也是糊了个dij上去,所以暂时不说,但回头会补。

posted @ 2024-09-12 11:42  SLS-wwppcc  阅读(42)  评论(0)    收藏  举报