当前位置:   article > 正文

SD集训总结_sd 预处理图片没有生成文本标签

sd 预处理图片没有生成文本标签

比赛

D1

8:00–8:10 读题,T1没太看懂是什么东西.T2,3暴力挺好写的,先写T2,3暴力。

8:10–9:00 T1,可以写一个暴力,枚举状态,然后dfs跑联通性。考虑性质,貌似点值是单峰的,某个点突出,向四周扩散递减。
9:00–10:30 T1,发现m特别小,可以直接枚举nm,处理每个点i值为j的DP值,凭感觉换根DP就可以了。然后挂了,调了半天调不出来。
10:30–10:40 考虑要不要放弃T1写T2,3,看了几眼题目,满脑子都是T1根本想不了其他的。
10:40–11:00 T1,发现换根的时候多余点的系数贡献没削干净,调整后过掉了大样例。理论复杂度是nm^2logV
11:00–11:50 T1,随便造了一组大数据,发现跑了10s。考虑优化。DP时,对于父亲和儿子值的m^2枚举,可以预处理前后缀,用容斥优化到m,于是复杂度nmlogV.发现快速幂非常之慢,做了[nm*大常数]次,可以直接预处理出nm个逆元,然后数组O1访问,这样只用做nm次。于是卡到了4s,O2 意义下2s。莫名想到光速幂,试了半天反应过来这不同底,根本做不了,如果要离线做复杂度还会多一个log,反而更劣。考虑到评测的机子跑的很快就放了。

回顾&反思

T1: 貌似很直观也很签。如果能想到固定的根的DP,那么做个换根就可以了。不过感觉考试的时候换根思路一开始不是很清晰,导致后面的修改调试耽误了很多时间,没有更多时间思考T2,3,尤其是T2的40分。可能是最近一段时间都没有做过换根DP的缘故?以前做cf什么的发现换根有很多种写法,这次考试的时候也纠结了半天,然而忽略了~~适合自己的才是最好的(划掉)~~一切要依据于题目,最后还是按照自己的想法去写了,效果还是不错的,但是还是显得有一点生疏。

T2:感觉很亏啊,考试的时候不知道怎么就和长度m杠上了,非要多枚举一个长度m,然而事实是总和递增,所以总和本身就代表着一种"有序",所以直接按总和做状态就可以了。感觉这道题想的有点浅(也有可能是几乎没花多少时间在这道题的原因),导致只拿到了n<=30 的弱智分。把维度改一下,40pts就有了。至于正解什么的,实际上就是在暴力DP的基础上进行根号分治,取答案的时候限制一下保证是当前钦定的状态就可以了。比赛时想到过长度有限的性质,但由此想到的都是些队列bfs和剪枝dfs什么的,完全没往根号分治上想。忽然想起来,我好没做过几道根号分治的题目。另外一点小trick就是,这个std非常妙,dp的时候直接开n\sqrt n 是开不下的,但是观察dp式,发现访问下标的跨度只有2m左右,于是就可以建立mod 3m意义下的数组,类似于 3m 进制的滚动数组。

T3:没什么想法。看题解是各种奇奇怪怪的数学推导。等什么时候订过再来upd这一条吧。话说考试的时候莫名想到了狄利克雷卷积什么的,才发现自己对常见卷积以及独角晒这一块有点陌生了,回去后要再看看。

换根DP,根号分治要加强练习。

省选数论,尤其是狄利克雷卷积、独角晒这些东西要复习。

滚动数组的trick。

D2

