5 月做题笔记

\(5\) 月做题笔记

其实是日记

\(5/1\)


早上:从 \(\text{CF}\) 上选了 \(\text{constructive algorithms}\)\(\ge *2400\) ,从人数多到少顺开的,所以应该不会很难。

\(\text{CF547D Mike and Fish}\)

开始的想法是用类似于二分图的方法。就是把同一行或同一列中的相邻两个连边,保证其互相颜色不同。

发现这样一定是对的!

易知如果形成环,也一定不会形成奇环,因为边是 “竖,横,竖,横” 镶嵌的。

所以这是一张二分图,跑一边二分图染色,做完了。

\(\text{CF1368E Ski Accidents}\)

想法是拍成一棵树,发现有很多非树边。

然后不会用 \(\frac{4}{7}\) ,于是开了题解,\(tm\) 说是把分母考虑成 \(1+2+4\)

但是的确是道神仙题

我们把点分为 \(A,B,C\) 三组。

  • \(A\) :入度为 \(0\),或所有入边都来自 \(C\)

  • \(B\) :至少有一条入边来自 \(A\),但没有来自 \(B\) 的入边

  • \(C\) :至少有一条入边来自 \(B\)

这里要证明几个东西。

\(A\cap B\cap C=\emptyset,A\cup B\cup C=U\)

这些是 \(Naive\) 的。

\(4|A|\ge 2|B|\ge |C|\)

每个 \(A\) 最多有两条出边,每个 \(B\) 最多两条出边,证完了。

又是难想好做的一道题。

\(\text{CF865D Buy Low Sell High}\)

颓颓颓,反悔贪心板子题写写。

下午:玩

晚上:外面逛了一会发现自己回来以后超级无敌颓,打算做水蓝水紫

谁说天天水题的不算英雄?

\(\text{CF1080C Masha and two friends} *1500\)

有点口区,但是一遍过啦!暴力模拟题~

\(\text{CF1180B Nick and Array} *1500\)

对于这题,我的评价是:傻逼贪心。

看完题不用想,写完码不用调,这样真舒适


\(5/2\)


\(\text{CF232C Doe Graphs}\)

早上开了道这个。

首先发现每个图的点数是以斐波那契数列式增长的就知道这题很诈骗

\(n=\min(n,80)\) 因为 \(a,b\le 10^{16}\) ,后面的都是无效的。

每张图中有关键点,比如说第 \(n\) 张中较大的子图和较小的子图中的点的路径必然经过 \(1\)\(|n-1|\) (这里指第 \(n-1\) 张图的点数)。

然后发现对于不在两个图中的可以递归求解,于是这里只考虑点在两个图中的。

预处理出 \(Dis(1),Dis(|n-1|)\) 不就好了?

想想怎么预处理。

不会,开题解

发现只是我刚才那样是寄,因为,最短路的路径可能跑出当前子图,于是记录一下 \(S,T\) 之间外面的最短路。

\(DP(u,k,d)\) 表示当前 \(u\) 点在第 \(k\) 级子图中,并且 \(S,T\) 之间外面最短路为 \(d\) 的,到 \(S,T\) 之间分别的最短路。

递归边界和往哪递归是 \(naive\) 的,如何 \(\Theta(1)\) 用上一级的答案求出当前的呢?

设当前为 \(k\) 级子图,\(u\)\(k-1\) 级子图。

\[(ans_1,ans_2)\rightarrow (ans_1,\min(\min(ans_1,ans_2)+1+\frac{k-1}{2},ans_1+d)) \]

若要问我 \(\frac{k-1}{2}\) 怎么来,我的评价是,自己找规律

不难证吧好像,但我就是咕咕咕。

然后是用 \(DP\) 函数来推当前两个点之间的距离。

这和我早上一开始的思路是一样的,但也要注意最短路的路径可能跑出当前子图,另外一样写就完了。

时间复杂度:\(\Theta(80T)\)\(T\) 是询问最短路的次数。

上午写完了,死循环。于是吃完午饭开始调调调。

\(\text{f**k}\) 边界判错了 \(ACed\)

今天只做 \(1\) 道题!

下午,晚上:划水, \(\text{whk}\)

下午:忍不住,还是得摸摸电脑。

打算做一点 这里 的题捏。

\(\text{CF1592F1 Alice and Recoloring 1}\)

一些小构造之后发现 \(2,3\) 操作都可以直接弃 (都可以直接用两次 \(1\) 操作完成),

\(4\) 操作最多用 \(1\) 次 (\(2\)\(4\) 操作可以用 \(6\)\(1\) 操作完成)。

接下来也是一个神仙转化,记 \(b_{i,j}=a_{i+1,j+1}\bigoplus a_{i,j+1}\bigoplus a_{i+1,j}\bigoplus a_{i,j}\)

考虑 \(1\) 操作和 \(4\) 操作对 \(b\) 的影响。

可以发现 \(1\) 操作是改变一个 \(b\)\(4\) 操作是花 \(3\) 元改变一个矩形上四个顶点的 \(b\)

