蒟蒻日记_6月

崭新的6月到来了~
SH说是解封了但是我完全不想出门
在家敲敲代码不是很好吗


06-01

发现选修课还有prj
作业都没写完(汗


06-02

· 【模板】最小表示法

字符串板子

写了一下这个板子。题解区怎么一堆SAM
感觉字符串的算法基本都是利用指针只需右移而不需要左移做到 \(O(n)\) 的复杂度的。
这题少写了个else改了另外一个地方居然神奇地过了。然后对着那个地方的改动不解,遂对拍,然后把else少写给拍出来了。
所以说对拍还真是个好东西。

· 【模板】manacher算法

字符串板子

又写了一下这个板子。
这个算法似乎没什么用,不过还是学一下。
又双叒叕是这种指针恒右移的做法做到 \(O(n)\) 复杂度。
不想写算进上的哈希版本回文串判断的就写了这个


06-03

打了一场月赛,又是只做出绿题及以下难度的题。
中间有事耽误了否则T4还可以写个 \(O(|S|2^k+|T|)\) 的暴力KMP拿20pts。
UPD:突然发现是\(O(|S|\cdot\left(\frac{\sqrt{5}-1}{2}\right)^k+|T|)\) 的。

· 【洛谷月赛LGR-110】Div1.A [PFOI Round1] 暴龙的火锅

数学氵题

· 【洛谷月赛LGR-110】Div1.B [PFOI Round1] Two Sequences

结论题

这个结论因为我推错了柿子卡了好久。最后推出来应该是 \(12\binom{n}{4}+3\binom{n}{3}\) 然后系数推错了,还以为是我想法错了。

· 【洛谷月赛LGR-110】Div1.C [PFOI Round1] Two Operations

贪心,二叉堆,数学

每次查询对答案的影响只和最后一次合并操作有关,因此记录一下对每个组最后一次合并到这个组时的答案,然后每次change操作只会改变两个值,用二叉堆维护一下就好了。


06-04

颓whking


06-05

· 【模板】字典树

Trie板子

今天加入了几个青分的朋友的防颓废群。
觉得自己的whk有救了


06-06

· 【算进】The XOR Largest Pair

01Trie

01Trie 板子

· 【算进】最长异或路径

树形DP,01Trie

讲道理做了这么多树上问题之后树形DP的部分就很简单了。
直接算出所有点到根的长度 \(dis_u\) ,而 \(u\)\(v\) 的长度就是 \(dis_u\oplus dis_v\) 最长路径用 01Trie 维护即可。

· 【算进】Supermarket

贪心,二叉堆

一道贪心水题,按照过期时间倒序把货物扔堆里,然后每天卖出未过期且未卖出的价值最大的商品。


06-07

好耶今天洛谷红名了
如果是CF那就好了(不可能)

· 【算进】序列合并

二叉堆,贪心

注意到若 \(a_i+b_j\) 为前 \(N\) 小,那么就有 \(\forall i'\le i,j' \le j\) , \(a_{i'}+b_{j'}\) 也必为前 \(N\) 小,因此可以在这些数全部取到答案中后再把 \(a_i+b_j\) 丢入堆中。

· 【算进】数据备份

二叉堆,链表,贪心

每日一跪(1/1)
巧妙的一题
感觉这些“考虑最大值”的这些贪心的技巧仍然不是很熟悉。
然后等量代换的贪心技巧也需要掌握!

· 【算进】【NOI2015】荷马史诗

Huffman编码

说起来当初hzwer就是跪在了这题上
k叉Huffman树来做就彳亍了。
需要注意的一点就是为了使最长编码尽可能短要启发式合并,即在堆中对深度排序。


06-09

因为一些原因破防了。
我想回学校啊啊啊啊啊
一整天效率极低,作业都没做完。


06-10

· 【算进】City Game

单调栈,悬线法

一个二维的单调栈。
把每一个位置向上极大的矩形大小 \(O(nm)\) 预处理出来,然后再对每行做一个 \(O(m)\) 的最大矩形的计算,最终 \(O(nm)\) 搞定。

这应该是期末前的最后一题了。

今天因为前天晚上破防的影响,依然效率不高,就一直在看各种算法。
\(\color{black}{T}\color{red}{ianyiLemon}\) 坑去学了 FWT ,大大感叹其巧妙。
然后看到一个算法叫舞蹈链觉得挺有趣就又看了看,没看完。


期末考试

哈哈寄掉了
感谢语文出题老师让我喜提不及格~


06-25

暑假来力~
早上打了一场月赛,D想出来用trie但是炸空间了,结果纠结了一会儿就没调完。
所以说拿部分分要果断!

· 【6月月赛】Div1.A 子串

hash

用hash写了个 \(O(n\log^2n)\) 的 SA ,然后随便搞搞就有了。

· 【6月月赛】Div1.B 归位

并查集

首先建图,以 \((x_i,y_i)\) 为边。
然后用并查集算出每个连通块,然后每个连通块中的数可以任意排列。
任意排列是很好证明的,我们可以搞出一个生成树,然后取一个根,然后从叶子到根依次确定排列。
所以最终统计一下每个连通块内位置集合和数的集合的并就好了。
复杂度是大约 \(O(n)\) 的(?
\(n=1e5\) 就懒得写按大小合并了,\(O(n\log n)\) 可过。

月赛难度突然上来了qwq

· 【洛谷月赛LGR-111】「SvR-1」Five of Pentacles

DP

蛮毒瘤的,发了篇博客

· 【模板】舞蹈链(DLX)

搜索&数据结构板子

一种很巧妙的算法,用于解决精确覆盖问题。

睡前发现月赛C是傻逼题但是没看出来


06-26

· 【洛谷月赛LGR-106】「MCOI-08」Fast Enumeration

舞蹈链

标程似乎不是舞蹈链算法,但是反正舞蹈链算法可过。
需要注意的是,lcnt 的优化是巨大的,不能舍弃。

除此之外氵了一下6月月赛Div2,没啥好玩的的题,就不记录了

· 【算进】【NOIP2008提高组】双栈排序

二分图,栈

这题关键一点我觉得就是要想到去考虑什么时候两个数可以被放入同一个栈中。
想出来这一点后后面都并不困难。


06-27

· 【算进】【NOI1999】内存分配

链表,二叉堆,模拟

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊我和模拟题不共戴天
每一次调模拟题对我来说都是地狱级别/kel


06-28

今天就打了一场CF

· 【Codeforces】CF1698A XOR Mixup

数学

这题很CF。
误导你去确定那个数。
事实上输出任意数即可。

· 【Codeforces】CF1698B Rising Sand

贪心

这题也很CF。
事实上任何操作都不会使得 "Too tall" 的数的数量增加,因此直接判断有多少个 "Too tall" 的数即可。

· 【Codeforces】CF1698C 3SUM Closure

贪心

细节很多。
注意到至多有两个正数两个负数,然后一堆分支搞搞就好了。
吃了六发罚时

· 【Codeforces】CF1698D Fixed Point Guessing

二分

注意到一个区间内,交换后仍然在该区间的数必然成对出现,因此只要判断仍然在该区间的数的个数即可。
奇数说明不动的数再该区间内,反之亦然。
二分即可。


06-29

· 【6月月赛】Div1.C 不要相遇

最短路,DP,AOE网

赛后想出正解总是痛苦的。
这题就是跑个最短路,然后将最短路上的点构造一个有向图,方向和最短路中方向一致,这是构成一个 DAG 的。
从而我们可以在这个DAG上DP出每一个点最短路的路径数,然后再对每条边和点进行统计即可。
因为下面这个傻逼错误调了一上午。
image

· 【Codeforeces】CF1698E PermutationForces II

思维,双指针

看了一眼很快想到可以把数的交换转为下标的交换,然后转成下标序列以后双指针就好了,是 \(O(n)\) 的。
然后看题解发现是 \(O(n\log n)\) 的???
打算等洛谷题库加了这题去写篇题解(
UPD:已经写了

· 【数学专题·整除】珠串

筛法

把质数和合数分开为两组即可

· 【数学专题·整除】【模板】高精度gcd

数论板子

写成递归然后一直爆栈……
调一晚上系列。

· 【数学专题·整除】人手一份

最大公倍数

· 【数学专题·整除】【模板】裴蜀定理

数论板子

· 【数学专题·整除】青蛙的约会

exgcd

列出方程 \(L\cdot s+(n-m)t=x-y\) 后 exgcd 求解即可

(数学专题的D1好氵,忽略高精度gcd的话


06-30

这个月最后一天了~

· 【算进】Matrix

二维哈希,哈希散列

对矩阵搞一个二维哈希,和正常的哈希差不多。
然后查询就搞个哈希表把哈希值放进去就好了。
教训:hash的模数一定要取大质数,不然冲突率大大增加

· 【算进】【模板】树的同构

树的最小表示

对有根树,可以对其中一个子树直接将根的每个儿子的括号序列按照字典序进行排序,从而得到这个根的唯一的括号序列。这样同构的树最终的表示是相同的。
那么对无根树呢?
对无根树,我们可以选定一个对同构的树来说相对位置是相同的点,而这有个 tirck(算是)就是取重心。
重心有俩,取字典序更小的表示作为最终表示即可。

· 【数学专题·函数】三点一线

计算几何

算个向量叉积完事

· 【数学专题·函数】对称

计算几何

给一堆点问有多少个对称轴。
为什么学OI还要受解几的折磨
不行我必须把手算的公式列一下才对得起这道题。

线段中垂线:

\[2(x_1-x_2)x+2(y_1-y_2)y+x_2^2+y_2^2-x_1^2-x_2^2=0 \]

两点所在直线:

\[(y_2-y_1)x+(x_1-x_2)y+x_2y_1-y_2x_1=0 \]

点关于直线 \(ax+by+c=0\) 的对称点:
解方程

\[\begin{cases} bx-ay&=&bx_0-ay_0\\ ax+by&=&-2c-ax_0-by_0 \end{cases} \]

然后对方程

\[\begin{cases} m_1x+n_1y&=&l_1\\ m_2x+n_2y&=&l_2 \end{cases} \]

\[(x,y)=\left(\frac{l_1n_2-l_2n_1}{m_1n_2-m_2n_1},\frac{l_1m_2-l_2m_1}{n_1m_2-n_2m_1}\right) \]

然后一个一个解就好了~

· 【数学专题·函数】【SCOI2010】传送带

计算几何,三分

三分套三分完事~

总结

本月切了 \(42\) 题(大多水题),打了 \(4\) 场模拟赛,写了 \(2\) 篇博客~
主要是有期末考试的原因只有一半的时间有写题。
总体效率尚可,接下来一个月应该有不少时间可以学OI,要把握好机会啊!

posted @ 2022-06-01 07:20  思考人生中…  阅读(47)  评论(0编辑  收藏  举报