CSP2024考前集训记录
CSP2024考前集训记录
2024.9.2
高一学长供的题。
A题
开考5分钟想到枚举
然后时间复杂度
于是后半个比赛全在想怎么优化,想到的包含:再套一层线性筛之类的……
结果题解是先枚举
题解
B题
想到了可以通过修改唐链上的任意一点权值为极大值,然后定根从下往上逐步处理每个子树。
然后把点权换成边权,结果忘记还有 LCA 了……
于是后面想的贪心(按子树内不同权值从小到大排序再合并)也错了,导致暴力也是错的……
并且合并用的启发式合并也没学。
考下3分钟补完了。
题解
C题
刚开始没看懂题,以为一次询问只能选一次区间,于是预处理出来
然后敲到一半临时发布样例解释,发现一次询问中可以选取选取多个区间,那么就得再套一个 dp。
但是多组询问是个大问题,刚开始想着从
结果正解是整体二分套dp,不会)
题解
D题
赛时看到概率&期望就溜了。
赛后学长只讲了前半部分(30 pts),以龙数容斥可以做到
后面就要上狄利克雷后缀和了,还没学(
题解
总结
主要知识点漏洞:概率期望、整体二分、数学、容斥
2024.9.3
高二学长供的题。
A题
一道签到水题。
我的思路:把所有 OTA
缩成一个字符 #
,D
不动,其他变成 .
,
然后从后往前扫一遍,对于每一个 D
记录这个 D
后面 .
前面 #
的数量,然后把所有 D
的答案加起来。
但是自己不知道哪里写错了,大样例过了也只过了 Subtask1。
赛后看 std,std是反着做的,而且比我的也简短一些,他看成 OTA
跳 D
,然后直接从前往后扫一遍就没了。
题解
B题
小学奥数题(确信)
首先研究了一下
记
为了取最大值,这个
然后每个
于是递推式:
初始状态:
注:赛时只有一个人切)
题解
C题
发了 spj,然后 spj 里面有
然后找规律,没看出来规律,归纳也没归纳出来。
题解
好多人都切了这道
D题
注:Subtask 1 的
又是概率期望,啥思路都没有。
题解
总结
主要知识点漏洞:概率期望、构造(?)
2024.9.4
今天由同学讲计数题。
ATcoder ABC151E
题意
给定集合
思路
直接处理极差不好做,于是想到拆开最大值和最小值。
集合的所有子集的某些信息的合并不好做,于是考虑从另一面来做,枚举信息的值再来找子集个数。
由于
然后对
然后对最小值做同样操作然后相减就可以了。
CodeForces 559C
题意
给定一个大小为
思路
记第
首先有很朴素的 dp:记
考虑优化,由于状态数就是
在没有障碍的情况下,从
而本题增加了障碍(关键格)的限制,于是想到通过某种手段只考虑关键格,跳过普通的格子。
于是设
然后考虑转移,由于不经过障碍比较难计算,于是考虑从反面(经过障碍)计算。
假设现在在处理第
为了保证方案不重复贡献,若一条路径第一次通过障碍
于是对于障碍
于是对于障碍
考虑答案,假如把终点
CodeForces 1970E
题意
给定有
Easy version:
Medium version:
Hard version:
思路
Easy Ver.
由于长度为
设
于是重设
由于
时间复杂度
Medium Ver.
由于
考虑递推式改为不递推的常用方法:把递推维度
在本题中,令向量
于是可以构造矩阵
那么原递推式等价于
然后上矩阵加速就行。
时间复杂度
Hard Ver.
现在
于是考虑修改状态定义。
容易想到从长短路入手,但是由于增加的第
于是就要让新增加的边与前一条边没有除了点
注意到第
于是可以把第
那么第
但是此时当前组前一条边能否选长边与前一组后一条边的类型有联系,于是要将上一组一组后一条选的边的类型记录下来。
设
接下来考虑构造矩阵。令
于是
边界条件:
记录答案时,枚举最后停留的木屋,方案数之和即为答案。
时间复杂度
CodeForces 1245F
题意
思路
首先由二维前缀和,若设
又因为异或是不进位加法,于是
位运算不好处理,考虑二进制拆位。然后就可以数位dp。
设
其中有限制的意思是高位与最大值相同。
Luogu P2606
题意
一个排列
求长度为
思路
条件的
由于二元关系相当于图中的一条边,于是构造图
于是会发现图
并且若将
容易发现一个合法序列与一个小根堆一一对应。
接下来只需要求合法点权分配方案数即可。
考虑子树
那么记子树
于是
最终答案是
然后由于
Luogu P7140
题意
给定长度为
思路
考虑化简式子。
首先
然后最里层的求和就是一个连续的区间了,于是设
然后括号里面的东西和
里层的东西直接前缀和优化空间复杂度是
注意到下标不超过
那么根号分治的暴力枚举部分就可以不用了,直接前缀和复杂度是
于是设
(由于
然后对于每一次询问,枚举
Luogu P5363
题意
给定
A 和 B 轮流对棋盘进行操作。A 先手,一次操作可以将一颗棋子向左移动任意格,但不得越过任何棋子且不得越出棋盘。当一方无法做出操作时,另一方赢。
求使 A 有必胜策略的初始状态数。
思路
博弈论 + 计数,考虑将其一一映射到另外的博弈论模型。
考虑操作一次带来的影响。若将棋子
那么对于
于是初始时满足
容易发现这样的序列
(然后就不会了,不知道如何判断是否有必胜策略)
同学说这是阶梯 Nim 博弈,有必胜策略当且仅当
像背包,于是考虑dp。
首先将
位运算,考虑拆位。
拆位完后,长得很像背包,于是考虑dp。
设
其中,
最终答案即枚举剩下格子数,将其插在
Luogu P4931
题意
询问
对于
思路
同学讲了不会,自己想了半天想不出来。😃
2024.9.5
正睿 NOIP 模拟赛
A题
第一眼看到所有子串之和都是质数就感觉不太可能存在,于是马上手玩了一下
记
若
紧接着显然有
然后有
考虑
若
于是
接着对
题解
B题
首先有一个很显然的dp:按
然后看这个方程长得就很能 CDQ,然后就打了个板子上去。
然后清空写挂了,调了两个半小时没调出来:)
最后只交了个
题解
C题
看了一眼想到以人为叶子向上建博弈树,然后就去写 T2 了。
赛后想了一下,可以向上dp。
然后插入可以用线段树分治 (?),但是没有结合律比较难弄。
然后看题解,只需要预处理一些长为
题解
D题
看了一眼没思路就溜了。
题解看到状压dp就看不懂了。
题解
总结
主要问题:计数、dp
2024.9.6
正睿 NOIP 模拟赛
A题
看到这种能从一个数
刚开始以为条件
题解
B题
一眼数位dp,但是遇到 ?
就要处理一下 limit
然而想了半天感觉很抽象,想不出来,尤其是回文串的处理。
赛后看榜单发现想的只是
题解
C题
没看到 “每条边至多在一个简单环” 这个条件,直接开溜了。
然后看了题解,发现是板子题。(但是这些板子都不会)
(不过教练只造了基环树。。。)
题解
D题
看了一眼,口糊了一个
题解
总结
2024.9.7
CSP-S模拟赛(?)
A题
首先想到了朴素dp,设
然后调暴力没调出来,但是发现这个就相当于将 dp 数组整体向右移动
但是整体向右移动不好维护,于是变成 “视角” 向左移动。
于是就只需要大值域、单点修、区间查了,于是直接上动态开点线段树就没了。
题解
B题
想了挺久,发现自己只会
有人在赛场上说 BSGS,可惜我不会(
想起同学说有些神奇的强制在线可以反推答案,试着套了上去结果对了。
可惜有人在赛场上喊这个做法-_-
题解
C题
赛场在想枚举/二分极差,卡在字母种类多而想不出来,于是打了
赛后同学说可以枚举字母就秒了。
直接枚举字母对
时间复杂度
正解是
题解
D题
看懂了题意,也仅仅是看懂了题意了。
题解
总结
主要问题:计数、极差处理方法
2024.9.9
梦熊十三连测第八场
A题
可以想到每一天进的球数对
然后把对
钦定第
然后把除以
题解
B题
首先看到排列,可以想到若对于
不会期望dp,于是决定从定义下手,记上式(即
注意到多次选
考虑
矛盾,于是
直接枚举所有
由于每个
但是它有可能很大,不能直接放进状态内,而我们只需要知道
而
设
但是这个定义有一些问题,例如令
于是重新设计状态,设
考虑不合法情形的特征,容易发现这样的情形只选的
于是
时间复杂度
爆标了哈哈
题解
C题
首先想到了一个性质,对于任意
然后听说异或线性基可以
由于新序列不确定,而贪心地想,前面的数越小越好(因为对后面没有影响),于是设
但我不会异或线性基 xd
题解
D题
想到了dp,但想不清楚具体怎么写哈哈
打了个模拟退火跑路了xd
赛后才发现输出0有100分
题解
总结
主要知识点漏洞:异或线性基
2024.9.10
nslf训练题(?)
A题
看
但是我在外面定义了 main
里面又定义了一遍
题解
视频题解,绷不住了
B题
首先反转一个子串,左右两边是不变的,于是可以用线段树维护哈希并线段树上二分出公共最长前后缀,于是有无解只需要判断中间的串反转之后时候可以变成
长度即中间串的长度。
然后两侧的部分也有部分可以反转,而由于这部分
总复杂度
题解
C题
神奇的贪心题,不会
题解
D题
图论计数题,不会
题解
2024.9.11
某个人供题。
今天打的心态爆炸。
但是题目背景去掉就是一套好题。
A题
首先第一问直接模
然后第二问想了贪心,结果假了。
没想到正解是个爆搜。
题解
B题
会 SubTask1、2、3,打到这道题感觉被题目背景嘲讽了,不想写。
板子是 P5540。
题解
C题
一道看起来很数学的题。
一眼数据点分治,
考虑
然后
(然后正解和我的完全不一样,绷)
(据说
(学长说了个
题解
D题
只会暴力dp。
题解
2024.9.12
同学讲字符串专题。
板子都没打完,后面补。
2024.9.13
正睿场。
A题
首先能发现题目相当于一直往某个数的小数部分末尾加数,初始为
具体地,记第
然后贪心想假了,只考虑了最小的数字,选完了就把后面全选上。
然后大样例全过了……最后
题解
B题
很像省选集训的 D3T1,然后想到了换根+树套树写法,但是不会写。(但是集训那题的正解是点分治,不过我也不会)
然后这道题想到了按权值从大到小排然后扫描,但是后面不会了。
考后才知道直接动态维护直径就没了。
题解
C题
看到这种区间操作就想着改成单点操作,然后就不会了。
然后看到这种绝对值+符号反转想到了把它拆成
考后教练说若非
但是我还是不清楚怎么处理区间操作。
题解
D题
想到了考虑每个元素作为贡献的区间数量,然后跑一个单调栈就行。
题解
2024.9.14
A题
看这神奇的式子形式感觉比较难搞,尝试定序把最大最小值拆开之后还是不好做,遂放弃打暴力跑路。
题解
B题
首先有递推式:
然后看着能转成矩阵乘法,于是直接上矩阵快速幂。
题解
C题
最小差不好维护,于是考虑枚举作为贡献的两个人,排个序做个dp,是
结果正解是枚举最小差
题解
D题
带修
但是考试的时候没看到最大值,寄了。
题解
2024.9.16
梦熊场。
A题
由于颜色数量是可重复贡献信息,而答案满足单调性,于是考虑ST表+二分。
然后可以用bitset优化。
时间复杂度
题解
B题
没有非降就停止操作的条件是水题,可惜有这个条件。
然后想了半天正难则反,没想出来。
又想了半天,越想越感觉不可做,最后爆搜都不会了。
题解
C题
可以想到枚举峰,然后前面求逆序对后面求顺序对就行。
然后赛时竟然认为这个是错的。
题解
D题
赛时推了个性质:可以将整个网格图分成一堆
然后不会了,想的爆搜也是挂的。
题解
2024.9.18
初二同学供题。
A题
刚开始感觉没法做,后来发现即使选最边上的也可以覆盖略多于
然后出题人说
题解
B题
首先有
然后想了好久
后面发现第一次查
题解
C题
想到了第二乐章至多选择两个片段,然后想了半天没啥思路就打暴力了,然后打炸了。
题解
D题
一眼最大子段和,感觉能树套树,但是不会。
打暴力,然后合并区间写挂了,寄。
题解
2024.9.19
正睿场。
A题
分数输出卡死了二分,然后只会打暴力。
然后暴力也莫名奇妙挂了。
题解
B题
试图按
题解
C题
尝试了dp,然后想不清楚。
题解
D题
想了很久可以单栈排序的序列的特点,没想出来,跳了。
题解
2024.9.23
NFLS场
A题
直接暴力就没了,然后要特判
B题
首先可以记
然后设
那么有解的充要条件是对于所有
然后发现这东西是差分约束,而且是等式,于是随便令一个是
然后考虑最优值,发现如果将所有
于是只需要求
直接求中位数即可。
题解
C题
与答案有关的
然后正解就只是转化了一下用bitset优化。
题解
D题
正解和暴力都不会,溜了。
题解
2024.9.24
NFLS场
A题
首先拿并查集把所有块分类,设第
然后对于每一列,考虑相邻两块
设第
然后发现这个东西很像差分约束,于是移项+取等为
由于边权均为正,所以可以只跑dijkstra.
题解
B题
首先可以想到把
然后由于脑力被A题榨干了,连正难则反都没想到,后面经典的容斥也没想到。
考后发现套路很经典。
题解
C题
同B.
题解
D题
同B.
题解
Luogu P2042
题意
写一个数据结构,支持插入、删除、区间修改为一个值、区间翻转、区间求和、求全局最大子段和。
思路
平衡树板题,但是超级难写。
重点是走到更深的点之前一定要pushdown。(就这个错误查了大半天)
然后
然后先 find(r+1)
再 find(l-1)
可以省一个 splay(L)
,改了这个之后就可以开 C++17 卡过去。
写了421行,7.3kb。
2024.9.25
正睿场
A题
看着像AC自动机,但是直接建空间会爆炸,于是不会了。
没想到是类似折半搜索的方式。
题解
B题
首先在DAG上有dp,设
然后考虑扩展到环,结果写了dijkstra、SPFA、分层图都挂了,发现最小值不好处理,然后没时间了。
结果考后同学说是从大往小跑就行。
题解
C题
神奇卡空间题,得从空间较小的算法入手。
首先全局第
然而这个做法在这道题相当于
然而我们发现有很多空间被浪费了,check
都只用了一个变量,于是可以进行 65536 分(不分更多是因为空间开不下)。具体地,第一次将值域分为 65536 份,找到第
这样就成功地做到了
当时我只想这能过 75 分,但是它却过了 80 分。
但是别人拿这个过了 100 分,甚至跑得飞快。
卡了好久的常还没卡过去,最后发现它多跑了100毫秒。
题解
D题
看着像点分治,可惜我不会,打了个
题解
2024.9.27
A题
首先答案是
直接求最小公倍数会爆,然后发现:
然后发现最小公约数的最大公倍数是最大公倍数的最小公约数,于是能变成:
于是只需要令
结果正解是把计算过程中的 lcm 也用变化后的
题解
B题
打了个表,发现只需要把由
题解
C题
赛时没看题,赛后看题解看不懂怎么处理深度相同的特殊点
题解
D题
没看题。
题解
2024.9.30
A题
第一问一眼左右横跳。
第二问打了个表,发现为偶数时答案为
题解
B题
然后
题解
C题
一眼讨论
题解
D题
题解
2024.10.6
A题
首先有显然的
然后这个东西过了100分。
题解
B题
感觉感觉要尽可能让他们都吃到伤害,然后打了个从小往大减的O(n^2) 假暴力,拿了60pts.
题解
C题
感觉可以拆成两个序列,但是不会dp。
题解
D题
不会概率。
题解
2024.10.8
A题
尝试推式子,无果。
然后打了个表发现是恒等式。
题解
B题
打表观察边权/路径/答案特点均无果,于是只能打个 50pts 跑路。
赛后发现可以贪心地在边权相同的情况下跳到编号最小的点,然后直接跑dijkstra就行。
题解
C题
不会博弈论,把题面复制上去拿了 20 pts.
题解
D题
直接扫描线可以
然后欧几里得距离感觉很不好做,加上没时间就 60pts 跑路了。
题解
2024.10.12
A题
直接优先队列模拟就没了。
题解
B题
赛时没想到啥好的做法,上了个点分治。
结果递归的时候求出重心就直接递归儿子了,成功变 75 分。
题解
C题
直接构造一条链增长率是线性的,只能拿到 20 分。
然后发现半径为 2 的菊花增长率是平方的,但是不够灵活。
然后发现把这两个东西拼起来就行了。
题解
D题
只需要
而这个东西当且仅当没有其他非树边的对应路径与其有边集相交。
但是我只会做点集相交。
把点 LCA 替换成边 LCA 之后会有贡献重复,感觉要分类讨论,还要处理除以
题解
2024.10.14
A题
题解
怎么又是视频题解。
B题
C题
D题
2024.10.15
A题
题解
B题
题解
C题
题解
D题
题解
或
2024.10.16
A题
题解
B题
题解
C题
D题
2024.10.19
A题
题解
B题
题解
C题
题解
D题
注:就是求有多少排列满足
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通