[总结]2023-7-13A组模拟赛

[总结]2023-7-13A组模拟赛

P1 心路历程#

发现今天的题目描述很直接,比昨天的好懂。

然后发现T2似乎是数据结构,好像找到了归宿,心里踏实了一点。之后就发现自己不会的计数题但是有两道:T1和T3。T4还以为是板子题,然后发现读不懂。

于是就开始干T2(终于不是从T1开始做了!!!),一开始以为要用高级算法或者数据结构:树套树、CDQ等等。然后发现对于一个二维区间判断是否有树可以直接用过二维前缀和。而且答案是可以二分的,不过要用 O(nm) 的时间判断。这样的时间复杂度是 O(Tlog(min(n,m)nm)) 的。

发现数据的 T 很大,这样可能会TLE0pts。着手考虑优化。不过我实在是太蒟蒻了,这个想法怎么样都优化不了一点。

后面想到可以把矩阵中的每一个点都作为左上角,进行扩展正方形,这样是 O(n2logn) 的预处理,处理询问是 O(Tnm) 的,太不优美了。之后就停了很久。

大概9:30的时候觉得不能再这样什么也不打了,于是乎画了画图。发现可以剪枝。最开始我考虑的是一个正方形太大而边界容不下的情况:
image

之后就推出了对答案贡献的公式:

min(x2i,y2j,f(i,j))

其中 f(i,j) 代表以 (i,j) 为左上角的最大边长。

经过一段时间的思考,我发现可以答案可以减少枚举量,类似于下图:

image

图中的阴影部分可以不用枚举,因为无论如何他们的贡献都不可能大于原答案了。

于是就很开心,因为好像能拿很多分。之后边打边注意卡常,全部开register,只写了main()一个函数(怕调用常数太大)。

打完、调完,已经10:40。再看T1,很容易想到设状态 f(i,j) 表示以 i 为根、i 的权值填 j 的方案数,写出了如下转移方程:

f(i,j)=(i=k+1mvsonil=1ikf(v,l))+(i=1mkvsonil=i+kmf(v,j))

然后因为式子实在太抽象了,而且觉得退错了什么。于是又思考了一遍,发现可以用前缀和。以为式子推错了,还以为转移需要把所有东西乘一遍,要再打一个dfs,于是弃疗。

后面的时间也过得很抽象,只有一个小时,要打三道题,都不知道怎么分配,T2打太久了。后面好像是想了一下T3,连暴力都懒得打,之后检查了一下T2,发现一个致命错误,赶紧改过来(我一个比赛就打一道题,还打错,那就不用玩了!!!),再交一发。

后面什么也没干。

P2 赛后总结#

用IOI看了一下,T260分,好像很低。

后面和fy讨论,T2似乎可以用整体二分,但不过ljr好像有更好的方法。

中午睡过头了,下午回机房,发现rnk还能20。我只打了一道题的暴力啊???

和ljr讨论了一下,正解还是用二分,不过可以用二维ST表做到 O(1) check,很神奇。

其他题都没怎么看,全在搞T2。顺便把二维ST表在不看题解的前提下自己推了出来。

然后就是讲题,T1是结论优化DP,T2我讲了自己的暴力,T3是点分治,T4是奇怪的图论,几乎都没听懂。

整个下午全在干T2,和绿老师一起呆到了6:20,其实我早就调完了,然后在等的过程中交了一下,等了很久还在running,于是放弃了,去看绿老师搞T4,后面刷新了一下,发现AC100,2982ms,一发入魂。

这次比赛还是有很多地方要改进的。比如说又把很多时间押到一道题上面。而且这次比赛的心态波动很大,几乎就是想出来一个办法,然后又否定自己,落差感极大,最后心态爆炸,其余三道题的暴力都不想写了。但事实上,没有想象的那么糟糕,如果今天多打几份暴力,可能就会进rnk10,因为比赛题目确实很难。

所以在以后的比赛里面,要做到心态及时调整,要时刻保持冷静。

P3 题目总结#

T2#

感觉非常难以评价的一道题。

首先我们可以延续赛时我的想法,设 f(i,j) 表示以 (i,j) 为右下角的最大边长。之后我们考虑二分答案,二分完答案之后,就可以查询 (x1+mid1,y1+mid1)(x2,y2) 这个矩形的 f(i,j) 最大值。如果大于等于 mid 显然可行;否则,则不可行。再思考一下,发现这个查询是询问二维区间最大值,由于是静态的,而且空间、时间限制很紧,可以用二维ST表。

之后来说一下为什么只用查询 (x1+mid1,y1+mid1)(x2,y2) 这个矩形的 f(i,j) 最大值。首先回到之前那个公式:

min(ix1,jy1,f(i,j))

画图可知,画阴影部分的一定要小于等于 mid ,因为边界问题已经限制它的大小。

image

之后就做完了,要注意一下细节,反正我打错了挺多的,这里说几个:

  1. 二维ST表要先有一维ST表的预处理,就是算出来每行每列的那些值。
  2. 要注意二维ST表转移时那些 +1/1 的问题。
  3. 注意二分,我一开始打的是:如果mid 合法,还把 l=mid1,相当于减小答案。

作者:xmtxlym

出处:https://www.cnblogs.com/xmtxlym/p/17552190.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   小铭同学lym  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示