于是特判,是否有这种矩形上四个顶点的 \(b\) ,统计 \(b\) 不为 \(0\) 的个数,如果有就输出个数减 \(1\) ,否则输出个数。

时间复杂度:\(\Theta(nm)\)

晚上:验【数据删除】的模拟赛。

很良心诶,让我们一起赞美良心出题人


\(5/3\)


早上:瞎几把乱开题

\(\text{CF559D Randomizer}\)

喂拙啦,但是懒癌犯了,上午不写!

发现自己的洛谷任务计划满了 ,打算清一清任务计划。

\(\text{P1026 [ NOIP2001}\) 提高组 \(\text{]}\) 统计单词个数

\(dp[i][j]\) 表示分成 \(i\) 段,当前在 \(j\) 位置时的最大字符串匹配数。

\(dp[i][j]=max(dp[i][j],dp[i-1][k]+func(k+1,j))\ \ (1\le k<j)\)

我的预处理 \(func\) 的方法就是先记录从当前点开始,能跟他匹配的最短单词长度是多少。

然后枚举开始点和结束点,看中间每个点的匹配后末端有没有超出,没有超就贡献 \(+1\)

\(dp\) 需要 \(\Theta(kn^2)\) ,预处理 \(func\) 需要 \(\Theta(6n^2+n^3)\)

\(\text{P3183 [HAOI2016]}\) 食物链

没看到一个点不算食物链还寄了一次

就跑一遍拓扑排序就好了。

\(\text{P1725}\) 琪露诺

滑动窗口优化 \(DP\)

下午:开了 \(\text{CF559D Randomizer}\) 那题的 \(CF\) 上的最短解,发现很短,很惊讶,贺了一手

下面是对最短解的理解:

前置 \(Pick\) 定理。

想想 \(n^2\) 怎么做。

当前点 \(a\) ,枚举下一个点 \(b\) ,绕绕绕绕绕,绕一圈回来,算中间有多少点。

考虑取到当前这一条边有多少概率,可以发现必然是 \(2^{-(b-a+1)}\) (因为想要出现这一条边,必然需要使 \(a,b\) 点为 \(1\) ,中间点为 \(0\)\(1,0\) 表示取或不取)),乘上当前线段的贡献最后累加,非常 \(naive\) 是不是。

让我们定义贡献为 “\(2S-\)外” ,于是最后输出时只要去掉一个不合法的一个都不选,然后除以 \(2\)\(1\) 就好了。

总面积为部分面积之和,最短解里巧妙地运用每次用向量求出当前两点到原点组成的三角形的有向面积的两倍,最后累加后就是我们想要的答案。

注意删除只有两个点的情况,不把其计入贡献。

最后注意,总情况概率不为 \(1\) ,而是要去掉只有 \([0,2]\) 个点的情况。

由于 \(2^{-T}\) 次之后的精度已经不需要了,于是只要 \(\Theta(Tn)\)\(T\) 可以取到比较小的值,做完啦。

还有,向量求三角形面积时,乘起来会爆 \(int\)

继续清任务计划。

\(\text{P7771}\) 【模板】欧拉路径

耶,模板题寄了一下午加晚上,下次努力寄更久

\(WA\ 20\) ,看了讨论区才看到对我的 \(hack\) ,以及正解的正确性。

\(\text{CF1628C Grid Xor}\)

有意思的构造捏。

构造是小学生水平就可以做到的,代码实现是幼儿园水平。

思路就是说找出一些 \(a\) 中的元素,使之的异或和恰好为把 \(b\) 中黑白染色后其中一种颜色的数的异或和。

另外一种颜色同理。


\(5/4\)


早上:做点可爱的 \(ds\)

\(\text{P1558}\) 色板游戏

就是用每个二进制位表示当前段有无这种颜色,用线段树维护。

\(\text{CF877E Danil and a Part-time Job}\)

拍成序列去做,线段树维护。

下午:打 \(AT\) 比赛。

我居然还能给我们队贡献一道题诶。

弃赛,都可以弃赛

\(\text{P4145}\) 上帝造题的七分钟 \(2\ /\) 花神游历各国

诈骗题,发现开方 \(6\) 次就会寄(指变成 \(1\) ,之后开方无意义)。

暴力做即可。

每次这种题都忘记 \(l>r\) 时要交换

\(\text{SP2713 GSS4 - Can you answer these queries IV}\)

同理。

任真学学 这个 罢。

应该是人均都会的,但我不会。

\(\text{P4688 [Ynoi2016]}\) 掉进兔子洞

晚上再说辣,打算照着 \(OIwiki\) 上的敲。

\(\text{CF830A Office Keys}\)

水题写写。

也晚上再说啦,我要玩去了。

晚上:晚上也要玩,就不说啦

\(\text{CF830A Office Keys}\)

《种树》二分版,由于懒不写了。

\(\text{P1127}\) 词链

