蒟蒻日记_11月

马上要NOIP了,感觉还是什么不会。
文化课大摆烂,期中考试一塌糊涂

知道按照自己的水平一等基本稳了,而距离省队却又差了不少,可是总还是想冲一冲,想要抓住那面积为0的可能性。


11-01

· [POI2014]KUR-Couriers

摩尔投票法,线段树

求绝对众数,那么可以考虑摩尔投票法。
摩尔投票法具有交换律和结合律,所以可以放在线段树上。
然后求得的众数再二分判断一下是否为绝对众数即可~
复杂度是 \(\mathcal O(n\log n)\)

· [CSP-S 2022] 策略游戏

ST表,思维

开了6个ST表。
修了一下没有特判 \(\infty\) 的bug

· [CSP-S 2022] 星战

哈希

首先可以看到题目等价于判断每个点出度是否为 \(1\) ,所以很容易有用set维护入度的 \(60pts\) 做法。
而满分做法就是要利用我每次查询的特殊性。因为我只是要判断是否每个出度为 \(1\) ,因此我可以用一个哈希函数来判断,我们给每个点一个权值,然后判断所有边的权值加起来是否和点一样即可。
权值可以随机,也可以设为 \(B^i\) ,其中 \(B\) 是一个素数。


11-05

· 【模板】可持久化线段树 1(可持久化数组)

数据结构板子

好玩的数据结构
每次只复制更新的节点是很巧妙的想法

· 【模板】【模板】可持久化线段树 2

数据结构板子

从左到右在可持久化权值线段树上加点,就是神奇的主席树的主要思想
然后就可以在主席树上二分辣!

接下来两周要期中考试,大抵不太经常写代码了。


11-06

· [JLOI2012]树

前缀和,栈

搞个栈存一下祖先然后dfs即可。

· [SDOI2009] Elaxia的路线

最短路,思维

考虑枚举最长公共路径的起点和终点,然后判断二者是否联通以及是否在最短路上即可,当然要预处理出四个点到所有点的最短路。

· 树的路径覆盖

树形DP

树形DP基础题

· [POI2012]ROZ-Fibonacci Representation

贪心

因为斐波那契数列的神奇性质所以可以直接和最近的一个斐波那契数相减。

· [SDOI2009]Bill的挑战

容斥,状压

\(S\) 表示字符集,\(m\) 表示字符串长度。
容斥做法就是考虑满足其中一个集合的方案数然后容斥统计,复杂度 \(\mathcal O(nm2^n)\)
状压就是 \(dp(i,S)\) 表示满足,要枚举每一位所以要慢亿点,加一个 \(0\) 不转移的剪枝才能通过,复杂度 \(\mathcal O(|S|m2^n)\)


· [LNOI2014]LCA

树剖,思维

好玩的树剖题,
题目要求 \(\sum\limits_{i=l}^r dep_{lca(i,z)}\)
那么实际上这个东西等价于把 \([l,r]\) 的点权值定为 \(1\) ,然后求 \(z\) 到根的路径上的子树和。
那么我们用树剖维护,每次加一个点 \(x\) 相当于把 \(x\) 到根上的每一个点的子树和都加 \(1\) ,这样我们就得到了 \(dep_{lca(i,z)}\) 的前缀和,差分一下就可以求出最终的结果了,复杂度 \(\mathcal O((n+q)\log n)\)


11-13

· [CSP-S 2022] 数据传输

倍增,动态DP

考场上想到了倍增暴力跳可以做到 \(\mathcal O(nk^3\log n)\) ,然而细节太多,时间又来不及,暴力都没来得及打。
不得不说用矩阵表示DP还是挺有趣的想法。

下午lxl的课上讲了一堆根号的题%%%


11-14

停课第一天~
然而下午还有两门期中考试,一边复习一边打模拟赛

· 【模拟赛#1】or

DP,数据分治

\(n-k\ge \log_2n\) 的时候可以直接取所有数的并,否则就考虑按照值域dp
离谱的是每次选没有被 \(ans\) 包含的位种最大的贪心也能过,hack也很好hack,

