我的坟头应该开满玫瑰吗?|

YYYmoon

园龄:1年粉丝:20关注:41

省选模拟赛

年前还有几场,全考的字符串……

2025.2.4

这场时间分配还行,但可能是因为t2有一个det(B)没看懂直接放弃节约了时间,时间还是不够的

但先写暴力,撞到头的思路及时放弃是正确的

t1 我醉

暴力分比较多,链的分manacher没开二倍数组!!还有一个细节错了(我的字符串啊……

居然是和 P7206 [COCI 2019/2020 #3] Lampice 差不多的题,甚至还是经典套路

但场上没想到二分+hash能直接判断。更何况还有我宛若没学的点分治,看着像点分治也不会写。

把每条链上的正反向hash值都处理出来并移项,存到unordered_map里,每次查询就行(注意到set常数过大,故使用unordered_map

好家伙,这玩意卡常卡的,得用科技

#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>

using namespace __gnu_pbds;

gp_hash_table<ull,bool>mp;

t2 梧桐依旧

没学过的det,居然是determinant行列式的意思……

这题只能说是有“亿点”抽象,居然是逆用Burnside引理

通过题目条件,我们难以发现这就是问一个 n×n 的矩阵 A ,在一个满秩矩阵 B 构成的置换群中,作用出来的不动点有多少。

|X/G|=1|G|gG|Xg|

等价类的个数=不动点总数/群的大小

移项,得 ans=|X/G|×|G|

|G| 是满秩矩阵的个数,然后求等价类个数,就是 A×B 的不同个数

答案是 (i=0n1pnpi)(i=0nj=0i1pnpjpipj)

需要优化到O(n)

t3 卿且去

机房dalao都说是简单题,但不会min_25筛

式子推的居然是对的,但只是O(n)的方法,死因竟是不会min_25筛,(滚去学知识了

2025.2.5

这场困得不行,先睡了一个小时,最后一个小时感觉啥都不会又摆了一个小时,导致只有暴力分。

t1 蛋糕

神秘题,对统计方案找不到一个统一标准,无从下手

给这题打表的时间完全没必要,因为根本难以计数。。

tj转化太神仙,推式子的一点trick也没见过,另外还有我忘了的杜教筛(实际上想明白转化那一步是最难的

t2 巧克力

只会暴力,想了一个什么线段树维护可持久化数组,复杂度跟暴力一样,没写

tj的想法是正确的,先不考虑可持久化,单看线段树维护区间,合并不用双指针,而是用二分和类似链表,修改打上tag即可

然后就是再用一个线段树维护数组以及权值线段树维护nxt

三颗线段树真的很神仙了

t3 奶酪

竟然是人均AC的树形dp,而我,糖丸了,思路是想到了的,但不知道为什么觉得不可行就放弃了。如果再深入思考一下或许就可以了。

太难绷,最后改题还拍了好久才过。原因竟是没考虑整体最优,需要传递。

2025.2.7

时间分配还行,但又是t2没读懂题面,应该再多读几遍,尝试一下,毕竟三十分暴力还是很多的

t1 鸬鹚

神秘线段树,我开始还以为是扫描线,结果一直不对,只有30pts暴力分

其实就是扫描线的思想!!没想到直接反复插入加上优化就是对的,时空复杂度都对!(空间复杂度:每层最多插4个,log层

t2 雪雀

题面过于神秘。重点是发现题目要求什么,以及在宽为三的情况下不能反复穿过中心线。

然后分治+dp

t3 燕鸥

强势打表题,先打表再感性证明

场上强势打两页表出规律。结果改题还是在打表……

由于最后两项插入时没有那个+--+足够的项去平衡,所以会错

每次在只需要特判最后两项(小循坏内的a[i]-2和整体的n,n-1

2025.2.8

前一晚失眠过于严重,最近还是思路太杂乱了,不能想那么多事情啊。有空瞎想不如去想题……

其实场上第一个小时是无效时间。看t1,对着大样例找规律死活看不出来,此时已经1.5h了。

赶紧看t2,认真想了想发现带着一点贪心策略,大概就是模拟就能拿55pts。t3,开始还想写点什么暴力,结果发现不会那五分n<=20的情况,只有后面两个点是只有两种type还能写点。

还有一个小时大概,感觉真没得写了,还是去算一下t1。这时候就感谢自己最终没有放弃了……手算了巨大量的数据,终于发现不就是按照整除分块来分组,然后统计块内质数个数的阶乘吗。其实应该不难想到,但我硬是在最后20min才过了这题。事实证明,机房大佬人均场切……

t2t3都是抽象tj,大家一起搞了俩小时都没弄出来。最后还得是bobo给了std,秒变代码阅读大赛……

t2 波长

大概就是根据单调性把题目转化为对每个值x求出使最大子段和<=x的最小操作次数

然后用差分约束化简式子,得到一个最短路的形式。发现规律后转化为一次函数维护凸包,最后求面积即可。

抽象tj大概明白,但std一堆指针太难绷。

t3 捕获

又是什么高级tj看不懂。

2025.2.10

还是太保守了,场上看出t1是网络流,但忘了模版了,(就死掉了

结果出来三道都是网络流,合着真是难绷呢……而且没啥部分分的

我t2t3的部分分都挂掉了,不知道为什么,还是改一下比较好

另外心态不好是大忌。看到这场感觉没什么部分分的希望,当时以为自己想到的正解又不会写,就开始摆了。这是很不好的。踏踏实实写部分分是最重要的,对于自己肯定写不出来的东西就当作不会,不要管它。

t1 Delov 的小宠物们

难绷了,虽然它就是网络流,但完全不是我想的那个网络流。。

考虑有四个方向的限制,如果直接对点做限制就会趋势。。

考虑先做限制,再把限制连到点上。但难以满足“最多xxx”,如果是这样,就是点可满足可不满足限制,没有办法把限制确定化。

转化条件:如,横坐标大于等于a的最多选b个。等价于,总共选k个时,横坐标小于a的最少选k-b个。这k-b个就是必须满足限制的。

如此我们就可以对横纵排列下的第i个分别求出它能取到的坐标的范围。源点-k个横坐标-n个点入点-出点-k个纵坐标-汇点。即可。

t2 皮胚

发现每次选择最多只会令(2n-1)条匹配边不可用,因此,最多一共有k(2*n-1)条边有用,连边即可

为了让每个点只被经过一次,就是直接拆点就行

t3 流(flow)

oi圈有个奇怪的定律:题面描述用了什么算法,那么放心,正解一定不是这个算法……

但这题,没想到啊,题面给了个网络流图,答案还真就是用网络流做……所以就是去套路化

这是一个有源汇带上下界最小费用可行流的问题,然而这个“带上下界”其实是假的

对于f和c的大小分类讨论,这个和部分分是一样的。然后对应连边,并建立超级源汇,加入相差的流量,相当于上下界网络流的第一步转化。注意到一定是满流,所以直接跑普通最小费用最大流就行。

2025.2.11

t1 染色

我以为是原题,结果发现其实不太是原题……

难绷,跟昨天乃至之前,同一个问题:想当然,觉得自己好像有一个知道但不会实现的方案,然后就不继续想了

首先我心中的那个东西很可能(大概率以及几乎一定)是错的,其次我们应该发散更多的思路,不要在一个桩子上磕死嘛

事不过三吧,千万不要再感觉什么东西是原题然后就拼命回忆当时的做法。因为我根本不可能回想起来!!不如当作新题去做,可能能做出来的概率才更大一些!!

中间我瞎想到的一个东西,居然是对的!考虑一种换根,把变化量维护出来。但为什么没去写呢?难道是感觉当时不是这么做的?这是最难绷的,因为我完全按照了脑海中那个错误的印象去走了。。。

就是所有题当新题去做。另外,别被机房那群人开始叫,“哎这不简单题吗?……”之类的给影响了。

终于知道为什么我当时想那个换根的变化量没维护出来了。。转换的时候逐层来,每层都会被更新到根的位置!!所以rt的count维护的是整体的黑点信息,下来就很好做了!!!对着错误的式子推了这么久。。

另外,点分树也能做。但我对点分树简直没有什么掌握、、

t2 寝室管理

50pts的点分治。正解居然也是点分治。。。

不是,不是哥们!!!就是那个,统计断一条边的ans+穿过该边的ans!!!穿过该边的ans可以直接计算啊!!!

t3 基因合成

难绷了,场上放原题都做不出来,几乎人人场切

我不记得PAM啊!!!!!为什么这群人都会写板子?!

怎么第二次做还是想不到啊……其实如果只是一个回文串,它对整体而言的贡献不用特殊计算;所以回文串套回文串的情况去算,并处理前后加值的东西

2025.2.13

难绷,八百遍的问题了……心理因素影响还是太大了

首先,今天他们报到,老想着分班这事,换走了我喜欢的语文和化学老师,大悲 T_T 心情很受影响(但其实想想,这又不是能改变的事情……好歹没有换到最抽象的老师

其次,t2又是原题,我一打不出来板子,二没想起来怎么做,还没有上次部分分多,,,怎么又陷入了回忆正解的这种极其不好不容易的情况!自己想,自己想,可能还能好一点

导致t1,t3都没有非常思考充分吧,t1可能本来还是有点机会做出来的。。当然跟人家实力还是差着一截,还是别说这话了

t1 矩形

太唐了,在一档部分分中,最开始没记ans去异或!!

没想到相当于直接维护上轮廓就可以了,用可持久化线段树传递;如果是维护左右端点,就过于麻烦了

考虑到每次修改只会-1,只会影响相邻的两个线段树,所以不用修改太多线段树,太巧妙了!!!

t2 往事

what can i say 呢?SAM板子曾经很熟的,还是忘记了、看不懂了

改过的题,线段树合并维护的顺序是按dfn维护lca,还是忘记了、不会了

t3 [WC2014]时空穿梭

居然是莫反,枚举起止点,套了一个很高级的壳子……

比较坑的点是要计算0的情况

然后就用了一些奇怪小技巧算了什么多项式的系数

代码和思路都不难看懂,但自己推,恐怕还差很远……

2025.2.14

情人节的信竞生,和模拟赛极限拉扯……何尝不算一种**呢是吧……

场上就觉得,完蛋了,这都只会最低档暴力怎么办……结果出分以后,最高70……

而我的暴力还是炸没了。。高精度压位没考虑len,且场上脑子可能真抽了,居然连开个滚动数组节省空间都没想到

头一次发现,你不会的,别人可能还真也不会。。。遇到这种场,暴力打满才是王道……所以还是调整心态吧,考场上一定要保证至少完全发挥出自己的暴力水平!!!(希望暴力打满进省队是真的

哦对了,bobo说别人之前考过,但他们都A了t1……所以其实是有人会的……再次绷不住

t1 划分

奇妙贪心和调整法,太神仙了

首先,我们知道,在把较短的串填满之前,较长的串中不可能被填1,但这个性质不能直接贪心(因为另一方面,我们会希望把0填到尽可能靠后的地方,所以不能直接遇到0就给较短串

我们枚举填到i位,且若有足够的1,则一定是有i-m个1给了较长串,剩下的顺次填入,可以 O(n2)

考虑从i转移到i+1的影响。若 si+1=0 ,那么较长串增大 2n+m(i+1) ,较短串会失去它最低位的1.

考虑到较长串的增量递减,较短串的减量递增,那么不妨找到增量大于减量的极长前缀,取这个i是最优的。

t2 树

好像是fft还是什么没学过的高级东西

t3 划分树

死活没想到 O(n2k) 的dp。。

想链的部分分倒是想到了树的形态和编号段是两个都能进行枚举的东西。但没回去再看一眼前面啊!!就是直接dp编号段,然后check是否符合条件。

居然是考虑扫描线。。先考虑链的情况,符合条件的段,段内最值之差=r-l,又有段内最值之差-(r-l)>=0。实际上对于每一个r,就是寻找取到最小值的位置的dp值之和!然后把当前点和dp值插入。

扩展到一般情况,发现符合条件等价于 [l,r]这些点的导出子图边数=r-l,又有(r-l)-导出子图边数>=0。发现导出子图边数也可以用线段树区间加维护!!于是我们就能做到O(nklogn)

每个位置的信息是O(k)的,若想优化复杂度,只能做O(n)次信息合并。神奇转化:

任意定根并给根一个父亲0,则[l,r]在树上构成连通块当且仅当存在恰好一个点,其编号在[l,r]内而其父亲不在。我们定义区间[l,r]的“不合法度”为 x=lr[fax<l]+[fax>r] ,则“不合法度”为1的区间是合法区间。

我们发现这两个东西分别关于l,r单调,且我们只需要维护不合法度为0或1的位置。如果不合法度+1了,直接pop掉并加入比它不合法度多一的集合。这样就做到了O(n)次信息合并。

总时间复杂度 O(nlogn+nk)

2025.2.15

居然又考原题……这是某人第一次在场上做出来考过的原题……绷不住

bobo今天又说了,“省选最多有全省前两名能A题,剩下都是暴力。对死磕的那种题,要先有基础分,不能0分。考两天,肯定有一天是正常省选模拟,有一天特别难。联合省选,他得考住强省。还是按感觉来。”

好吧,就是暴力。(反正我也只会暴力了……

t1 逆序对

luogu P5972 [PA 2019] Desant

场上一直在试图寻找O(n)或O(1)的方法求逆序对,死活想不到,可能是唐完了……

而且dfs如果能在过程中获得逆序对数就可以剪枝了!而我的状压枚举显然不能。记录状态时直接把值放到状压里,注意到,这样就可以直接用__builtin_popcount()计算逆序对了!(它的复杂度为O(loglogn)近似O(1)

看这么小的数据范围,一般要么折半搜索,要么用状态数很小转移。

f[i][j]表示考虑了前i个数,其状态为j的答案。

正解把状态的记录转化为:记录未考虑数的区间中,相互间隔的已选取的数的个数。通过一系列我不会的求导,我们得到状态数是 O(3n/3) 的。

这题最炸裂的一点在于,vector数组还能直接搞hash!!甚至vector还能直接比较……?!

t2 网格图

原,跟“雪雀”一道题

t3 种苹果

看到重量很小就感觉是要在那里做文章了,乃至于进行某种组合。然后题解给了一个lcm(1,2,3,4,5)=60,并意思是按模60分组之类的,并不能很好的想到具体处理方法。

这题有一个很像的题:LOJ6039「雅礼集训 2017 Day5」珠宝

他们都是用决策单调性优化dp写的。

我们有一个dp,dp[i][j]=max dp[i1][jk×i]+w[i][k] ,其中 w[i][k] 表示第 i 组前 k 个物品的价值,这个分组背包复杂度还是太高

又发现,jjk×imodi 意义下相等,于是对于同一组我们还可以根据 modi 的值分类。

还能发现这个dp有决策单调性,即满足四边形不等式。如果 jk×i 优于 j(k+1)×i ,那么对于更大的 j ,这个大小关系仍然满足。因为 w[i][k] 差分后递减,所以 jk×i 的增长速度大于 j(k+1)×i

注意到这个分组是必须的,只有分完组才满足四边形不等式!!

2025.2.17

难以绷住,本来看到后面俩数学题就是会不了一点,结果t1还写挂了。。。

t1 涩涩的图

按操作来讲,是首次操作就断边,而我在写删边改加边的时候完全没有注意这一点!!

而且暴力根本不需要删边改加边,(就是作死作的

同机房的都是LCT大佬,而我并不能在场上打出正确的LCT

正解的按照加边时间建出最小生成树然后直接启发式合并维护边双,是十分巧妙的。(也是十分好写的,难以理解场上的自己怎么想不到、、

t2 因式寄数

奇妙的转化,然后莫名就搞成了线性方程组,然后莫名递归,看不懂

t3 高维空间

知道部分分是卡特兰数,但是我的卡特兰数一直都跟没学一样。。所以今天的最大收获是学会了卡特兰数(

subtask 1,2 都是卡特兰数很典型的应用,即,一种操作数小于等于另一种。

2025.2.19

和一堆强省的强校联考,知道会寄,果然就寄了

好像也只能拿这一点点分了。。。暴力没挂是最好的。。。希望省选赛场上暴力也千万不要挂

建文件夹时改名字直接点成了删除,直接心跳骤停,难以绷住。。。幸亏找回来了。

t1 抽奖

神秘概率期望。

单调性;除了性价比最高的剩下选的总和不超过 w2。都推出来了,但是不会实操。

且单调性优化不会写,以及枚举余数的部分也能写出正确复杂度。还是菜了。。

突然发现我最开始的暴力式子就是错的!!在我推单调性的时候把一项约掉了!!!所以暴力分是瞎撞上对的!!!!

设黑的x个,白的y个,则选到白的的期望步数设为 ey(注意这样的形式一定是用期望推

ey=xx+y(ey+1),把 ey 解出来就行了

好像知道不超过 w2 的严谨证明了,%w的余数有w种,那么对于能把全部填满需要的kw,在 w2 以内必循环,所以在从全填性价比高的后退寻找最优解时,其它数的和不会超过 w2

t2 树

以为直接贪心换直径的中间会有一点点分的,结果样例就循环了

构造太神秘

但实际上应该去写那个暴搜bfs!一定要从暴力的结果去找规律,先写暴力!!!!

t3 洞

只会暴力,抽象题,具体表现为,换了2个人讲了n多遍没听懂。。

2025.2.20

总算是不配和南方强校打省选模拟赛了,被搞去打联赛模拟了。。

t1 最小最大

二分,但我一开始居然居然直接写了一个while(值域)状物。。。幸亏后来改了。

t2 魔法树

也就在草稿纸上画了区区2.5页树

我现在都觉得我那个做法假得不行(等差数列无交),难以证明;但它得到了80pts。。。(出题人也无法简单证明

what can I say?

又是所有性质都发现了就是想不到的美好情况。。就是直接求gcd(意义是父节点的儿子个数),然后分别判断每个子树内的东西是不是合法(不断递归就行

直接用dfs,复杂度O(nlogn)

t3 合并石子

居然没想到期望转概率,直接枚举值域寻找和小于等于某个数的概率就行!!

没做min-max容斥,不会二项式反演,可能是要似了。。。

我不知道的经典手法:把某个数是第k大的期望转化为 i=1WP(kmaxi),然后计算方案数,把总方案数提出来

考虑对于 ikmax ,我们可以把它转化为 i 的数,至少要选 k 个(这一步转化可能是为了式子更好看?)。进一步,对于 i 的数,我们恰好取 =k,=k+1,=k+2,...,=n 个。(在实际的操作中,我们只需要枚举k大值x,然后把i可以直接转化为我们具体物品的下标,注意下面的代指改变)

fi,j 表示,前 i 个数,我们钦定选 j 个a与b的组合,且他们的组合 x 的方案数。

那么每次转移,我们考虑选和不选的情况,fi,j=fi1,j+fi1,j1×(pi(j1)) .

并且注意到剩下的东西是随便匹配的,就是对 fi×(ni)!

然后就是钦定和恰好的转化,对于 gi 表示恰好选择 i 个,fn,j=i=jnCijgi

gi=j=in(1)jiCjifn,j

t4 连通格子

斯坦纳树板子,但是场上没写对。。。

才看明白斯坦纳树只能枚举子集。。

绷不住,,

终于被数组大的放前面小的放后面这个给坑了,大的维度一定要放前面!!且最好和循环顺序一致!!这东西对常数影响很大

2025.2.22

又是省选模拟

时间分配可能也算是有点小炸了,中间还走神了一会。。不过就是因为t3大家都不会才没有体现出来太多影响

t1 城市地平线

是一道大家都场切的题,而我在最后半个小时才想到了依赖值域的做法,差点没写完(甚至还是因为他们都在叫A了t1了才回去看。。对题目的难度把握不好

但想到那个做法了之后就会感觉有点像某种线性关系,没时间了

还是不会,还是太菜了

t2 合成史莱姆

又是概率期望,真是不会

但没关系我会模拟。。

在推了几十分钟后果断放弃,直接手算n<=3的情况!!推式子,根本不会

于是又算了几十分钟,找到了一个比较好算的方法,过了20pts

最难绷的是我真的每次概率期望的题都只能手算猜结论。。并不能直接严谨地推导出结论

首先,形如这样循环的期望,一定是列方程,考虑化简或者高消。

考虑每个格子上期望有的史莱姆体积,就等价于所有时刻这个格子上的史莱姆体积之和。

e(x,y)=14i=03e(x+dxi,y+dyi)+is(x,y)

其中dx,dy就是维护相邻格子的,is的意思是初始状态有无史莱姆

后面都是对高斯消元的离谱优化。。。

t3 维修喷水管

是真神秘题,场上都没人交(没人有分

而且我根本没有学一个可以处理奇怪几何图形的算法,有人说是积分什么的我也没学过

据说是出题人自己推广了一个算法出出来的。。太强大了

2025.2.23

感觉自己啥都不会,又是一群人说t1是简单题,我直接绷不住了。。。

还是昨天睡太晚了,脑子根本不转

但我也发现了,如果人比较缺乏睡眠,一旦睡下就会睡得很好(今天中午)。所以说前两天失眠应该是因为我睡眠过多了。。。

t1 区间

我没想到set的常数这么大!而且居然有unordered_set这种好东西,我每次也不必要用指针搞了!!害得我只有30pts

还想了一下跟值域的关系,结果我很愚蠢的认为值域也可能达到O(n),但显然这个原因就是我没动笔算。但凡稍微动一下笔,就能发现值域的变化量最多是logn,然后又有一个本身给的a的最大值,那么65pts用双指针就行。。。

正解居然是hash+笛卡尔树。对于比较大的数,居然可以用hash,就是同时模一个数来判断它们的相等关系。对于一个子段,只需要判断它和 2x(A(子段最大值)xA+logn) 是否相等。

根据子段最大值建出笛卡尔树,在一段区间内,查询 ll0xr0r 的合法 l0,r0 。预处理长区间前缀和,枚举短区间查询。哦这东西复杂度证明和启发式分裂一样!看作是倒着的启发式合并,还真是对的。(开始还是对笛卡尔树理解不够了)

t2 圣诞树

暴搜+乱猜结论,看到这个数据范围还是很害怕的,感觉不是那种完全贪心构造的题。。

汗流浃背了,一个2-sat尝试自己写的后果是,几乎建边完全没有想明白+调了5h

首先弄清楚定义:一个节点x(i,j,0/1)的意义是,当前礼物j是否在子树i内

一个小点是,如果当前礼物x在子树y内,那么一定在fa[y]的子树内

这时我们开始推导2-sat的连边,尽量不要直接去口胡

我们先看对原树的连边,考虑选择当前礼物在子树y内,设fa[y]=x,则当前礼物一定在y的所有祖先节点的子树内,且一定不在除了y的son[x]的子树内;反之,如果当前礼物一定不在子树y内,则它一定不在y的子树的子树内

那么就有三种边:(fa[i],j,0)->(i,j,0) (i,j,1)->(fa[i],j,1) (i,j,1)->(son[fa[i]],j,0)

再考虑限制条件,a,b,c

就是如果a选择了在c的某个儿子的子树内,那么b一定不在这个儿子的子树内;但如果a选择了不在c的子树内,那么b一定在c的子树内

两种边:(son[c],a,1)->(son[c],b,0) (c,a,0)->(c,b,1)

这时我们惊喜的发现它跑不出来,其实是因为没有限制把礼物挂到树上!(1,i,0)->(1,i,1)

连边数 O(n2m+qn)

t3 神奇国度

就只会暴力,开始还以为是点分树,后来想到之前好像做过一个,dfs序做一维,dep做另一维的一个什么神秘主席树。(找到了,叫 七彩树

这题是 K-D tree + 主席树

2025.2.25

又是一场人均切t1的美妙模拟赛,而我在最后三十秒才调出来。。。后面两道题是真的一点不会了,t2的搜还写错了,最后还得靠大样例白送。。。

有努力想写部分分的,但真是不会,只能all in t1。不过下次还是要先写部分分

怎么办,一点部分分都不会。。上次遇到这种情况好像还是网络流专场。。。

后两题,一个群论,一个概率期望,都跟没学一样。。

t1 数

开始还以为只有横平竖直,后来发现了还能斜着,就是枚举底边

n^2的式子很快过了,但不会O(n)了。推了三四遍都是同样的式子,结果就是错了。。

还得是手模了一下,才发现奇数的情况是从0开始!!改了又虚空调试了一会,发现写出了形如 2*n+1<=n 的条件判断式,过于唐诗了

还是不对,此时已经剩不到10min了

突然发现我n=m的情况永远是对的,还以为是奇偶性的问题,结果发现我交换nm的时候没换完全!!!

t2 树

感觉应该是Burnside引理,不能找到一个普适的方法对这个图进行合适的计数

当然我的Burnside引理学了就跟学了一样,除非特别板子的题,根本无法自己做出来。。

考虑实际上是对于一个方案,把连向中心的边当成隔板,给它设出来端点两两间隔的点个数,则就是对于 ai=n ,求出 ai

枚举循环节的数量i和长度j,因为我们要避免重复的,所以用Burnside引理,求得系数为 phi(i)ij ,于是可以直接 dp 计算 a 再乘上系数就ok了。

对于这个系数的理解:考虑这个式子等价于满足 gcd(ij,p)=j 的合法p的数量,如果对于一个p(就是置换次数),跟ij有更大的公因数,我们就把它放到最大的那个公因数处计算。即对于 12121212,我们在这样 12|12|12|12 划分它时不计算4这个置换次数,我们在这样 1212|1212 划分它的时候计算4这个置换次数。

考虑对 a 进行优化,经典转化是变成,有n个球,划分成i段,每段必须选一个的方案数。

通过隔板法,我们考虑插入 j1 个分割性隔板,j 个表示选球,则我们会得到 (ni+j12j1)

然后我们会得到一堆推式子的东西。

从组合数到斐波那契数列的一步,机房大佬有人说是生成函数部分的东西,但我还不会证。另外,斐波那契数列用2*2的矩阵就行了,常数小不少。

t3 书

状压枚举栈内状态并高消还是很巧妙的,可以积累手法。

fs=1c+1(fslowbit(s)+i=top+1nfs|(1<<i1))+1

发现转移式子形如一棵树,可以通过在树上O(状态数)来算出答案。前一部分是父节点,后一部分是子节点。

然后发现其实我们的答案只和(i,j)表示栈顶大小为i,栈的厚度j有关。考虑设这个 pi,j 表示有多大的概率它能转移到父亲节点。

如果你已经得到了它子节点概率p们,那么 pi,j 实际上就是 11+(1p)。大概意思就是它在儿子节点及以下终止的情况和+它转移到父亲的情况,其中转移到父亲的概率。(可以理解为上下同时约了c+1

期望的线性性,我们可以把期望走的步数和期望随机次数分开算。我们设 fi,j 表示 sum>w 或出现不合法弹栈的期望操作步数。

设儿子节点的 f 总和为 F。那么在这之后终止走的每次的期望步数就是 Fc+1+1 ,而我们期望走 c+1P+1 次(相当于在这之后操作的概率的倒数),则总体的期望就是 c+F+1P+1

我还是不是很理解。

2025.2.26

太难绷,又是个暴力场。也幸亏我在中段时忙着去把所有暴力打了,最后想了个笛卡尔树t1还是没调出来。

开始机房一堆xxs有点吵,但后来慢慢进入自己沉浸式想题的状态了,好像也就屏蔽了这个噪音。

t1 单峰序列

又是这个"交换相邻",我又一次认为它只是单纯的pos之差。幸亏t1后来先写了基础暴力,才能发现这个问题。非常经典的,"交换相邻"一定是求逆序对的个数。

部分分居然是大家都场切过的原。。。这次一点都没做出来,应该是信念不足了吧

注意到t=0的部分分。我们只需统计每个数在最大数左侧和右侧会产生的逆序对个数,然后由于序列单峰,每个元素在左或右其实是相互独立的,所以直接对它在左右产生的逆序对个数取min求和就行了。

这题给我们一个小启示,就是遇到限制很麻烦的情况时,我们先考虑限制较简单的情况:如,把这题的单峰改为单调试试看。然后考虑把单调数列拼在一起。

这题就是,我们可以直接算出左侧贡献,但右侧贡献必须动态维护。考虑每个点对最终结果的贡献一定是形如一个分段函数,前一部分是右侧贡献逐个增长;到右侧等于左侧贡献时,就变成左侧贡献,不再增长。考虑二分出这个转折点,就可以简单维护。

然后其实log^2的二分好像就能做,但tj给了一个树状数组二分,我写了下,才发现自己根本不懂树状数组的存储机制。

int sol(int k){
		int x=0,np;
		for(int i=20;i>=0;i--){
			if((np=x|(1<<i))<=n&&t[np]<=k){
				k-=t[np],x=np;
			}
		}
		return x;
	}

注意这东西求的相当于upper_bound(k)-1,因为有一些空的t[]也被我们算入了。

t2 划分线段

发现其实只需要在块内分情况选择,且一次一定至少选择一整块,优化一下dfs,就可以50pts了。。

发现性质:这个题给出的条件是一颗树。

对于一个区间x,这个区间的子区间一定在

1)左右侧多出的部分
2)它两个儿子区间的夹缝中
3)儿子区间内

我们考虑在儿子时直接就把子区间选出来(太巧妙了,发现性质但无法想到),设f[x][i][0/1][0/1]表示从子树x中选出i个子区间,由于子区间可能从外部延伸进来(就是在儿子提前选区间),所以还要另开两维0/1表示钦定左端点的左侧和右端点的右侧是否有子区间。

然后发现因为最多划分成2n-1个区间,所以只有[siz[x],2*siz[x])的是有用的。然后我们维护的状态形如f[x][i][0/1][0/1]表示子树x中,还有i个未匹配的区间,左右是否钦定有延伸出去的区间。就和普通树形背包一个复杂度 O(n2) .

注意转移的时候,未匹配的区间是完整的,只是没有匹配而已;对于不封口的区间,我们提前加入它一边的贡献,然后和另一边在封口的时候就可以直接相加。

我们转移的时候就是合并出未匹配的区间或仅仅简单并列,注意要用辅助数组。

最后一步要考虑选左右剩下的部分还是中间夹着的。要考虑封不封口的问题。

t3 红蓝树

考场上写了个暴力就跑了,欠思考了

首先,出入栈可以对应成括号序列,然后红蓝点的贡献就是:对每对括号,将其向其右括号右边的第一个左括号对应的括号连边(没有了就往虚根连),这是一棵树的结构,每棵树苗就是让它到根路径上的树苗全变蓝。

发现形如...(...)的序列,我们先dfs括号内,再dfs它本身,最后dfs它左边,就能得到一个入栈顺序反序的dfs序。此时我们就可以把它放到线段树上做了。

在线段树上维护两蓝点之间的距离好像就可以了。注意到对于颜色翻转的操作,我们还需要维护红点,然后考虑它和蓝点的相互转换。

直接就写假了真是很不错。并非直接维护两个蓝点之间的距离,因为在查询dfn序连续的情况,可能把第一个子树的根劈掉。所以我们需要维护的是dfn序连续的两个蓝点之间红色节点的个数。

由于dfs序优美的性质(注意到这题的dfs序是反的),我们在维护这个红色节点的个数时,只需要逐个向上跳父亲到首个dfs序大于它的节点并加入答案就行。(其实计算一下就是某个蓝点到它和前一蓝点lca的路径长度,也就是说,我们也能发现这就是处理了前面可能把子树根劈掉的情况)

然后我们会少算最后一个蓝点到r路径上的东西,处理一下。

2025.2.27

2025 年湖北省省队选拔集训暨能力测试(同步赛)

难以绷住,时间分配有点不太对,最后的最后居然还在想t3的部分分,没有检查前面的题是很不对的。

t1 居然直接优化一下暴力(比如二分一下之类的)就至少能拿90pts。我当时还以为大家都切了然后我不会呢。。结果大家都是优化暴力。确实这个暴力挺能优化的,还是要相信数据对吧。。(我还以为直接暴力能过随机数的点,结果发现显然是不对的啊,还是得二分一下

t2 到考试快结束了告诉我们大样例错了,简直难绷。我用了unordered_map还t了,以后一定要写哈希表、、但是我写了哈希表又wa了,不知道是不是策略假掉了。没有正确的大样例,无法修锅。。

t3 大家都有45pts大众分,我自己在那儿瞎搞,尝试各种排序方式想直接从下往上把值更新完。结果一直在算重,悲。他们都是树形dp,分为f[x][i],g[x][i]表示选不选根的情况下,x子树内最大值是i的方案数。在dp完之后做一个换根就能求出其他点的信息了!!!我之前还想的是用主席树然后考虑选不选根,结果发现要带修,就放弃了,但其实根本直接dp就好了。。。我势必把这题的dp改出来

本文作者:YYYmoon

本文链接:https://www.cnblogs.com/YYYmoon/p/18698252

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YYYmoon  阅读(32)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起