- 2025-01-08Luogu P2292 HNOI2004 L 语言 题解 [ 紫 ] [ AC 自动机 ] [ 状压 dp ]
L语言:很好的一道状压dp题。思路看到这题,首先可以想到一个很暴力的dp,设\(dp_i\)表示考虑到第\(i\)位能否被理解,暴力匹配字符串转移即可。第一个优化也很显然,暴力匹配字符串换成AC自动机即可。但是时间复杂度变成了\(O(m|T||S|)\)的,显然会被卡。状压与位运算优化
- 2025-01-07Solution - Luogu P10046 [CCPC 2023 北京市赛] 哈密顿
感觉我的做法比其他题解都简单一些阿!注意到边权的形式是\(|a_i-b_j|\)的形式,要同时考虑到正负,但这明显是不想看到的。结合题目要求的是边权和最大值,那么一个方法就是把\(|a_i-b_j|\)转化为最大值的形式去维护。于是可以考虑拆分为\(\max\{a_i-b_j,b_j-a_i\}\)。
- 2025-01-07Luogu P3041 USACO12JAN Video Game G 题解 [ 紫 ] [ AC 自动机 ] [ 动态规划 ]
VideoGamesG:弱智紫题,30min切了,dp思路非常板。多模式串一看肯定就是要建出AC自动机,然后在fail树里下传标记,预处理每个节点到达后的得分。然后设计\(dp_{i,j}\)表示第\(i\)个字符,AC自动机里匹配节点在\(j\)的最大答案,刷表法转移即可:\[dp_{i+1,ch_{j,c}}\gets\ma
- 2025-01-06Diary - 2025.01.06
发现昨天日期写成2024了。明天计划来说应该是主要写题解了!!!上午还有个模拟赛,但是说不定又是像之前那样拉个USACO来(?)。仍记那时USACO金组没ak,t3被卡常了,6。明天要写的题解:LuoguP11513[ROIR2017Day2]培训LuoguP11509[ROIR2017Day1]挖矿机器人LuoguP1004
- 2025-01-055.贪心
贪心开题顺序:\(IHCJEBA\)\(A\)[AGC032E]ModuloPairing若没有\(\bmodm\)的限制,将\(\{a\}\)升序排序后取第\(i\)大和第\(i\)小进行匹配,调整法即可证明。以\(a\leb\lec\led\)为例,由\(\begin{cases}a+c\leb+c\leb+d\\a+d\leb+d\end{cases}\)
- 2025-01-03Luogu P4287 SHOI2011 双倍回文 题解 [ 紫 ] [ manacher ]
双倍回文:回文子串结论的经典应用。结论先放本题最关键的结论:一个字符串本质不同的回文子串最多只有\(n\)个。考虑如何证明:假设我们一个一个地在当前字符串(黑色部分)的结尾加入字符(红色部分),那么会出现如下情况:显然,加入红色字符后,字符串中最多只可能新出现一个本质不同的回文
- 2025-01-02Solution - Luogu P11456 [USACO24DEC] Interstellar Intervals G
首先对于这个问题有一个很直观的做法是直接DP。即设\(f_i\)为已经划分出\([1,i]\)部分,且最后一段段尾为\(i\)的方案数。但是这个题还涉及到了有的点可以不染色的情况,所以再设\(g_i\)为已经划分出\([1,i]\)部分,且下一段为\(i+1\)开头的方案数。对于转移\(f\),
- 2025-01-01Luogu P9646 SNCPC2019 Paper-cutting 题解 [ 紫 ] [ manacher ] [ 贪心 ] [ 哈希 ] [ BFS ]
Paper-cutting:思维很好,但代码很构式的manacher题。蒟蒻2025年切的第一道题,是个紫,并且基本独立想出的,特此纪念。判断能否折叠我们先考虑一部分能折叠需要满足什么条件。显然,这一部分需要是一个长度为偶数的回文串。那么横向和纵向会不会影响呢?答案是不会,因为横向折了之后,折
- 2024-12-30Solution - Luogu P11472 命运黄之瓜
因为\((a_i,b_i)\)虽然是对的形式,但是异或是同时的。于是可以考虑把两元先缩为一元,只需要让\(a_i,b_i\)互不干扰即可。那就可以把\((a_i,b_i)\)当作数\(c_i=a_i\times2^{31}+b_i\)。那么最后\(c_i\)异或出来的结果\(c\),就可以还原出\(a=\lfloor\frac{c}{2
- 2024-12-304.字符串
字符串开题顺序:\(CHBA\)\(A\)QOJ8079.RangePeriodicityQuery设第\(i\)次操作后的字符串为\(s_{i}\)。注意到若\(p\)不是\(s_{i}\)的周期则\(t\)一定不是\(s_{k}(k>i)\)的周期。对于每个\(p_{i}\)作为周期的时间都是一段区间。由luoguP3435[POI2006]
- 2024-12-253.动态规划
省选动态规划专题开题顺序:\(ARJB\)\(A\)luoguP4141消失之物题解点击查看代码intw[2001],v[2001],f[2001],g[2001];intmain(){intn,m,i,j;cin>>n>>m;f[0]=1;for(i=1;i<=n;i++){cin>>w[i];}for(i=1;i<=n;i++
- 2024-12-25Luogu EI 的第六分块 // KTT 学习记录
P5693EI的第六分块题目描述给定一个整数序列,支持区间加正整数以及查询区间最大子段和。思路使用线段树记录四个信息来维护答案:\(sum_i\):区间和;\(lmax_i\):最大前缀和;\(rmax_i\):最大后缀和;\(mx_i\):最大子段和。信息合并时分类讨论:\(lmax=\max(lmax_{ls},sum_{ls}+l
- 2024-12-24Diary - 2024.12.24
今天摆完了有点。待补:Solution-LuoguP11398众数Solution-LuoguP11401[Code+#8初赛]普勒亚Solution-Codeforces2041KTrophicBalanceSpeciesLuoguP11408[RMI2020]树咖/Arboras代码想想LuoguP11417[Sloi2024]D1T1精卫的线性(?),而且还有代码整理一
- 2024-12-24Solution - Luogu P11405 [RMI 2020] 秘鲁 / Peru
考虑到区间可能会有交,这个时候肯定会贪心的让这部分的权值为偏大的一部分。于是考虑把条件转化为由若干个长度\(\lek\)的不交区间覆盖。那么如果对应的区间是\([l,r]\),那么贪心的,这个区间选出来的权值就会是\(\max\limits_{i=l}^rs_i\)。那么就可以设出dp。定义\(f
- 2024-12-23Solution - Luogu P11394 [JOI Open 2019] ウイルス実験
首先可以根据字符串\(D\),\(\mathcal{O}(2^c|D|)\)(\(c\)为方向数\(4\))求出上下左右分别是否被感染时对应的最长连续段长度,用于后面的check。考虑到答案要求的最小值,于是可以考虑思考什么样的点不会作为最后的最小值的起始点。考虑到如果最先感染了点\(u\),且最终感染了点\(v
- 2024-12-22Diary - 2024.12.22
吸取之前教训,今天早点写日记。看起来我还缺:Solution-LuoguP11394[JOIOpen2019]ウイルス実験Solution-LuoguP11398众数Solution-LuoguP11401[Code+#8初赛]普勒亚Solution-LuoguP11402[Code+#8初赛]图Solution-LuoguP11405[RMI2020]秘鲁/Per
- 2024-12-212.图论
省选图论专题开题顺序:\(GAJDCFO\)\(A\)luoguP4151[WC2011]最大XOR和路径题解\(B\)CF19EFairy\(C\)CF412DGivingAwards建出反图后拓扑排序无法处理欠钱关系中存在环的情况,但可以借鉴其思路。仍考虑自下而上叫人,在叫完所有子节点后再加入答案即可。点击查
- 2024-12-20Solution - Luogu P11393 [JOI Open 2019] 送金
下标默认是在\(\bmod\n\)意义下的。考虑到如果\(a_i>b_i\)那么不可能只操作\(a_{i-1}\)使得\(a_i\)合法,因为这只增不减。于是这说明当\(a_i>b_i\)时一定会操作\(a_i\)使得\(a_i\leb_i\)。但是同时如果\(b_i-a_i\)太大了,\(a_{i-1}\)就不一定能操作
- 2024-12-17LUOGU_P1045(高精度+快速幂取模)
高精度乘法+快速幂取模直接搞定,不多赘述,详见注释! #include<iostream>#include<cstdio>#include<cmath>#include<cstring>usingnamespacestd;inta[501],p,k[501],c[501],d;//底数a[],指数p,模10^500,余k[]voidtimes(intx){//高精度乘法 memset(c,0,sizeof(c));
- 2024-12-12luogu P10062 [SNOI2024] 拉丁方
首先需要一些前置知识:每个点都恰好有\(k\)个度数的二分图称为\(k\)正则二分图,\(k\)正则二分图一定有完美匹配。Proof考虑Hall定理,不存在完美匹配当且仅当存在一个左部点的集合$S$使得$|tr(S)|<|S|$,这意味着$tr(S)$的度数之和要大于等于$|S|$的度数之和,但是
- 2024-12-10Luogu P9606 CERC2019 ABB 题解 [ 绿 ] [ KMP ] [ 字符串哈希 ]
ABB:KMP的做法非常巧妙。哈希思路显然正着做一遍哈希,倒着做一遍哈希,然后枚举回文中心即可。时间复杂度\(O(n)\)。代码#include<bits/stdc++.h>#definefifirst#definesesecond#definelc(p<<1)#definerc((p<<1)|1)usingnamespacestd;typedeflonglongll;
- 2024-12-07Luogu EI 的第六分块 // KTT 学习记录
P5693EI的第六分块题目描述给定一个整数序列,支持区间加正整数以及查询区间最大子段和。思路使用线段树记录四个信息来维护答案:\(sum_i\):区间和;\(lmax_i\):最大前缀和;\(rmax_i\):最大后缀和;\(mx_i\):最大子段和。合并时我们分类讨论:\(lmax=\max(lmax_{ls},sum_{ls}+l
- 2024-12-05[NOIP2024]遗失的赋值
https://www.luogu.com.cn/problem/P11362参考:https://www.luogu.com/article/9pagx8eg由于\(v>1\),所以对于(2,3)或(3,4)的关系,必定能够确保至少存在一种赋值(只要\(x_2\neqx_3\)即可),无需考虑。只需考虑关系链\(3\sim6\)。因为\(x_3=a_3\),从这里出发一直推导,可以发
- 2024-11-26luogu P1455 搭配购买
01背包/*二维#include<iostream>#include<algorithm>constintN=1010;intv[N],w[N],f[N][N];usingnamespacestd;intmain(){intn,m;cin>>n>>m;for(inti=1;i<=n;i++)cin>>v[i]>>w[i];
- 2024-11-26「Luogu P2466」[SDOI2008] Sue 的小球
题目Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船。然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一个秘密武器,只要她将小船划到一个彩蛋的正下方,然后使用秘密武器便可以在瞬间收集到这个彩蛋