2023做题记录
本文同时发表于个人洛谷博客。
部分收录于构造题部分。
2023.11.3
Luogu P2467
上一次CF就是被这个trick坑了!/ng
用
前缀和加滚动数组即可。
CF1761D 2100
小清新题。
考虑连续进位串。发现除了第一位必须要选择 (1,1),其他都可以任选(0,1),(1,0),(1,1)。
中间必须用(0,0)隔开。讨论连续段个数即可。时间复杂度
2023.11.6
abc302h 空心橙
先考虑单个问题。每次操作在两点之间连边,发现对于每个联通块,如果是一颗树则是树的大小-1,否则为联通块大小。
用可撤销并查集维护即可,时间复杂度
arc084b 空心橙
据说德文以前还布置过这题/yun
用十进制从低位到高位考虑,发现有贡献的只有前5个数。直接用前5个数记录状态,可以跑最短路,时间复杂度
CF1027E 2100
真不知道怎么评到紫的。
考虑每一行最大联通块个数,显然可以
这难度最多蓝吧。
2023.11.7
CF1342E 2300
不会斯特林数。
发现两两攻击的次数其实就是给出了所有车可以放的行数,因此转化之后变成
其实我是推了半天
直接解决即可。
CF1144G 2400
水题。
一眼考虑dp,设
CF1758E 2500
我是傻逼。
发现有解情况只需在矩阵中每一列中已确定的行之间连边,答案即为
考虑无解情况,梦魇的开始
对于每一行之间以其与之前的点以权值差连双向边,直接判断是否合法,正确性易证。
/fn/fn/fn
2023.11.9
CF1681E 2600
看到分层自然想到倍增。
用
操作时直接跳即可,时间复杂度
CF1260E 2400
抽象。
观察题面,发现样例很弱。
大胆猜想最后一个必须选,然后剩下的从小到大选取,一定能选 WA on #13。
仔细思考,发现有时会出现选择的点活不到贿赂的时候,因此考虑每个点能活到的时刻,发现就是 2 的幂次。
直接从右往左丢进堆里选即可。
2023.11.15
vp CF1704 CodeTON2
打的最抽象一场。
ABC都是水题,但一共吃了三发,不写了。
D 1900
诈骗。
考虑怎样的两个序列经过变换1是同样的,发现可以
直接
卡了一个小时/ll
E 2200
一眼题。
看到dag自然考虑dp。发现可能会有一个点传下来的时候这个点的权值是0的情况,但是显然该情况只出现在前
把
时间复杂度
2023.11.16
arc071d 实心黄
诈骗。
发现如果直接dp状态非常不优,考虑一些玄学做法。
发现最终序列无论如何一定是一堆1中间夹杂着几个别的数和后面的一长串,直接
、
arc102c 铺底橙
过于shaber题,感觉没有2500。
直接考虑对某一个和无法出现的本质,发现即为某一个数至少出现1次(这种情况最多只会出现1次)或两种点色中最多出现一种。先考虑第二种,显然可以
时间复杂度
arc087c 空心橙
相比前一题还算正常。
看到01串,有大小限制,自然想到建01Trie。
可以发现新放的串就是一个点都没被填的子树。
考虑 SG 函数,发现就是子树深度的 lowbit。
直接dfs即可,时间复杂度
2023.11.20
Luogu P2463 (BZOJ4698)
SA板题。
差分之后变成所有字符串的最长公共子串,考虑SA。
跑出 height 数组之后发现可以双指针,时间复杂度
Luogu P4341 (BZOJ2251)
又是降智的一天呢/fn
写了一个奇怪的unordered_map
和priority_queue
发现有点卡空间。
然后就不会了qaq
发现排序之后 height 以内的已经被跑完了,直接一次双指针询问完。
时间复杂度
2023.11.21
Luogu P4248 (BZOJ3238)
拆柿子,发现变成一坨直接算的东西加上所有后缀的 lcp。
考虑拆贡献计算。
tj用的单调栈,但是我太蠢了,于是我用了set
但是时间复杂度不劣,仍然是
2023.11.22
arc128d 半空心橙
非常at风格的dp。
考虑无法合并的情况,显然只有两种:两个数字一直交替,某一个数字连续出现。
将两种情况分开考虑。第二种可以直接断开,第一种dp时处理,很好写出转移方程。
时间复杂度
2023.11.23
abc290g 空心橙
arc073c 空心橙
shaber题,但是降智。
发现整体最小值和最大值无论如何一定被两种中的一种选,因此对其分讨。
若整体最小值和最大值是同种颜色,则只需让另一个区间尽量小,可以用堆解决。
若是不同种颜色,发现数值较小的放整体最小值所在堆一定更优。
时间复杂度
2023.11.24
vp CF1656 CodeTON1
感觉这场和1270不相上下,一堆构造。
ABC三个水题,不写了。
D 1900
大眼观察样例,发现2的幂次必然不可行。
接下来发现如果数字足够大,最大可以整除
考虑数字较小,发现用除完之后的数就可以。
时间复杂度
E 2200
无根树先转为有根树。
考虑对于一个节点的所有子树,子树内部权值必然全部相等,不妨设其为1或-1。
则很显然可以发现每个节点的绝对值就是连出的边数量,符号就是深度的奇偶性。
dfs即可,时间复杂度
F 2600
赛时想出来了,但是没调出来,赛后过的。
对柿子进行化简,将
考虑这个一次函数的增减,发现仅和
显然可以排序后前缀和预处理,一个一个直接跑。
时间复杂度
Luogu P1975 (BZOJ2141)
一眼直接线段树套splay直接跑就可以过。
insert的时候挂了以为是splay的锅结果发现是线段树开小了/ll/ll/ll/ll/ll
2023.11.28
Luogu P1975 (BZOJ2141)
一眼直接线段树套splay直接跑就可以过。
insert的时候挂了以为是splay的锅结果发现是线段树开小了/ll/ll/ll/ll/ll
2023.11.30
CF1700D 1900 duel Skywave2022 win
我也不知道为什么要和tb duel,但是我就是duel了,还十分降智的1900做40min。
首先发现答案满足单调性,考虑二分。
考虑在
时间复杂度
CF847L 2400
daily problem,有点水。
考虑构造方案。首先感觉无根树有点烦,不妨钦定一个根。
考虑所有点,往根一定是一个联通块,考虑这个联通块的大小,显然可以从大到小跑。
考虑如何连边。设目前的点为
时间复杂度
CF873F 2400
SA板题。
发现询问子串个数,自然考虑 SA。
先考虑全部结尾可行的情况,显然跑出height数组后单调栈即可。
考虑部分结尾不可行。发现结尾比较烦,将串翻转变成开头,答案相同。
跑出height数组后删除不可行的后缀串,height取
时间复杂度
CF1657E 2200 duel Skywave2022 win
傻逼题,脑抽写假一次。
考虑 Kruskal 的过程,往根连的边越大则优先考虑,发现保证往其他未考虑点连边权比根边打即可。
考虑 dp。设
时间复杂度
2023.12.1
CF514E 2200 duel Skywave2022 win
又一次打错模数,活不下去了/ll/ll/ll/ll/ll
矩快板子。
发现
考虑深度较大的情况,显然可以矩阵转移。
时间复杂度
CF1088E 2400
被诈骗了/fn
先不管
先计算出解,很容易算出个数。
时间复杂度
2023.12.4
CF1788E 2200 duel _________________ lose
输的主要原因:不会写树状数组了/fn/fn/fn/fn/fn/fn/fn/fn/fn/fn/fn/fn/fn/fn
考虑裸的 dp,发现可转移的充要即为前缀和的大小关系,裸的 dp 复杂度
考虑优化。将前缀和排序,显然可以用树状数组优化,时间复杂度
2023.12.6
CF1000E 2100 duel Skywave2022 win
傻逼题。
看到连通性自然想到 tarjan。
边双缩点后直接跑 dp 即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】