mx rdf 邮寄

Day -??

被告知来 mx。

Day -2

放了 48h 历时 3 天的暑假。

Day 0

径人踪灭,千山鸟飞

晚上闲的没事去 wc 搓差分宇宙,结果 tm 忘带纸了,给 4 个人发 wx 没一个人回我,最后急中生智上 luogu 才把 KinNa 摇过来。

Day 1

考试。

没啥说的,菜。

T1 写了 70,T2 写了 40,T3 一眼秒了,T4 写了 20。

本来还是有很多分可以写的,但鉴定为脑子瓦特和时间不够就没写,摆摆。

最后交的时候发现 T4 code 不见了(?,发现是之前删文件时删了(??

出场和大家一合计觉得 70+80+100+40=290 是大众分,被踩爆了。

结果一出榜就两个 290 以上的,还是小学生(???

rk3 的也就两个还是 KinNa 和 PC。(upd:PC 在 T3 改时限后豪取 290

一分没挂,但是只有 210,但但是是能排 15。

以下是题解。

T1

一直在想用线段的左右端点做下标转移,最后发现优化不能。

\(f_{i,j}\) 表示以 \(i\) 为最右端点,最多选出 \(j\) 条不交线段的方案数,考虑转移至 \(f_{k,j+1}\)

显然能加的线段有 \(k-i\) 条,故转移系数先乘上个 \(2^{k-i}-1\)

然后考虑能新增的无用线段,有 \((n-k)\times (k-i)\) 条,故再乘上 \(2^{(n-k)\times (k-i)}\) 即可。

T2

首先爆搜能拿 80,嗯。。。

考虑 DP,令 \(f_{i,j}\) 表示在 \([1,i]\) 中,能被 \(a_1,a_2\dots a_j\) 整除的数的个数,考虑静电容斥,那么有:

\[f_{i,j}=\lfloor \frac{i}{a_j}\rfloor+f_{i,j-1}-f_{\lfloor \frac{i}{a_j}\rfloor,j-1} \]

T3

线段树,没啥好说的。

人傻自带 14 的常数但是没被卡,那么又是谁被卡了呢/tx

维护右端点最长 1 段、最长 0 段,左端点最长 1 段、最长 0 段,右端点最长 10 段、最长 01 段,左端点最长 10 段、最长 01 段,全局最长 10 段、01 段即可。

T4

Day 2

练习。

上午梦熊加了 8 道题,于是变成了找原题大赛,通过数最少的两道题是因为找不到。。。

以下是题解。

CF379D

md 洛谷恶评。

考虑造成贡献的只有 \(s1,s2,s1+s2,s2+s1,s2+s2\),所以使用 fib 的方式算出系数,再暴力求解即可。

AT_arc171_d

考虑把 \(\text{hash}(l,r)\) 变为 \((\text{suf}_l-\text{suf}_{r+1})\times B^{n-r}\)

所以 \(\text{hash}(l,r) \ne 0\),当且仅当 \(\text{suf}_l \ne \text{suf}_{r+1}\)

所以对于每队 \(l,r\),连边 \(l\to r+1\)

然后对图进行 \(p\) 染色即可。

P3977

观察到 \(m\) 很小,所以对每行状压,1 表示插眼,设 \(f_{i,j}\) 表示第 \(i\) 行状态为 \(j\) 的方案数。

发现 \(n\)\(10^6\),所以考虑矩阵。

\(A_{i,j}\) 表示上一行的状态 \(i\) 是否可以转移到下一行的 状态 \(j\)

矩阵快速幂即可。

CF757D

直接状压,设 \(f_{i,j}\) 表示 \(i\) 处切了一刀,切完后数集为 \(j\) 的方案数,刷表法转移即可。

PS:不知道为啥填表法寄了 link

P4359

发现 \(k\) 很小,考虑第 \(k\) 大的经典求法,每次取出堆顶,再塞入一些比他小的数。

考虑如何不重不漏地塞数。

考虑对每个数分组。

这里我们按照最高次幂和 \(k\) 分组,每次取出后将其某一项由最高次幂修改为小于上次操作的质数,每次最多扔入 \(P\) 个,\(P\) 为质数个数。

CF906C

朴素状压。

\(f_i\) 表示将状态 \(i\) 变为全部认识的最小步数。

\(O(n)\) 转移即可。

Day 3

考试。

nm 以后不冲题了,md 本来阳历全过了,因为 sb subtask 爆单了,nm。

以下是题解。

T1

赛时没仔细看,其实就是欧拉回路,字典序最小即可,用 set 或者 vector 存个点就行。

T2

期望骗了。

其实不是期望,是分数规划。

只写了 60,A 了再来补。

T3

直接退。

T4

我与 subtask 不共戴天。

做法比较神秘,只能处理 \(|B|\ge|P|\) 的情况(其实另外一种应该也能做,懒得想了)。

对于 \(P\) 的正反串建 SAM,把 \(A\) 的正反串的每一位和 \(B\) 的正反串扔上去跑匹配,跑出匹配位置 \(pos\),和匹配长度 \(len\)

最对于正反串的 SAM 使用线段树合并,但是由上到下,正串是是前缀下标加 1,反串是 \(len-i-1\)

然后扫一遍 \(A\),对于每一位把 \(B\) 插进去使用线段树上按点与算贡献,注意一些边界问题。

我真是天才。

Day 4

练习赛。

上午七道题,切了中心对称的 4 道题,赛后补了 6 道(懒

以下是部分题的题解。

CF623B

比较厉害啊。

考虑 \(a_1\)\(a_n\) 总会有一个被剩下来,所以对于 \(a_1-1,a_1,a_1+1,a_n-1,a_n,a_n+1\) 分解质因数,然后对于每个质因数去跑 DP。

具体的,设 \(f_{i,0/1/2}\) 表示到第 \(i\) 位,删前、删中、删后的最优值,正常转移即可。

CF1139D

神笔期望。

大力推狮子:

\[\begin{aligned} E(len)=&\sum_{i\ge1} P(len=i)\times i \\ =&\sum_{i\ge1} P(len\ge i) \\ =&1+\sum_{i\ge1} P(len>i)\\ \end{aligned} \]

又因为 \(P(len>i)=1-P(len=i)\),所以有:

\[\begin{aligned} E(len)=&1+\sum_{i\ge1}1-\sum_{d=1}^m\mu(d) \dfrac{(\lfloor \frac{m}{d} \rfloor)^i}{m^i} \\ =&1-\sum_{i\ge 1}\sum_{d=2}^m\mu(d)\dfrac{(\lfloor \frac{m}{d} \rfloor)^i}{m^i}\\ =&1-\sum_{d=2}^{m}\mu(d)\dfrac{\lfloor \frac{m}{d} \rfloor}{m-\lfloor \frac{m}{d} \rfloor} \end{aligned} \]

直接算即可。

CF1260E

显然 \(n\) 是必然要买的,考虑让他收益最大化,也就是消灭 \(\dfrac{n}{2}\) 个人,那么剩下 \(n-1\) 个人中,会剩下 \(\dfrac{n}{2}\) 个人,我们需要让最强的人花费最小即可。

递归下去就是最优答案。

所以开一个堆,里面存打不过的人的花费,依次加入,每次遇到 \(2\) 的整数次幂取出堆顶即可。

Day 5

考试。

怎么说呢,

咱就是说,

能不能,

害,就是说,

别卡常了行不行啊!!!!!

T1

数位 DP 赛事胡了个 70 就走人了,然后被卡成了 40。。。

\(O(n)\) 但是带 \(2^{10}\) 巨大常数做法很显然,现在考虑真正的 \(O(n)\)

容易发现状压的原因是因为在有上界限制下,之前选了哪些数对当前状态是有后效性的,所以需要状压。

但是。

在没有上界限制下,是无后效性的,所以只记忆化无上界即可。

T2

比较神秘。

赛时考虑了一个线段树上维护 3 值的做法,巨大难写。

实际只用一个维护区间最值的线段树即可。

考虑现在有一个长为 \(n\) 的递增序列,显然从后往前暴力扫一遍相邻的三个数就行。

那么在无法形成三角形的情况下,肯定有 \(b_{i-2}+b_{i-1}\le b_i\) 又因为 \(b_{i-2}\le b_{i-1}\) 所以有 \(b_{i-2}\le \dfrac{b_i}{2}\),非法情况的下降速率是 \(\log V\) 级别的。

暴力查找最大值即可。

T3

多项式,不会。

T4

神秘,还卡常。

赛前 tby 说是园方树,直接给我唬住了,以为是园方树上容斥之类的神秘东西,结果发现直接建边双树然后淀粉质即可。

Day bleem

我也不知道为什么加在 4 后面了。

今天是 noi Day2。

本来觉得 HE 能来个 Au 的,但看来还是差一点。

看到了很多强大选手退役了也是很惋惜,但是自己明年可能连队都进不了,更加惋惜。

但但是是明年 Honkai:Star Rail 联动 fsn-ubw✌。

但是如果退役的话小 ez 会给你提前开学,可能玩不上。

没退役的话,会给你补课,也玩不上。

唉,玩不上,哎。

拜谢 APJ,fls,耳朵龙,LAP,haosen,ReTF,Estelle_N,yswn,jijidawang,5k(排名不分先后)。

Day 5

摆烂日。

从 Day 4 晚 10 点发手机到 Day 5 早 10 点除去两个小时睡觉时间一直在万元神捏。

Day 6

考试。

给自己糖丸了。

上来直接把签到认为最不可作的题,于是全场几乎就我没切。

T1

优先队列板子。

T2

对于 60 pts 来说可以按位贪心,做 \(q\) 次,复杂度 \(O(qn\log V \alpha(n)))\)

对于 100 pts 我口胡一下,先预处理决策树,将 \(q\) 个询问离线下来在上面类似整体二分的跑。

T3

不是这数据怎么这么水。

正解应该是现在线把 Trie 树补满,再把其他询问离线下来剖一下。

其中找 \(S[1:k]\) 时应倍增跳 \(k\) 级祖先,要不然复杂度不对。

总复杂度 \(O(q \log^2 \sum |S|)\)

T4

但是数据水了。

考虑跟前几天 T2 一样的做法,每次取出最大值 \(mx\) 和子区间和 \(sum\),容易发现符合条件的情况是 \(mx<sum-mx\)

故失配时 \(mx\ge sum-mx\)\(mx\ge \dfrac{sum}{2}\),所以最劣适配次数是 \(\log nV=\log n+\log V\) 级别的。

然后暴力计算即可。

时间复杂度 \(O(q\log n(\log n+\log V))\)

但是其实常熟巨大,目前 lz 的 T 在 #14 上了。

PS:好像时间复杂度分析有误,但是我也不会分析正确的。

现在是纪事本末体了

之前编年体写起来太费劲,也没什么优势,故弃之(主要是咕了会很明显)。

2024/07/26 T1

原题是 Baekjoon 19064 by 神之眼拥有者素纸盒

抽象贪心。

深刻体会到了优先队列不能 lowerbound 的劣势。

没有字典序最小的限制还是很好处理的,考虑加上限制。

显然原序列中每个数会向左向右找位置,考虑依照向左向右分段,显然段内只要不变向任意互换位置是无影响的。

然后赛时想到了这,下面的就不会维护了555

然后使用人类智慧,对于向左的段贪心的把大数尽可能往右放,向右的贪心把小数贪心的往左放。

然后使用 set 依照上文求一下就行了。

2024/07/26 T2

原题是 Gym 225975L by 神之眼拥有者素纸盒

神秘根号分治。

首先考虑一下答案怎么算,有:

\[\sum_{i=1}^n a_i-\sum_{i=1}^{n-1} a_i\times a_{i+1} \]

然后对于每种颜色根号分治,对于掌管灯泡个数小于 \(\sqrt{n}\) 的 1 类颜色的暴力维护,对于大于 \(\sqrt{n}\) 的 2 类颜色的考虑预处理。

先考虑 1 类颜色和 2 类颜色的情况,处理 1 类颜色暴力处理就行。

对于 2 类颜色和 2 类颜色的情况,因为 2类颜色一共只有 \(\sqrt{n}\) 个,所以直接归并暴力处理就行。

2024/07/26 T3

有来源,但是看不到。

\(m=1\) 时小算一波 SG 函数就行。

考虑有多棵树的情况,容易发现我们不能只用先手必胜或必败来描述这棵树。

考虑使用一对 0/1 对 \((a,b)\) 来描述。

\(a\) 表示先手期望胜胜还是败。

\(b\) 表示先手期望败胜还是败。

考虑四种情况:

  1. \((1,1)\) 先手一直赢

  2. \((1,0)\) 先手要想赢就能赢

  3. \((0,1)\) 不能要

  4. \((0,0)\) 一直输

所以只需要统计 \((1,1)\)\((1,0)\) 的个数就行了。

2024/07/26 T4

不是难度递降十八。

考虑经典公式,设 \(f_{i,j}\) 表示 \(i\) 个人选出 \(j\) 个人在 \(S\) 集合中的概率,那么有:

\[f_{i,j}=f_{i-1,j}\times (1-P)^j+f_{i-1,j-1}\times P^{i-j} \]

直接算是 \(O(n^2)\) 的。

考虑优化。

场上有 nb 老哥想到了。

发现转移不只有上面这一种转移,还有:

\[f_{i,j}=f_{i-1,j}\times P^j+f_{i-1,j-1}\times (1-P)^{i-j} \]

和上面含义相反,上面表示向 \(S\) 中加一个 \(i\),下面表示向 \(S\) 中加一个 \(1\)

然后联立解方程就行了,需要特判 \(P=\dfrac{1}{2}\) 的情况。

2024/07/27 T1

神秘题。

考虑观察性质。

发现如果有两个类型相同的树桩,那么从左侧飞来的豌豆一定有附魔,而右侧一定是 0/1 交错的,所以附魔和不附魔是交错的。

依据这点讨论即可。

2024/07/27 T2

对于部分分可以考虑 bitset 暴力艹。

考虑正解。

对于每一个 \(i\) 我们考虑他可以到达的区间 \([l,r]\)

经过讨论发现始终是连续的一段,所以依照上面所说按行讨论,最后差分计算即可(?

2024/07/27 T3

考虑每个时刻,有刺的点始终是一个连通块。

那么每次移动相当于找出一个里 \(x\) 最近的点为根,把连通块拉出来,再把叶子节点删掉,所以每次只需要维护叶子节点个数即可。

2024/07/27 T4

类人智慧

由于 \(n,m\le 8\times 10^4\),所以 \(nm\) 有 90pts。。。

正解是 \(O(n\sqrt{n\log n})\) 的分块凸包,不会。

2024/07/29 T1

抽象推狮子。

\[\sum_{i=1}^n|a_i-b_i|=\sum_{i=1}^n\max-\min=2m-2\sum_{i=1}^n \min \]

然后隔板法求即可。

2024/07/29 T2

首先 \(O(Tn^2)\) 是好想的。

考虑矩阵,这是容易的。

但是因为他要求 \(1\dots T\) 答案的异或和,所以不方便,但是分块。

把答案记录下来每个块暴力统计即可。

2024/07/29 T3

对于每个点求出 \((x_i+c_i\times a,y_i+c_i\times b)\in S\) 的最小的 \(c_i\)

考虑依照 \(x_i\bmod x\) 分组,然后暴力统计即可。

2024/07/29 T4

大力卡常。

考虑分块。

对于每个块预处理出 \(g_{i,j}\) 表示块被覆盖成 \(j\) 是的答案,可以 \(O(V\log \log V)\) 求出。

2024/07/31 T1

爆搜,挺牛马的,需要预处理和大力卡常。

赛时使用神秘优化挂大分。

2024/07/31 T2

md暴力加个记状态就行了。

考虑暴力。

对于每个点分别考虑,发现影响答案的只有到根链的向左向右个数和自身,全放状态里,大力组合数即可。

2024/07/31 T3

鉴定为今天脑子瓦特了,连着两道都是离正解差eps。

先转化。

赛时很快想到了,对于每一对 \(i\&j=0\)\(i,j\) 连边,最后对于每个连通块贪心即可。

发现是 \(n^2\) 的。

考虑优化建图,对于 \(s\) 向它的每一位 \(1\)\(0\)\(t\) 连边,最后把每个 \(a_i\)\(a_i\) 的按位取反连边,跑 tarjan 求 scc 即可。

以上为单向边。

2024/07/31 T4

转化一下,有:

\[\sum_{i=1}^n\sum_{j-1}^n dis(i,j)\times \dfrac{K}{k_ik_j} \times \max\{0,\min\{r_i,r_j\}-\max\{l_i,l_j\}+1\} \]

一眼淀粉质。

因为有相乘所以把柿子拆开。

对于一个分治重心开一颗线段树在 \([l_i,r_i]\) 存上 \(dep_i\times k_i^{-1}\) 的和和 \(k_i^{-1}\) 的乘积,每次询问计算 \([l_j,r_j]\) 的区间值即可。

时间复杂度 \(O(n\log^2n)\)

2024/08/02 T1

首先有显然的 \(O(nm^2)\) 的 DP 狮子:

\[f_{i,k}=\min_{j\le i} f_{j,k-1}+w(i-j) \]

然后发现是若干次 \(\min +\) 卷积的形式,直接快速幂即可。

但是我不会 \(\min +\) 卷积啊喂

2024/08/02 T2

赛事看错题了,导致在错误做法的路上狂奔 2h 成功保单。

首先依据贪心,先建反图对每个 \(T\) 跑一边可达点。

然后对于每个可达点 \(u\) 选编号最小的 \(v\) 连边建新图,那么会形成基环森林,然后再在基环森林上暴力跳看是否可达 \(T\)

最后对于询问,我们对于可达的点在书上倍增跳即可。

2024/08/02 T3

这种题就是很一眼的先找出 \(O(nq)\) 暴力在上线段树维护的东西。

但是我不会 \(O(nq)\) 暴力啊喂

根据人类智慧有:

从左端点出发,每次优先满足左边第一个不为 \(0\) 的元素,要求满足完成前 \(r-l\) 个元素后,最后一个元素恰为 \(0\),且贪心过程中每个元素均非负则有解,否则无解。从右端点出发是对称的,如果能找到右端点出发的解那么反向就是左端点出发的一组解。

然后由于每个数至少要进行一次 \(-1\) 操作,所以先对 \(a_i\) 整体 \(-1\)

然后考虑把这玩意推成能维护的东西。

设在 \(i\) 处来回跳了 \(b_i\) 次,那么根据贪心有 \(b_i=a_i-b_{i-1}\),瞪几眼发现这玩意跟奇偶性有关,所以对奇数位和偶数位个开一棵线段树即可。

2024/08/02 T4

flow。

这场我确实写了 flow,但是 T3。

发现是一个长得很像分数规划的东西,所以理所应当的先二分。

然后发现这玩意不能像分数规划那样写,因为有组合技。

考虑一下狮子:

\[(\sum_{i=1}^n a_i)^2 \le x\sum_{i=1}^n a_i^2 \]

可以化成:

\[\sum_{i,j\le n} a_i a_j\le x\sum_{i=1}^n a_i^2 \]

然后根据数据范围理性猜测这玩意可以写成 flow。

确实可以写成。

对于每一对 \((i,j)\) 可以看成是一个组合收益 \(p_{i,j}\),然后根据只有全选才能获得这个收益的性质,很难不联想到最大权闭合子图。

然后对于限制再在图上加一条竖插边即可。

2024/08/03 T1

比较神秘啊。

赛时没细想转化,然后狂砍 20pts。

其实就是对于每一个数做唯一分解,那么对于同一个底数来说,它上面的指数是可以任意排列的,这是可猜的。

那么我们要求和最大并且积不变,那么也就是把指数排一遍序,从大往小取即可。

2024/08/03 T2

赛时看错题了但是过大洋里了

先考虑没有 3 操作时怎么做。

我们可以把柿子拆开:

\[\begin{aligned} &(-1)^{dep_u-dep_v}\times (a_v+b_v\times (dep_u-dep_v))\\ =&(-1)^{dep_u-dep_v}\times (a_v-b_v\times dep_v)+(-1)^{dep_u-dep_v}\times b_v\times dep_u \end{aligned} \]

容易发现最前面常数项就是奇偶性讨论,后面直接拆成两部分算链和和子树修改即可。

然后考虑加上 3 操作。

对于前半边没什么好说的,直接 dfn 序上推平即可。

关键是后半边。

我们使用差分,但是线段树。

因为你对于一个子树来说你进行子树修改,差分的是 \(dfn[u]\)\(ed[u]\),那么你进行区间推平的时候直接对于 \(dfn[u]\)\(ed[u]+1\) 推平即可,因为你差分的区间只可能被包含或者包含。

被包含就恰好是子树,包含就正好无关。

另外为了考虑端点不重合的情况,我们使用欧拉序。

2024/08/03 T3

容斥。

有显然的做法是设 \(f_{S,i,d}\) 表示状态 \(S\)\(i\) 结尾走了 \(d\) 天的方案。

可以上矩阵,复杂度 \(O((2^kn)^3\log d)\)

这是错的。

我们考虑一下没有限制时。

直接跑路径计数即可。

对于有限制我们可以这么想,直接钦定某些点选或不选,容斥即可。

复杂度 \(O(2^kn^3\log d)\)

2024/08/03 T4

不是乱搞给我放过去了???

正解是线段树分治,对于每一次修改指把 \(1\) 改成 \(0\) 扔线段树上。

然后暴力线段树分治,注意实现的复杂度不要写假了。

2024/08/05 T1

居然是签到惊讶了。

很简单的二分答案然后 dij 求最短路判合法性。

有神秘细节,但是好像因为我的写法导致没挂(?

2024/08/05 T2

贴个 70pts 的做法。

考虑朴素狮子:

\[f_{i,j}=(j-a_i)^2+\min\{f_{i-1,k}+|j-k|\} \]

直接算是 \(O(nV^2)\) 的。

这是发现 \(f_1\) 是凸函数,归纳一下发现不只是 \(f_1\) 其他 \(f_i\) 也是。

然后发现 \(\min\) 里面的东西就是两个凸函数相加,且随着 \(j\) 的变化,极值点单调不降。

所以就有了一个 \(O(nV)\) 的决策单调性做法。

2024/08/05 T3

不是,谁家 noip 模拟赛放支配树啊。

是 DAG,所以不用使用 tarjan。

建出支配树后就好说了,直接求树上若干路径并就行。

由于 \(q\) 高达 \(1e6\),所以我们选用 \(O(1)\) 做法。

最朴素的做法是树剖线段树双 \(\log\),但是我们根据虚树的建发求出一个单 \(\log\) 的做法。

将点按 \(dfn\) 排序,然后求相邻两点 \(lca\)

但是还不够优秀,我们可以使用 \(O(n\log n)-O(1)\) 求 lca 和离线桶排优化至 \(O(1)\) 询问。

2024/08/05 T4

不会。

2024/08/07 T1

签到。

对于 \(k\) 的每一个因数 \(d\) 分别考虑,然后去 \(a\) 中找长为 \(i\) 的子串和去 \(b\) 中找长为 \(\dfrac{k}{i}\) 的子串,然后计数。

时间复杂度 \(O((n+m)\sigma(k))\)

接下来是正题

另一种做法,期望复杂度比另一种更优。

考虑如何寻找 \(a\) 中长为 \(k\) 的段个数。

\(s\)\(a\) 的前缀和,那么有:

\[\begin{aligned} f_k=&\sum_{i=1}^n \sum_{j=i+1}^n[s_j-s_i=k] \\ =&\sum_{i-j=k}(\sum_{a=1}^n[s_a=i]\times\sum_{b=1}^n[s_b=i]) \\ =&\sum_{i-j=k} g_ig_j \end{aligned} \]

然后我们进行一下下标变换,令 \(h_{n-i}=g_i,f'_{i+n}=f_i\) 有:

\[f'_k=\sum_{i+j=k}g_ih_j \]

然后就可以愉快 NTT 了(((

复杂度 \(O(n\log n+m\log m+\sigma(k))\)

2024/08/07 T2

也是签。

但是因为上界细节的原因大部分写二分的坠机了。

考虑二分,树是简单的不再叙述。

考虑基环树。

树边也是简单的,考虑环边,进行分讨。

如果有少于两条环边需要背赋额外权,当成树做就行。

如果有大于等于两条环边需要背赋额外权,选出其中权值最小的两个当成一个使。

即当一个用完了再开另外一个。

复杂度 \(O(n\log n)\)

2024/08/07 T3

不太会,贴个 60 分做法。

分别考虑一对 \((i,j)\) 算贡献。

那么当一对 \((i,j)\) 产生贡献时,他们中间的一些必经点肯定没被割掉,记 \(x\)\((i,j)\) 的必经点个数,那么这对 \((i,j)\) 的贡献为:

\[\begin{aligned} &\sum_{k=0}^{n-x}\binom{n-x}{k}k!(n-k)!\\ =&\sum_{k=0}^{n-x}\binom{n-k}{x}x!(n-x)!\\ =&\binom{n+1}{x+1}x!(n-x)!\\ =&\dfrac{(n+1)!}{x+1} \end{aligned} \]

所以统计每对点对间的必要点计数即可。

2024/08/07 T4

dp of dp。

挺形象的。

把背包压状态里然后数位 DP,需要大力卡常。

2024/08/09 T1

贪心。

赛时细节写挂了以为自己策略错了,后来发现是 shaber。

贪心的考虑让出现次数最大的几个当绝对众数,考虑剩下的数塞进去能不能没有剩余。

复杂度瓶颈在排序,所以二不二分都一样。

复杂度 \(O(n\log n)\)

2024/08/09 T2

4-sat 计数。

可以给出题人发图灵奖了。

实际上是神秘找规律计数。

考虑每个必要点间形成的连通块。

打表发现,树的情况对答案的贡献是 \(x\),环的情况是 \(1\),基环树的情况是 \(2\),其他情况则为 \(0\)

将贡献相乘即可。

复杂度瓶颈在于确定连通块形状是 \(O(k)\)\(O(k\alpha(k))\) 的,\(k\)\(1\) 的数量。

2024/08/09 T3

很好的题。

赛事怕后效性写的区间 dp,但是这题居然没有后效性,震撼了。

首先说明一下在只有 \(0,1\) 情况下一个区间被删的充要条件是 \(A=ka\)\(B=kb\)

必要性是显然的,考虑一下充分性。

把区间分成 \(\dfrac{len}{a+b}\) 的若干块,那么假如有一块 \(A=a\) 那么就能删掉,考虑剩下 \(A\ne a\) 的块。

任意时刻肯定有相邻的两个块 \(i,j\)\(A_i<a\)\(A_j>a\)

这是我们把 \(i\)\(j\) 移动由于每一步 \(0\) 的数量变化是小于等于一的,所以总有一个时刻 \(A=a\)

有额外字符同理。

然后就有了 \(O(n^2)\) DP:

\[\begin{aligned} f_i&\to f_{i+1}\\ f_i+k&\to f_{i+k\times(a+b)} \end{aligned} \]

第二个狮子还要满足 \(A_{i+1,j}\le a,B_{i+1,j}\le b\)

然后考虑优化,我们这边可以使用 cdq 套一个二位数点把复杂度优化至 \(O(n\log^2 n)\)

但由于还没研究明白怎么进行坐标变换,所以就先咕着了(((。

2024/08/09 T4

明天补。

2024/08/12 T1

典典题。

之前某道原的弱化,原是 DAG,这题是网格。

原的复杂度带两个老哥,这题是 \(n=2000\) 的网格,显然不太适用。

考虑性质,由于只能往右方和下方走,所以从原点到每个点的路径长度实际上是一样的,那我们可以考虑维护走 \(i\) 步可以到达的点集中字典序最小的,每次拓展即可。

2024/08/12 T2

状压 DP。

令第 \(i\) 个人有水表示为 \(1\) 反之为 \(0\),把状态压起来,令 \(f_S\) 表示达到状态 \(S\) 的最小花费,每次转移显然是由 \(1 \to 1\),所以正常状压即可。

2024/08/12 T3

DP 好题。

操作完成后的序列中肯定有一点在其前面全是执行加入队头的点,且序号单调递减,后面全是执行加入队尾的点且序号单调递增。

那么如果把序号从小到大看,前面的最长上升子序列就是原序列从分界点到 \(n\) 的最长下降子序列,后面的就是最长上升子序列。

容易发现最长下降子序列和最长上升子序列是只交于 \(i\) 一点的,所以我们可以枚举分界点 \(i\) 算贡献。

2024/08/12 T4

AC 自动机加数位 DP 板子。

详情可以参照一下 p3311。

只不过需要加上一个状压。

posted @ 2024-07-21 19:21  Nt_Yester  阅读(24)  评论(0编辑  收藏  举报