8:00–8:05 读题,T1又臭又长还是数据结构,先做T2、3。
8:05–8:25 T3,S<=25随便DP做。
8:25–9:00 T2,可以做背包,物品总数最多log个,考虑直接NTT做背包,然后暴力卷k次得到答案。写完调了半天过不去才发现这模数不是NTT模数,需要任模NTT用CRT合并。然而我忘了常用模数有多少根本没法做。考虑暴力试模数,然而我把模数改成998244353也不对就很怪。
9:00–10:30 T1。发现答案与差分有关的性质。n<=1000暴力模拟即可。没有34操作可以线段树。没有3操作可以可持久化线段树。内存已经400MB了。考虑没有4操作,可以splay,但是不太好做。大胆猜测正解就是splay,但是如何支持可持久化呢?不清楚。
10:30–11:50 T3,重新审视T3,n<=1000 可以容斥。思考m-n怎么做。

赛后: T1分析性质时没有考虑ai为负数的情况,即我推的规律在有负数时不成立,挂0.T3 一个1e10级别的long long 没有取模,乘的时候乘炸了,爆long long。总共接起来挂了 50分左右,呜呜呜呜。

回顾&反思

T1: 不知道怎么形容,比赛的时候完全没反应过来数据范围带了一个绝对值,推的性质只在正整数情况下成立,虽说更一般的性质只是稍微拓展一下就行了,但是维护完全不一样然后完美爆蛋。忽略绝对值这种错误不知道犯了多少次了还是犯,很无语。对于正解,性质方面,有个很妙的转化就是发现序列左右反转答案本质相同,所以可以先维护答案的2倍,然后再除以2就可以了,这要比直接维护答案要简单得多得多,思路和实现方面,感觉思路方面主要还是卡在可持久化上了,比赛的时候完全不知道怎么可持久化splay,然而实际上不许要对数据结构可持久化,反过来,可以对操作进行离线,尤其是这种撤回贡献比较容易的题目,往往就可以用到"操作树"这样的trick。
T2:忘记NTT模数就很亏,不熟悉任模NTT就很亏,不然可以再多拿大概30分的部分分的。
T3:啊,忘记取模,做的时候只考虑了对于乘法的取模,完全没注意到一些数字本身就会超过模数,然后炸掉,这一方面是考虑周到与否的问题,另一方面也是经验的问题,这种错误以后坚决不能犯了。

回顾splay.

掌握"操作树"的trick.

复习任模NTT。

注意取模时不仅要对乘法等取模,还要关心数本身的值域,对于很大的数要单独取模。

D3

做核酸耽误了点时间,大概8:10左右才看到题目
8:10–8:15 读题,T2又是个读不懂的sb题。依旧先做T3,T1.
8:15–8:35 T3,对于n<=5000,可以n^2扫,双指针维护选了哪些数,枚举右端点,贪心删除左端点即可。
8:35–9:20 T1,对于n<=5000 暴力模拟即可。考虑数据随机怎么做,想到考虑每个数的贡献,然后就发现这玩意可以直接过1e6 A掉??。考虑每个数的贡献,钦定枚举的数为最大值,二分查找有贡献的区间,再二分找到两边达到min的区间长度,容斥的累计答案即可。注意卡常数,卡过1e6应该是没问题的。写的时候出了一些问题,很快调试完毕。
9:20–9:35 T3,考虑5e4怎么做。莫名想到莫队,维护出当前最优答案即可,然而这种做法实际复杂度无法保证,且不具有正确性。
9:35–10:00 T2,终于读懂题目。对于k<=5想dfs一下,然而仔细算一算发现复杂度爆炸。图有环不好处理,考虑tarjan锁点后变成dag 然后DP,但问题是每个连通分量无法处理。发现k<=5最多走的步数很少,想到对于每个连通分量枚举花了多少步数,然而这非常复杂且还是离不开环相当缩点一点用没有。又想到对于一个开关,其被按超过一次,当且仅当存在一个更大的开关被按了,考虑能不能维护每个开关的状态DP,但是存在很复杂的情况只是维护这些貌似不太够,考虑状压,然而这依旧无法回避环的问题。又想到高斯消元,然而暴力高斯状态数高达2000,n^3复杂度根本完不成,而且得到的解貌似不能保证是想要的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/563480
推荐阅读
相关标签
  

闽ICP备14008679号