3 2
5 10 12

· 【模拟赛#2】飞行计划

图论,贪心

不难证明每次到一个地方都要加油,然后加恰好多的油跑最短路即可。

· 【模拟赛#3】比赛

贪心,DP

只要满足任意 \(k\) 的分数和都超过 \(\frac{3}{2}k(k-1)\) ,同时没有分数超过 \(3(n-1)\) 即可
可以做一个 \(\mathcal O(n^4)\) 的dp

· 【模拟赛#3】排序

数据结构,思维

我们计算出以 \(a_i\) 为较大值的逆序对 \(val_i\) 然后经过一些思考后可以发现每次操作只会改变所有满足 \(i\le j,a_i\le p_j\) 的位置,将其变为0,而且后续这样的操作所有被改变位置的数 \(val\) 都被清 \(0\) ,因此可以转化为这样一个问题:
每次操作找到所有 \(i\le j,a_i\le p_j\) 的位置,然后 \(p_j\leftarrow 0\) 同时要求解这样的 \(p_j\) 的和。
这个问题在 \(n,q\le 5\times10^5\) 的数据范围,\(5s\) 的时限下,分块应该是可以过的,但是不知道为啥就是T了。

最终分数 \(100+0+10+40=150pts\) ,挂分 \(0+100+0+60=160pts\) ,但是因为中途去复习地理了,所以这么差也正常(大雾


11-15

· 【模拟赛#2】次大公约数

数学,筛法

求出所有数的最小素因子 \(p_i\) ,那么答案就是 \(\dfrac{\gcd(i,j)}{p_{\gcd(i,j)}}\)
以及随机数的生成器在win下运行不正常真是有趣

· 【模拟赛#2】数独

模拟

TMD好不容易写对大模拟然后TM文件名写错了

· 【模拟赛#2】分糖果

贪心

不多说了,皇后游戏,还把 \(std\) hack了

· 【模拟赛#2】异或

数学,数位DP

显然可以拆为两个问题
第一个问题,随机两个数 \(x,y\in[0,n)\) ,求 \(x\oplus y\) 的期望。拆位计算即可。
第二个问题,随机一个数 \(x\in[0,n)\)\(\max\limits_{y\in[0,n)}x\oplus y\) 的期望,枚举 \(x\)\(n-1\) 的并的最高位即可。

赛时没来得及写第二个问题,只写了第一个问题的 \(45pts\)
然后文件输出输入改好没有保存,寄了。

最终分数 \(100+0+100+0=200pts\) ,挂分 \(0+100+0+45=145pts\) 就nm离谱


11-16

xswl本来该放 T1 的题放到 T4 了。

· 【模拟赛#3】巫师与恶龙

DP

一眼费用提前计算,按照 \(w\) 排序然后倒着DP一遍,用 \(dp(i,j)\) 表示后 \(i\) 个人选 \(j\) 个人。

· 【模拟赛#3】宝藏

链表

正解:十字链表,维护边缘的信息即可
我的解法:用文艺平衡树维护列和行,每次操作都是 \(\mathcal O(n\log n)\) 的,当然赛时没写完寄了(

· 【模拟赛#3】回家

贪心,线段树

看了好久才看出来线段覆盖,然后就可以配合线段树 \(\mathcal O(k\log n)\) 做。
然而,赛时我写的排序是这样的
inline cmp(mem x,mem y) {return x.t<y.t}
关键还TM过编译了!
然后我就知道要在编译选项里加入 -fno-ms-extensions ,同时再也不敢写inline了(恼

· 【模拟赛#3】休闲

数学

等价于求 \((x,y)\) 使得 \(\gcd(x,y)=1,x+y=n+2\) 相当于求 \(\varphi(n+2)\)\(\mathcal O(\sqrt n)\) 枚举素因数即可。

最终分数:\(100+30+0+100=230pts\),挂分 \(0+0+100+0=100pts\) (恼


11-17

Mike chen出的模拟赛,出板子题有、无语

· 【模拟赛#4】跑调天团

双指针

枚举最小值,贪心求最小的最大值即可,复杂度线性。

· 【模拟赛#4】折线段

数据结构优化DP

一眼数据结构优化,记 \(dp(i,j,k)\) 表示前 \(i\) 个点,\(f(S)=j\),且最后一个数上升或下降的方案数,然后转移显然是求前缀和和后缀和,树状数组即可求解,复杂度\(\mathcal O(nk\log n)\)

然而赛时清空数组时 \(i,j\) 写反,直接 \(\text{RE}\) (恼
诡异的是我对拍拍到 \(n=20\) 也没有查出来这个错误,数组大小才 \(10\)

· 【模拟赛#4】遥控车队

李超线段树

小车可以表示成折线,然后一眼李超树,复杂度 \(\mathcal O(q\log^2n)\)
但是我不会写,写了 \(40pts\) 的暴力跑路了。

· 【模拟赛#4】修大屏

双指针,平衡树

显然可以枚举两条边,然后剩下两条边可以双指针,这样问题就变成了维护一些数,然后判断去掉前 \(s\) 大后剩下的数是否超过 \(t\)
这个事情可以用对顶 set 做,也可以直接一个平衡树做。考虑到平衡树常数较大,值域又比较小,因此可以写一个树状数组来代替平衡树。

最终成绩:\(100+10+40+100=250pts\) ,挂了 \(0+90+0+0=90pts\) (恼


11-18

今天是lxl的模拟赛,有、毒瘤
以及题目名称设计别出心裁。

· 【模拟赛#5】a

DP

大概是求俩序列的最长公共子序列,但是 \(n=1e6,m=1e3\) ,不能直接 \(\mathcal O(nm)\) ,但是可以dp答案,就可以做到 \(\mathcal O(m^2\log n)\)

· 【模拟赛#5】b

贪心

相当于找到一些不相交的环然后删掉,可以仿造 \(tarjan\) 算法,找到一个返祖边就把它所构造的环删去,然后所有边至多删掉一次,因此最终是线性的算法。

赛时脑瘫没有想到可以直接继续dfs,而不需要重新跑一遍。姑且认为是我太困导致状态不好

· 【模拟赛#5】c

最短路,斜率优化

最后10min想到了正解,然后意识到肯定写不完,极度折磨。
可以发现我们要求的是

\[\min\{dis(s,x)+(x-y)^2+dis(y,t)\} \]

\(a_x=dis(s,x)+x^2,b_x=dis(x,t)+x^2\)
那么就有我们要最小化 \(a_x+b_y-2xy\)
到这一步zry和wyp都看出来了分离 \(b_y-2xy\) 的做法,然而我卡住了,大抵是没有做过类似的题目的缘故。
枚举 \(a_x\) ,然后 \(b_y-2xy\) 可以变成一条直线,而直线的维护方法就很多了,比如李超线段树,二分栈,都是可以做的,复杂度是 \(\mathcal O((n+m)\log n)\) 的。

· 【模拟赛#5】d

线段树,数学

首先肯定可以转化为求区间最大值之积的问题,然后枚举 \(r\) 可以用单调栈维护 \(l=x\) 时的区间最大值,然后每次加入一个点都是推平操作,我们需要维护三个序列最大值之积,那么推平的过程中就需要维护剩下两个序列的最大值之积,从而我们需要维护两两序列的最大值之积。
这样加上每个序列我们需要维护 \(7\) 棵线段树,考场上思路没有理清楚,加上觉得要维护一堆东西,就放弃了。

最后成绩: \(100+0+50+44=194pts\) 状态不佳。
%%% wyp AK爷
wyp:没有大样例我不会打


11-19

· 【模板】[HEOI2013]Segment/李超线段树

数据结构板子

有趣的数据结构捏
以及%%% \(\color{black}{T}\color{red}{ianyilemon}\) 写的有关李超线段树的洛谷日报

在这里整理完了11月的题,累死我了(瘫


11-20

· 小明的回家之路

贪心

· 简化斗地主

贪心,DP

注意到一对相邻的人可以不超过两个配对,因为两个相邻的配对可以转化为两个自己组内的配对,这样贪心地把所有的数取到不超过 \(2\) 以后再考虑相邻配对,dp一下即可。

· 奇怪的冒泡排序

思维

实际上奇数位上可以任意排序,偶数位上也一样,所以1操作其实只是偶数位和奇数位上的交换次数,离散化一下即可计算了。

· 立方数请走开

数学

筛出素数,把所有数的素因数的次数模 \(3\) 即可,然后经过这样的转化每个数都有唯一的数不能与之同时选取,预处理出来,用散列表统计一下即可。

· 魔法师

单调队列

如果一个选手比你小还比你强,你就打不过他了
典,没什么好说的


11-21

· 【模拟赛#6】排列

DP

直接DP一下,\(dp(i,j)\) 表示前 \(i\) 个数有 \(j\) 个上升。

\[dp(i,j)=(j+1)dp(i-1,j)+(i-j)dp(i-1,j-1) \]

就可以做了

· 【模拟赛#6】切分

思维,线性基

首先有一个套路性的转化,把点的权值定义为 \(val_u=\bigoplus\limits_{(u,v,c)\in E}c\) ,那么点集 \(A\)\(\bar A\) 的权值就是 \(\bigoplus\limits_{x\in A}val_x\) ,那么就相当于在这么多数中选若干个的异或和。

记所有权值的线性基为 \(p_1,p_2,\cdots,p_m\) 有答案为 \(2^{m-1}\bigvee\limits_{i=1}^{m}p_i\)

赛场上没学过线性基,只能无奈打 \(40pts\) 暴力

· 【模拟赛#6】聚会

贪心

比较毒瘤的题目。
大概就是按照限制条件来不停贪心删点,然后再找到一个点后就可以知道所有合法的点。

· 【模拟赛#6】最短路

数据结构,最短路

注意到答案只有两种可能,一种是从祖先跳下来的,一种是从其他子树到该点的子树内的。
第一种容易维护,第二种考虑横叉边对答案的贡献,一定是一条链,可以考虑树剖维护,做到 \(\mathcal O(n\log^2n)\) ,更优做法是转化成二维数点然后扫描线,可以 \(\mathcal O(n\log n)\)
赛时直接向上更新然后假的离谱。

最终分数:\(100+40+20+20=180pts\) ,没有挂分。

疯狂敲板子~

· 【模板】线性基

线性代数板子

打一下这个奇妙板子~
事对处理选一些数的异或和的好用工具!
(主要是模拟赛用到了)

· 【模板】2-SAT问题

图论板子

感觉这种问题到图论的转化还是比较巧妙的,不过神奇的是我在不知道2-SAT的情况下在一道题里有了类似2-SAT的建图思路,不过没做出来就是了(

· 【模板】"动态 DP"&动态树分治

数据结构板子

奇妙的小板子


11-22

· 【模拟赛#7】奇异国度

最短路

背包的范围会炸,因为一个数必须要连续加与连续减,值域开两倍跑最短路即可。

· 【模拟赛#7】函数

贪心,数学

考虑差分,注意到开口向上的二次函数的差分具有单调不减性,因此贪心选取即可。
不得不说数据 \(95\%\) 都是 \(n=m\) 属实离谱。

· 【模拟赛#7】集合并

暴力,容斥

我的做法:
\(k\le 6\) 时暴力枚举
\(k\ge 7\) 时至多有 \(3\) 个条件有用,枚举一下即可。

· 【模拟赛#7】股票

数据结构优化DP

柿子写出来后分离一下,用线段树维护即可。
值得一提的是用左半区间更新右半区间的trick是很好用的!

最终分数:\(100+95+100+50=345pts\) ,感谢 \(T2\) 的氵数据。


11-23

lester搞了一个难度在联赛和省选间的模拟赛,心态裂开,觉得自己菜死。

· 【模拟赛#8】质因数

数学,数据分治

注意到 \(p\) 比较大的时候可以直接线性筛,范围不会很大;
\(p\) 比较小的时候可以枚举质因数然后二分判断,质因数不多。
考虑数据分治,\(p\ge 11\) 的时候就线性筛,常数小 \(\mathcal O(n)\) 可以草过 \(10^8\) 的数据量。
\(p\le 7\) 的时候就至多需要删掉三个质因数,直接容斥一下即可。

· 【模拟赛#8】木甲

博弈,换根DP

首先需要猜到一个结论(考场上死在这上面):
只需要考虑直径,然后转为链的情况即可。
然后就是一个经典的巴什博弈,考虑直径长度即可。
现在需要找到一些子树的直径,考虑DP,然后换根维护即可。
\(\mathcal O(n\log n)\) 是比较容易的,multiset 维护即可,稍微难一点的是线性算法,有不少细节。

· 【模拟赛#8】冰与火的交响曲

计算几何

注意到凸包的每条线相当于绕了凸包一圈,因此可以发现使一个点和凸包在同侧的线,一定是凸包上的一段连续的直线,二分这段连续直线的起始点即可。

· 【模拟赛#8】迷宫/[HNOI2019]校园旅行

二分图,DP

神仙构造题。
首先暴力是这样打的:我们考虑 BFS 可以作为答案的二元组 \((u,v)\) ,这样做的复杂度是 \(\mathcal O(m^2)\) 的。
然后思路就是说我要考虑减少边数。
我只关心 \(01\)\(11\)\(10\) 段的长度奇偶,因为最终我可以在两条边之间反复横跳,来保证我的路径中对称的两段奇偶相等,因此我们可以考虑对每一个异色连通块,同色连通块都考虑其回路的奇偶。
首先偶环是必然存在的,因为是无向图,所以我只需要考虑是否有奇环,那么相当于我判断是否是二分图。
那么对于每个连通块我们保留一颗生成树,如果它是二分图,那么生成树也是二分图,如果不是,那么我们就可以加一个自环来保证它有奇环。、
这样,我们就把边数变为了 \(\mathcal O(n)\) 的,按照暴力的思路做即可。

最后成绩: \(100+0+0+0=100pts\) ,心态裂开。


11-24

最后一天模拟赛,一堆原题有、难蚌

· 【模拟赛#9】玩具展示架

数据结构优化DP

枚举右端点然后可以直接线段树维护 \(dp_i+\max\limits_{k=i+1}^{j}\{h_k\}\) ,加一个单调栈维护区间最值在弹栈入栈的时候维护线段树接口即可。

· 【模拟赛#9】电线连接

状压DP

\(dp(i,j,s,l)\) 表示前 \(i\) 个值, \(j\) 条电线,前 \(k\) 个点的度数奇偶性用 \(s\) 表示,同时第 \(i\) 个点最右边的电线在从右到左第 \(l\) 个点。
可以 \(\mathcal O(1)\) 转移,然后就可以 \(\mathcal O(nmk2^k)\)

· 【模拟赛#9】功力提升

DP

可以把操作转化为最大值到某一个点的连线,然后按照题意就是不能相交,构造就是从小到大连。
转化模型以后直接 BIT 优化DP即可

· 【模拟赛#9】神兵天降

二分答案,0/1最短路,二分图匹配

二分答案 \(ans\) ,发现一个分层图看要从骑兵和步兵之间转化就是边权为 \(1\) ,否则边权为 \(0\)
然后看需要转几次,因为骑兵和步兵可以一一对应,连边之后就可以二分图匹配做了。

· 【模板】二分图匹配

楽死我了,NOIP前两天学会了二分图,还有救吗


11-25

明天就是NOIP了。
补了一下前两天的题,打了点板子。

马上要退役了呢……

\[\Huge{Best\ wishes\ for\ all!} \]

posted @ 2022-11-18 23:31  思考人生中…  阅读(53)  评论(1编辑  收藏  举报