建完边跑欧拉路,字典序是《欧拉路径》里的老套路。

代码不实现了。(发现自己越来越咕

\(\text{P1341}\) 无序字母对

一样,倍经了属于是,不打算写了。

晚上水了一会讨论区,就睡了。


\(5/5\)


上午: \(\text{whk}\) 和一小会 \(OI\)

\(\text{CF333E Summer Earnings}\)

轻松打出暴力,卡常发现不可过

考虑进行复杂度优化。

那么怎么把 \(\Theta(n^3)\) 优化成 \(\Theta(n^2\log n)\) 呢?

(不知道随机化可不可过,懒得写了

写过了,不可过

想想 \(\log\) 能干嘛,我只能想到贪心里面的对 \(dis\) 排序。

像极了正解。

然后不会,开了题解,原来后面的实现是 \(\Theta(\frac{n^3}{w})\) ,用 \(bitset\) 优化的一个东西,挺套路的一个东西

吃完饭回来就过了,耶!

下午:

\(\text{CF268D Wall Bars}\)

想了一小会,没码。

然后在模拟赛,然后就吃饭啦!

晚上:学了一会化学,发现自己很拉。

妈的 \(NI\) 晚上一样的时间学完了第一单元,但我刚了完第一节

自闭了,继续 \(OI\)

继续 \(\text{CF268D Wall Bars}\)

发现是一道傻逼 \(DP\) 题,很快过了。(虽然下午开过题解了


\(5/6\)


\(\text{CF570D Tree Requests}\)

开始题意看错啦。

想写一个基于 \(dfs\) 序的异或前缀和。

暴力的思想是空间复杂度 \(\Theta(n^2)\) 的,明显不可过。

想到可以每层用 \(vector\) 存,空间复杂度 \(\Theta(n)\)

时间复杂度 \(\Theta(n+m)\) ,应该就能过了。

\(\text{P8327 [COCI2021-2022\#5] Radio}\)

那么简单的题开始降智不会做,被猴之 \(D\) 爆了

首先想想怎么线段树维护一段区间里是否有相同的数,想到了这个之后就是把问题转化成这样。

维护一个点向右最近的,不互质的点即可,这个可以用 \(set+lower/upper\_bound\) 动态维护。

不实现了

下午:图论讲课,讲了 \(tarjan\) 和二分图。

\(\text{P1407 [}\)国家集训队\(]\) 稳定婚姻

一道缩点经典题,建图需要一些技巧,建完跑 \(tarjan\) ,看查询点对是否在同一强联通分量即可。

\(\text{P2515 [HAOI2010]}\) 软件安装

\(tarjan+DP\) 还没写。

\(\text{AT??? Sum Equality}\)

猴之又拉我做构造题

\(AT\) 的一道题,链接

考虑每次选一段连续的数,把他放在 \(A\) 里或 \(B\) 里。

因为 \(n=10\) 考虑从 \(n=0\) 构造一手。

0 -> 0 // 1

1 -> 0 3 // 1 2

2 -> 0 3 5 6 // 1 2 4 7

为什么 \(2\) 是对的:\(0^2+3^2+5^2+6^2=70=1^2+2^2+4^2+7^2\)

发现如果把放进 \(A/B\) 变成一个 01 序列,那么每次 \(n+1\) 就是把原来的取反加到原来的末尾。

证明的话不会,但是如果只是 \(n=10\) 不需要推广的话前面的正确性是可以让电脑验证滴

晚上:\(\text{P1341}\) 无序字母对

本来就不想码了,但这居然在图论进阶的作业里

很快写完了,因为是无向图所以稍微有点不同。

\(\text{P2515 [HAOI2010]}\) 软件安装

一直在想为什么可以缩点,后来发现我题读错辣!

所以是到 \(naive\) 的缩点 \(+\) 树上背包。

我树上背包还打挂了一次,\(Kobe303\) 建议我重修

\(\text{P1155 [NOIP2008}\) 提高组\(]\) 双栈排序

一道二分图染色题,不是特别难,也是图论进阶作业里的。


\(5/7\)


早上:\(\text{CF1217D Coloring Edges}\)

是一道树上问题的水构造题。

发现跑一遍 \(dfs\) 强制把树边和前向边设成 \(A\) ,返祖边设成 \(B\) 即可。

之后在模拟赛和 \(whk\)


\(5/8\)


\(whk\)

花了一个上午读完了《牧羊少年的奇幻之旅》,发现是本挺哲学的书,于是打算就写这本书的读后感。

读后感字数要求 \(2000+\) 写到 \(1500\) 写不下去了就开始瞎造。

一天就这么过去啦!


\(5/9\)


早上:\(\text{CF1239D Catowice City}\)

刚才电脑更新重启没保存

不写了,反正是一道建图 \(+\) 缩点傻逼题。

\(\text{CF1503D Flip the Cards}\)

啥都不会,康康题解

首先发现正反面都 \(\le n\) 的必然寄。

证明不难,这里就不写了。

所以我们先假设正面是 \(\le n\) 的,反面是 \(>n\) 的。

然后我们照正面从 \(1\)~\(n\) 排好序,发现最后是要找出两段 \(f(i)\) 递减的。( \(f(i)\) 表示数字 \(i\) 的反面)

我们发现这个可以枚举断点, \(\Theta(n)\) 解决。

下午:去拍毕业照啦!

买了 \(16\) 杯奶茶自己一杯没吃

晚饭吃了有家酸菜鱼,味道真不戳。

晚上:做博弈论的作业题。

\(\text{P3185 [HNOI2007]}\) 分裂游戏

是一道要用 \(SG\) 函数的基础题,知道 \(SG\) 函数大概就喂拙了?

\(\text{CF1382B Sequential Nim}\)

是一道构造策略和找规律题,发现只要根据前缀 \(1\) 的个数分讨即可,特判全是 \(1\) 的情况。

\(\text{P1247}\) 取火柴游戏

写了一个 \(\Theta(kn)\) 过了

诶不知道复杂度有没有算错,再看了看怎么感觉就是能过的


\(5/10\)


早上: \(\text{P8329 [ZJOI2022]}\)

是一道神仙容斥题,\(xr\) 让我做,但是他的容斥式子不小心被我看到了

式子是这样的。设 \(dp[i][j][k]\) 表示当前是第 \(i\) 个点,左边的非叶子节点有 \(j\) 个,右边有 \(k\) 个时的合法方案数,则

\(dp[i][j][k]\leftarrow dp[i-1][j][k+1]\times(j+1)\times(k+1)+dp[i-1][j-1][k]\times j\times(k+1)-2\times dp[i-1][j][k]\)

那么这个式子为什么是对的呢?

首先,我们每次把一个点向之前的非叶子结点连,那么就会出现这样一种情况,就是没有点去连向一个非叶子节点,根据定义,这种情况是不合法的,所以我们每次进点的时候都钦定这个点是非叶子节点并且未被连边,减掉一些东西即可,最后反正就是那个 \(dp\) 式,代码也很简单。

时间复杂度 \(\Theta(n^3)\) ,空间复杂度可以用滚动数组优化到 \(\Theta(n^2)\)

彩蛋:\(xr\) 发现我过了在卡常于是他也卡了一些,当我卡进最优解(只是现在),总共加起来 \(200\)\(ms\) 的时候,他突然兴奋地喊了一声:"\(yk\) ,我最大的点卡进一秒了!"

\(\text{P2575}\) 高手过招

是一道巧妙的阶梯 \(Nim\) 博弈题,答案是原 \(Nim\) 游戏里奇数的位置的异或和。

下午: \(\text{AT2667 [AGC017D] Game on Tree}\)

看了题解,会啊不会的。

但是这个结论真的好美妙 但发现证明不大会,弃了弃了

然后模拟赛,模拟赛考崩了,难受。

虽然都是很 \(naive\) 的题我却考得贼烂,我的锅

晚上:先补了模拟赛题,然后做 \(whk\) ,几个月不碰物理现在感觉做起来贼舒服

最后的半个小时留给了 \(OI\),我开了 \(\text{CF786A Berzerk}\)

首先这是一道博弈论题(废话)。

一个人的必胜态首先就是当前自己走并且能把怪物推进黑洞。

必败态就是所有的后继情况都是必胜态。

然后后继有一个必败态的就是必胜态,这样循环往复,\(dfs\) 即可。


\(5/11\)


早上:先把 \(\text{CF786A Berzerk}\) 实现了一下。

\(\text{CF167C Wizards and Numbers}\)

然后在做这道。必胜态是 \(b\%a=0\) 。对于第一种只要循环,每次取反就好。

接下去照推第二种,设 \(b=ka+b\%a\) ,手玩几组小的就能发现 \(a=x\) 的时候有长度为 \(x+1\) 的循环节,每个循环节中偶数位是 \(True\) ,奇数位是 \(False\)

所以只要递归求解即可。

介于我傻逼题赛时都要寄,我打算把我任务计划里的黄绿题都清一遍。

\(\text{P2880 [USACO07JAN] Balanced Lineup G}\)

是一道 \(RMQ\) 裸题,怎么做都可以,不写了。

\(\text{P6066 [USACO05JAN]Watchcow S}\)

建出一棵树就可以了,实现简单,不写了。

题总共才开了五分钟我就摆了,不愧是我!

之后一直在划水。

\(\text{CF1396B Stoned Game}\)

是一道有意思的结论题。

首先如果最大石子的石子数大于其余所有石子数的话,先手必胜,原因显然。

最后一定是没有石子或者有一堆,而如果每个人每次都取最大堆的话,是可以做到没有的。

所以最后谁必胜只要看一下石子总数的奇偶即可。

\(\text{P3467 [POI2008]PLA-Postering}\)

单调栈 \(+\) 构造好题,但是不难。

下午:还是考了模拟赛,还是挺差

晚上:先做完了 \(whk\)

\(\text{CF1408D Searchlights}\)

不算难,首先可以删掉无用的探照灯,最后剩下的一排探照灯照 \(x\) 坐标排序后, \(y\) 是递减的。

(懒癌犯了自己写的时候没有删,因为这是小问题)

一个海盗想要逃出去,就是比任意一个探照灯的 \(x\) 要大(\(y\) 不能小于探照灯的 \(y\)),或比比任意一个探照灯的 \(y\) 要大(\(x\) 不能小于探照灯的 \(x\))。发现 \(n,m\le 2000\) ,于是暴力枚举 \(\Theta(nm)\) 求出所有海盗一起向上移 \(x\) 格后至少还有向右移几格,最后的答案就是 \(\min\left\{i+f(i)\right\}\)


\(5/12\)


早上:有 \(\text{dd\_d}\) 的树专题模拟赛,我也不说什么

要不记录下模拟赛。

这里只放题意,部分分再放起来我要吐了。

\(T1\) :给定一棵点数为 \(n\) 的树,要求删去一条边,加上一条边,使树的重心唯一。 \(n\le 3\times 10^5\)

根据定义求出重心,然后如果有两个,就把其中第二重心的一个叶子直接连到第一重心上,做完了。

\(T2\) :给出一段区间,操作是交换相邻两数,问满足对于每个点,要么左边全小于等于他,要么右边全小于等于他的最少操作次数。\(n\le 3\times 10^5\)

发现最后序列一定满足的性质就是一定是小 \(\rightarrow\)\(\rightarrow\) 小。

\(T3\) :定义团表示无向图的完全子图。

给定一张含 \(n\) 个点 \(m\) 条边的无向图,求将其划分成两个大小相同的团的方案数。

两个方案不同当且仅当有一个点在两个方案中所属团编号不同。

想想暴力怎么做,发现 \(dfs\) 判一下每种情况即可。

\(T4\) :给定一棵 \(n\) 个点的树,要把他变成一个菊花图,问最小操作次数。

一次操作可以选择两个点 \(x,y\),要求 \(x\)\(y\) 距离为 \(2\),然后把 \(x\)\(x\) 相邻的点向 \(y\)

边,并断开 \(x\) 和与 \(x\) 相邻的点的边。

开完了题开始写 \(T1\)

很快码完了,但不会用 \(SPJ\)

会用了,没给大样例,\(dd\_d\) 死马

发现 \(T3\) 暴力冲出来再找规律就可以得到 \(40pts\) ,所以先充这个。

一发过了小样例,喜提 \(20pts\)

找出了另 \(20pts\) 的性质,码完了,开 \(T2\) 暴力。

打了 \(T2\) \(\Theta(n^3)\) 暴力, \(40pts\)

\(\Theta(n^2)\) 能多拿 \(20pts\) ,但我还不会。

写完发现假了 静待保龄。

下午: \(100+40+40+0\) 不出所料又考差了。

发现赛时一车人过了 \(T4\) 才发现 \(T4\) 才是最简单的,为什么不按难度顺序放题,我 \(T4\) 想啊没有想。

\(T4\) 就是只要先随便找找规律,发现最后点一定是当前度数。

\(T2\) 是结论题, \(T3\) 是建补图就能做的 \(DP\) 题,就不详细说了。

晚上:划水划了一晚上。


\(5/13\)


早上: \(\text{CF1572B Xor of 3}\)

首先容易想到有奇数个 \(1\) 肯定是无解。

还有就是只有

两个 \(1\) 一个 \(0\) \(\rightarrow\) 三个 \(0\)

两个 \(0\) 一个 \(1\) \(\rightarrow\) 三个 \(1\)

这两种操作是可能出现的。

我们首先对所有奇数位置开始的区间都做一次这样的操作。

如果 \(n\) 为奇数,我们可以发现 \(a_i=a_i-1\) ,其中 \(i\) 为偶数,并且 \(a_n=a_{n-1}=a_{n-2}=0\)

所以只要用我上面说的两个 \(1\) 一个 \(0\) 的操作即可,因为左边两个要么都是 \(1\) 要么都是 \(0\) 操作以后都是三个 \(0\)

如果 \(n\) 为偶数,如果没有 \(0\) 那肯定是寄的,有 \(0\) 的话就和开始一样用 \(0\) 向两边拓展,最后也能达到都是 \(0\) 的情况。

代码很短,但是很妙。

\(\text{CF333D Characteristics of Rectangles}\)

这是 \(NI\) 过了的题。

题要求最小值最大,考虑二分。

\(\Theta(n^2)\) 打好是不是大于当前数的标记,再每次给当前行的点对打标记,如已有标记返回 \(1\) ,复杂度也是 \(\Theta(n^2)\)

\(\text{CF995F Cowmpany Cowmpensation}\)

觉得是一道牛逼数数题,开了题解,下次补题。

打了模拟赛,寄了两道,\(RP\) 攒攒。

下午:先写了一道傻逼题。

\(\text{CF1438C Engineer Artem}\)

只要格点黑白染色,奇偶调整一些即可。

接下去打算任真学学根号分治,今年 \(ZJOI\) 也考了。

\(\text{CF797E Array Queries}\)

一道根号分治板子题,小的时候 \(DP\) ,大的时候暴力,\(\Theta(n\sqrt{n})\)

\(\text{CF1039D You Are Given a Tree}\)

一道根号分治题,但我用 \(\Theta(n^2)\) 艹过去了 \(\text{/kx}\)

晚上:\(\text{CF1428D Bouncing Boomerangs}\)

科比做过的题。发现 \(a_i\le 3\) ,于是就是一题挺逊的构造题。

由于是 \(n*n\) 的网格,所以我们可以每一次来一个数 \(a_i\) ,新开一行来应对。

为了 \(a_i=3\) 的情况时更方便,我们从上往下开, \(a\) 也从右往左扫。

\(a_i=0\) :啥都别干。

\(a_i=1\) :加一只有当前位置有阻挡物的行。

\(a_i=2\) :看看有没有有单一阻挡物的行,有就在那行的这个位置也加上障碍。

\(a_i=3\) :加一新行,找以前只有单一阻挡物的行,在这两位置加上障碍,并把这单一阻挡物的行取消掉,表示以后 \(2\) 不能用了但是 \(3\) 还可以用。

这题做完了。

\(\text{CF1580C Train Maintenance}\)

继续根号分治,做起来还是没有思路

于是验了会 \(xr\) 的模拟赛, \(T2\) 非常良心,甚至给你 \(n\le5\) 时所有数据!!11

然后再看这道题,发现的确是根号分治裸题。

小的时候桶排,大的时候差分,总复杂度 \(\Theta(n\sqrt{n})\)

晚上想欣赏人类智慧,于是开了几道 \(ARC-F\) 看题解。


\(5/14\)


早上:什么都不干,\(8:30\) 又有一场模拟赛。

下午:这次模拟赛考得还行,至少没挂分。

讲完模拟赛,又要考一场初赛

初赛我直接摆,选择题选 \(C\) ,判断题选 \(T\)

于是我一分钟就秒穿啦

闲着没事干,继续验 \(xr\) 的模拟赛,质量是真的高 \(\text{/bx}\)

晚上:划水。


\(5/15\)


早上: \(whk\)

下午:\(\text{CF354D Transferring Pyramid}\)

题意很清楚,考虑 \(DP\)

发现 \(2\) 操作就是一种后缀。

发现这题有点诈骗,就是 \(2\) 只有在倒数 \(\sqrt{3K}\) 层时才会用,因为全用 \(1\) ,代价也只需要 \(3K\)

于是毛估估复杂度就是 \(\Theta(n\sqrt{3K})\)

然后不会做 看题解。

\(\text{CF319D Have You Ever Heard About the Word?}\)

刚才那题想了 \(1.5h\) 做不出来十分愤恨,于是这一题秒开题解

发现暴力可过?我今天过题量那么少于是打算水一道暴力。

怎么暴力我就不说了,反正复杂度是 \(\Theta(n^2)\) 的。

等我以后心情好了写正解的时候再补吧。


\(5/16\)


早上:卷怪科比昨天做了 \(5\) 道题

\(\text{CF1637E Best Pair}\)

好像是道根号分治题。

只要看一个数的出现次数是大于 \(\sqrt{n}\) 的还是小于等于 \(\sqrt{n}\) 的,如果是前者那么这种数的种类已定小于等于 \(\sqrt{n}\) ,再 \(\Theta(n)\) 找哪个数与他配值比较大。

否则只要开个桶记录 \(cnt=x\) 时的数的从大到小的排序,每次两两配对算一下即可,稍稍优化一下就可以了。

\(TLE\) 卡不过去,那就算了

下午:要讲数据结构进阶,之后会把我做的这里的作业题搬到做题记录里来。

讲完了以后下午好像没做什么题

晚上: \(\text{P3834}\) 【模板】可持久化线段树 \(2\)

写过 \(1\) 没写过 \(2\)

其实也是板子,就是第 \(i\) 个版本的线段树的 \(query(l,r)\) 表示 \(1\sim i\) 中, 值在 \(l\sim r\) 的有几个,这题里还运用到了前缀和的思想,以及树上二分的思想。

\(\text{CF1514D Cut and Stick}\)

\(yet\ another\) 主席树板子题。

首先我们要发现如果这里有绝对众数才有可能要分成若干段,段数就是绝对众数出现的次数减去其他数的个数,就是无视众数与其他数相等的部分,哪里都可以堆,剩下的都放 \(1\) 个绝对众数里的元素。

如何求绝对众数我们考虑用主席树去实现,这里的第 \(i\) 历史版本就是 \(1\sim i\) 的权值线段树,于是每次缩小 \(l\sim r\) 的范围,如果有半边数的个数超过所需,如果有解,答案必然在这半边,原因显然,然后就可以 \(\log n\) 查询是否有绝对众数力!

\(\text{P3224 [HNOI2012]}\) 永无乡

思路是 \(naive\) 的,只要并查集维护每个集,合并时权值线段树合并即可。

查了一年错,发现数组开小了

\(\text{P4556 [ Vani}\) 有约会 \(\text{]}\) 雨天的尾巴 \(/\)【模板】线段树合并

树上差分兼线段树合并裸题,不知道我要写多久捏。

傻逼吗,写完发现寄了,调了一晚上发现是一个数组没开大

剩下时间只能做 \(whk\)

其实又小做了一会 \(OI\)

\(P3396\) 哈希冲突

发现自己根号分治的论文题没偷过诶。

就是最典的根号分治,不讲了。


\(5/18\)


早上: \(whk\)

\(\text{CF1328D Carousel}\)

分讨 \(naive\) 题,发现答案只会是 \(1\sim 3\) ,随便构造一下就好了。

下午: \(1:00\sim 4:00\) 要考模拟赛。

模拟赛 \(T4\) \(mle\) 了,攒 \(RP\) 中(确信

(还有我 \(T4\) 写的本来就不是正解,所以不心疼

另外没挂分,所以 \(300pts\)

晚上先订模拟赛 \(T4\) ,发现是一道套路题兼 \(bitset\) 优化题,不是特别难。

订正完了,打算做一道 \(DS\) (非自愿,是作业所以要做

事实上我鸽掉了 \(/kx\)


\(5/19\)


早上: \(whk\)

下午:模拟赛。

我就不多写了,反正其他也没做什么题。

晚上:回机房发现自己又被 \(JC\) 然后被禁言了

开始写 \(P5494\) 【模板】线段树分裂

花了一个小时写完,开始寄是因为没加 \(long\ long\)

我就单说第 \(0\) 个操作吧,其他的以前都写过。

把原区间割成 \(3\) 段,然后第二段是答案,其他两段 \(merge\) 回去。

\(\text{SP10707 COT2 - Count on a tree II}\)

树上莫队板子题,不知道能不能 \(45min\) 敲完。

晚上写到一半觉得混沌,写不下去了

明天再写,我做 \(whk\) 去了。


\(5/20\)


早上: \(whk\)

\(\text{P8347}\)\(\text{Wdoi-6}\)」另一侧的月

有一个奇妙结论,就是只要有点度为偶数就输出 Hifuu ,否则输出 Luna

\(xr\) 说我老是只猜结论,证也不证,今天我就证一下 \(/kx\)

首先考虑证明为什么只有奇点时先手必败,因为先手无论怎么选点,选完以后怎么选子树,子树中都一定有一个点是偶点。如果此时只有一个点,那么先手已经败了。否则后手选择任意挑一颗只有奇点的子树就好了。

如何保证一定有这样的方案呢?选择一个下面不在有偶点的偶点的父亲删除并选择这颗子树,发现原来的偶点变成了奇点,子树里的所有点也都是奇点,于是一直下去,先手必败。

反之同理,先手开始给后手留下一颗只有奇点的树,后手必败。

下午:一道难题:\(\text{CF798E Mike and code of a permutation}\)

为什么写完了解析第二天发现没了

那再写一遍也算了 就是一道拓扑,但是要把 \(n^2\) 条边用树状数组维护,保留 \(n\log n\) 条边。

晚上:\(\text{SP10707 COT2 - Count on a tree II}\)

这是一道树上莫队板子题,开始因为忘记一个在另一子树里时不用加上 \(lca\) 位置的值,寄了几发

\(\text{CF883C Downloading B++}\)

\(*2300\)

我的评价是,傻逼二分加暴力解方程题。

但是我写的时候有超级多毒瘤特判 烂题。

找了一年错,导致我睡觉时间也推迟了。


\(5/21\)


早上:有模拟赛。

\(\text{CF772C Vulnerable Kerbals}\)

\(*2300\)

模拟赛开始了,可能要下午做了。

下午:首先发现这个问题只要建出边来,就是最长路径题。

\(n^2\) 的建边显然是不行的,考虑哪些边是一定要建的。

不会了,题解题解,还是太菜了。


\(md\)\(22\sim 23\) 号的做题记录没保存,麻了。


\(5/24\)


早上: \(whk\)

\(\text{P2286 [HNOI2004]}\) 宠物收养场

感觉就是开两只 \(set\) 就好了。

\(15min\) 写完力!

\(\text{P8348}\)\(\text{Wdoi-6}\)」未知之花魅知之旅

只做 \(STL\) 作业,没有意思的!

如果想到了只能减并且考虑把他们变成一样,那么就好做了。

好像也不是特别难想 \(\&\) 难证?

我觉得只要能感性理解,就是说如果现在给他用加法以后为了匹配还是会用减法,还会到当前状态就好了。

晚上:\(\text{UVA12421 (Jiandan) Mua (I) - Lexical Analyzer}\)

过了这题,我很骄傲

耗时约 \(2h\) ,其实就是模拟加一点点 \(STL\)

还做题吗 \(qwq\)

不做了,爬回去做 \(whk\) 了。


\(5/25\)


早上: \(whk\)

下午:有博弈论模拟赛。

先上 \(CF\) 把中层难度的博弈论题都看一遍,不能秒就开题解,看看有没有什么博弈论题做法的新思路。

\(\text{CF1584E Game with Stones}\)

启示:增量法做子区间计数问题。

性质是好找的,就是奇位置和等于偶位置并且一些大小关系(也是好找的,不好表达)。

于是是一道子区间计数问题,考虑 \(r\rightarrow r+1\) 时怎么做,发现式子都是可以从从前的式子 \(\Theta(1)\) 推出来的,做完了。

\(\text{CF277C Game}\)

启示:分割成子问题,转化题意。

发现就是做两遍 \(Nim\) 游戏。

输出方案?暴力找应该是可以的。

晚上:花了一晚上做了一道题。

\(\text{P3242 [HNOI2015]}\) 接水果

用了 \(bitset\) 但是发现复杂度是 \(\frac{n^2\log n}{w}\) ,寄寄,但是过()

想法就是把所有盘子按照权值排一下序,然后用一车 \(bitset\) 记录当前盘子合不合法,找第 \(k\)\(1\) 的位置。


\(5/26\)


早上: \(whk\)

下午:土豆模拟赛。

晚上:学 \(KD-tree\) ,大概不写学习笔记了,就这里记一下相应例题好了 \(qwq\)

花了好一会打完了板子,还调了好一会,发现是输入顺序错了

开下一题: \(\text{P6349 [PA2011]Kangaroos}\)

发现不会

\(\text{P2318 [HNOI2005]}\)虚拟内存

意外收获 \(STL\) 水题,美滋滋。

但是明天再写,我要偷 \(GB\) 偷过的题力

\(\text{CF1534E Lost Array}\)

那么水?会不会是我题看错了()()()

难道不是贪心每次选未知的 \(k\) 个,最后如果 \(k-res\mod{2}=0\) ,就用这几回(最后一次多余的步数用来取同一个数,对最后答案反正没影响)。

否则如果 \(k\mod{2}=0\) 那就返回 -1 ,再否则就再加一回合。

哦哦,题看错了

同一次里不能出现一样的。

那也明天写了,今天天很热,我很咕。。


\(5/28\)


早上:模拟赛,赛时一道模拟题没调处来,另一道的 \(freopen\) 还忘删注释了

下午:\(\text{CF459D Pashmak and Parmida's problem}\)

一道寻宝了的树状数组 \(+\) 前缀和题。

\(\text{AT5294 [ABC151F] Enclose All}\)

最小圆覆盖板子题,良心讲课人罕见放在作业里的倍精

\(\text{P6216}\) 回文匹配

这是一道 \(manacher\) 练手题。

首先回不回文就是 \(manacher\) 板子,要统计出现次数就是 \(kmp\) 板子。

想想怎么合并成题目所求的答案,发现也是只要前缀和一下就做完了。

晚上:小做一会信奥就去做 \(whk\) 去了。

发现太颓了什么码力都无,想到科比在偷构造,我就去偷袭。

\(\text{CF1584D Guess the Permutation}\)

发现操作数不超过 \(40\) 所以易知是一个 \(log\) 的做法,但又不能跑多次 \(log\)

但是发现只要二分出左端点,之后只需要四次就可以把剩下的都求出来。

假设现在是 \(x\) ,于是只要查询 \((x,n),(x+1,n)\) ,就能得出当前翻转的长度,因为去掉了头,少的逆序对个数就是当前翻转数的个数 \(-1\)

是不是很奇妙?

\(\text{CF487C Prefix Product Sequence}\)

首先发现 \(n\) 一定是放在最后因为有他, \(\%n\) 一定是 \(0\)

然后发现除 \(4\) 以外的合数都是寄的。

接下去怎么做呢?考虑到质数都有逆元,从 \(1\) 开始,然后每次用 \(\frac{2}{1},\frac{3}{2}\dots\) 的逆元,发现最后的模数肯定是 \(1\sim n\) 按的顺序排列,不会重复,而以上那些的逆元也一定各不相等,做完了。

\(\text{P3599 Koishi Loves Construction}\)

然后来到了 \(1/2\) 倍经验时间

发现 \(Task\ 2\) 就是刚才那题, \(Task\ 1\) 也是很有意思的,可惜不全是“洛谷原创”

\(1\) 只要瞎几把乱搞搞,上下挪挪搞得每一个数都不落就好了,具体的规律可以自己去打表,打出来你会发现,好证的一批。

说下 \(6\) 月份的计划:

发现家里和学校里同记一份笔记超级难受,老要传来传去,还老弄丢。

打算 \(6\) 月使用双线计划,学校里开一个做题记录,家里也开一个。

结束了。

posted @   俞开  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示