做题记录
写在前面:
感觉我有个毛病,写一段时间的题就会不自觉地减缓效率,有点摆烂(尤其晚上),写点总结吧,利用一下时间并养成好的习惯
2025/07/16
今天如几天常在楼下听 stntn 学长讲课,简单附属一下内容:
-
kruskal重构树:
挺简单的一个trick,对于一个关于树上特定边权的问题,可以先搞一遍最小生成树,排序从大到小的边权,通过并查集搞出一棵搜索树
这个搜索树性质是对于任意重构树叶子两点,原树上该两点的简单路径中边权最大值就是重构树的LCA的值
P1967 [NOIP 2013 提高组] 货车运输:
裸题,搞出重构树找LCA即可
P7834 [ONTAK2010] Peaks 加强版:
重构树向上找不超过x的LCA,在该LCA的子树上搞主席树求区间kth,码量挺大的,还没调出来(
P4768 [NOI2018] 归程:
在重构树定值LCA的子树结点上移动不需要花费,优化了时间
-
分层图最短路
挺版的,看到不好建边的时候,把后面的图拷贝一份,再将该点连向这张图,主要是让最短路好跑一些
P4568 [JLOI2011] 飞行路线
:看到免费的航线不好转移,考虑分层图,最多做10次免费飞机,把原图拷贝k次,每个点u有向下一层v的免费边,也有向这一层v的正常边,跑最短路即可
P3831 [SHOI2012] 回家的路:
网格图上只有特定点可以转向,考虑将网格变成只有横着走与只有竖着走两张图,特定点可从横向图转到竖向图/竖向图转到横向图,起点终点最短路,注意空间,所以要缩点,只存有用的点
-
2-SAT 问题
挺简单的,毕竟花时间自习过,对于各种\(0/1\)变量的共存问题,对每个必要状态连边,作tarjan找环,如果一点的两个状态在同一环上(又要存在,又要不存在),即可判断无解
P4782 【模板】2-SAT:
真的纯板子,就按照上方说法写就完了
CF1697F Too Many Constraints
每个点拆成多个bool变量,然后建边即可,重要的是要看出来要用2-SAT 解决
-
建图优化
讲了个前缀和优化建图,没听大明白,但网上好像没有讲这个的,感觉不是很重要,先搁置吧,挂个例题P6378 [PA 2010] Riddle
还有个线段树优化建图,把板子敲了,挺版的(CF786B Legacy
-
总结
题见少了,调代码跳少了,一道蓝题卡了半个下午,发现只是小错误(
2025/07/17
怎么上午就开始总结了(汗
如常上午 stntn 讲课,接着挂上听课记录吧
-
分块
这方面之前学过,不再从头讲述了,可以去看之前的分块笔记Link
-
势能分析
dottle刚讲过,就是一种分析复杂度的方法,分析完了就可以放心去写暴力了
搭配那几道分块食用
简单来说,就是把复杂度拆成两个部分,一个是原序列做完产生的复杂,一个是新加入玩意的复杂度
加起来即可
-
操作分块
这个trick有意思,先挂题:CF342E Xenia and Tree
可以发现,对于加点操作与询问操作,有两种最基础的做法,一种是直接跑遍历,查询复杂度 \(O(n)\) 修改复杂度 \(O(1)\)
第二种是预处理,加点后进行全图遍历,为每个结点赋答案值,修改复杂度 $ O(n) $ , 查询复杂度 $ O(1) $,有点根号分治的意思了
补充一下,树上任意两点的距离 \(dis_{u,v}\) 可以用公式:\(dis_{u,v}=deep_u+deep_v-2*deep_{LCA_{u,v}}\),查询复杂度是\(O(log_n)\)级
那么就可以每 $ \sqrt{n} $ 次操作后重构树上点答案值复杂为 \(O(n\sqrt{n})\),对根号操作内次的查询只让初值与根号前方的点比较复杂度\(O(n\sqrt{n} log_n)\)
总的复杂度就是\(O(nlog_n+n\sqrt{n}+n\sqrt{n}log_n)\),LCA预处理+做法1+做法2
-
根号分治,根号平衡
也是学过的玩意,挂个链接笔记吧Link
-
总结
感觉今天最重要的是复杂度的分析,当一道题的复杂度分析对了,再暴力的写法也会是是最正确的AC
2025/07/18
省流: 抄PPTing.
如常,楼下,stntn 后面忘了
-
博弈论入门&概念
简单来说,就是在两个人都不会犯错误的情况下,探索某一人是必输/必赢
-
简单&博弈
1 .Bash博弈
\(n\) 个石头,\(A,B\)轮流拿\(k \in[1.m]\) 个石头,拿到最后一块石头的是获胜者
solution:当n是m+1的倍数时,先手必败
2 .
考虑当集合不为空时先手必胜---把1拿了
3 .
题面:CF1874A Jellyfish and Game
考虑只会一直交换全局amx与全局min,稍微约束判断即可
4 .
题面:CF1860C Game on Permutation
博弈论递推,求最长上升子序列
5 .
题面:CF1749C Number Game
模拟,随着i的变大,会有一些数自己出局,A一定选最大的,B一定尽早淘汰最小的
6. \(Nim\)游戏:异或和不为时先手必胜---自己百度去
-
博弈图和状态
将每个状态视为结点,连边建图,一般是\(DAG\)(有向无环图)
状态:必胜,必败....看名字就可以了
-
SG函数
笑,上次写这个忘了保存,不然我就直接挂链接了(
当当前结点\(u\)没有后继结点(必败状态),\(SG_u=0\)
否则\(SG_u=mex( \in_{Son_u}SG_v)\)
说人话就是所有儿子\(SG\)值组成的集合里取\(mex\)
\(mex\)指集合中没有出现的最小的非负整数
起点\(S\)的\(SG\)函数值\(SG_s\)就是这个游戏的\(SG函数值\)
组合游戏的\(SG\)函数值就是所有子游戏的\(SG\)函数值的异或和
P3185 [HNOI2007] 分裂游戏
后面忘了,写珂朵莉去了(
2025/07/19
今天考试,考试总结见:一点总结(
2025/07/20~2025/07/27
放一周的假
2025/07/27~2025/08/17
中山集训,内部消息,不透露
2025/08/21
今天是贪心专题,首先看了看dottle佬的ppt
所谓贪心其实就是证明最重要
- P8082 [COCI 2011/2012 #4] KEKS
从前往后去删除,保留剩余k位中最大的一个
贪心正确性显然 - P8898 [USACO22DEC] Feeding the Cows B
可以发现每头牛吃的屮离他越远越好,那么记录最右侧的屮位置,当需要更新的时候就从该点往后找最远的位置填,由于记录的最右位置只加不减,最多遍历\(O(n)\)次,可以通过该题,正确性显然 - P6243 [USACO06OPEN] The Milk Queue G
this
贪心式子可以用数学归纳法得出/证明 - P2255 [USACO14JAN] Recording the Moolympics S
考虑如果只有一个录音机时怎么做:
将所有活动结束时间排序,然后从初始结点开始能选就选
两个录音机怎么做?
将活动结束时间进行排序,然后遍历每个,用空闲的那个能选就选 - P2945 [USACO09MAR] Sand Castle S
考虑将a与b分别从高到低排序,然后直接每对算贡献 - P8896 「DPOI-1」道路规划
考虑拓扑,竞赛图的DAG,问题转换成在序列上把其变成在[L,R]之间的数 - CF525D Arthur and Walls
贪心染色,dfs一个∗点要被替换,当且仅当有一个包含它的2×2的矩阵中除它之外全是.点,向八个方向同时扩展 - CF3D Least Cost Bracket Sequence
先把字符串中的问号都换成右括号,如果左括号比右括号多,则在前面所有原来问号上找左右差值最小的换掉 - CF1208G Polygons
考虑什么时候加入 \(k\) 边形是最优的?
eg:如果我要加入6边形,那么我一定会先加入3边形,因为三边型的顶点全部被六边形覆盖着
可以推广:如果我要加入 \(k\) 边形,那么 \(k\) 边形前所有与\(k\)有公因数的 \(p\) 边形都会与 \(k\) 边形有相同的交点
所有每次添加 \(k\) 边形时会增加在 \(k\) 前面与 \(k\) 互质的数个数个新点
也就是\(\phi(k)\) !
然后就很显然了,欧拉函数是积性函数,当\(gcd(a,b)=1\) 时 \(\phi(a*b)=\phi(a)*\phi(b)\),直接用筛法将质数与欧拉数一起筛出即可
最后将 3~n 的所有欧拉排序,选 k 个最小的,加上初始三角形的2即为答案
2025/08/22
贪官模拟器,今天接着贪
- CF1085E Vasya and Templates
考虑分讨,但是我没大懂,先跳过吧 - P4765 [CERC2014] The Imp
看到物品数量为 \(10^5\) 但最多只会有 \(k<=10\) 个物品被变成灰,考虑dp
设 \(dp_{i,j}\) 表示买到前 \(i\) 个物品时用了 \(j\) 次魔法的最大收益,很容易推出转移方程:
\(dp_{i,0}=max(dp_{i-1,0} , a[i].val-a[i].cost)\) 先手表示选与不选
\(dp_{i,j}=max(dp_{i-1,j} , min(dp_{i-1,j-1}-a[i].cost,a[i].val-a[i].cost))\)
max表示我的最优状态,min表示恶魔干扰的最劣状态
转移顺序?价值从大到小!
考虑如果从小到大去选,即使不使用魔法你也无法最大化收益,所以直接从大到小去选! - CF1685C Bring Balance
考虑一个结论:任何括号数相同的括号序列在翻转两次以内一定会完成匹配
证明:
将左括号看成+1,右括号看成-1,就发现原先的括号序列变成了一条折线图,当折线上到x轴以下(小于零)才是不正确的
令\(a[i]\)为折线的前缀和数组,记录x为最大值,翻转 \([1,x],[x,n*2]\) 一定可以获得合法序列
考虑怎么只翻转一次:
令 l,r 是最前和最后一个前缀和小于 0 的位置,那么最终翻转的区间 \([L,R]\) 一定要满足 \(L≤l,R>r\) 贪心地选择 \(L≤l,R>r\) 且\(a_{L-1},a_R\)最大的 \([L,R]\) 检验即可 - CF436E Cardboard Box
记录 \(i\) 关拿一颗星的代价为 \(a_i\) , 拿两颗星的代价为 \(b_i\)
考虑如何从有 \(i\) 颗星星推到第 \(i+1\) 颗星星,有四种情况:
- 新选一个获取一颗星星的关 \(i\) ,代价为 \(a_i\)
- 将一个原来只有一颗星的关卡`\(i\) 变成两颗星 , 代价为 \(b_i-a_i\)
- 将一个原来只有一颗星的关卡 \(i\) 反悔一颗星 , 从新的关卡 \(j\) 拿两颗星 , 代价为 \(b_j-a_i\)
- 将一个原来有两颗星的关卡 \(i\) 反悔成只有一颗星 , 从新的关卡 \(j\) 拿两颗星 , 代价为 \((a_i-b_i)+b_j\)
那么我们维护五个优先队列,每次取队首更新即可
2025/08/23
今天上午考试,第二道题懂了,没切出来
- A. 剪切字符串 (lcp)
诈骗题,考虑答案上界,其实第一串选 \(n-2\),第二串选\(1\),第三串选\(1\)
\(lcp(a,b)+lcp(a,c)+lcp(b,c)\)最长也只能是\(3\)
当第二串与第一串有一个不同,那么答案上界就变成\(1\)了,当第一串第二串第三串都有一个不同,答案上界就是0了,分讨即可 - B. 深度优先搜索树(dfs)
考虑什么时候可以有答案:当返祖边出现时,答案为\(2^k\),\(k\)是返祖边的数量 - C. 巡逻网络(net)
状压||随机化,还没调出来,因为最多只选四个点嘛 - D. 彩色括号(witch)
这个是真不会 - 杂题P4679[ZJOI2011] 道馆之战
恶心!调了3hours了,调不出来,整体上是树剖+线段树,不过要有维护信息有点多而已()
2025/08/24
晚上ABC,和明天混在一起总结
2025/08/25
贪贪贪,嘻嘻嘻
- P1650 田忌赛马
考虑跑两遍,第一遍统计可以获胜的最大值,第二遍找平局
将齐王和田忌的🐎按照从小到大排序,从小到大枚举田忌的🐎,从大到小枚举齐王的🐎,当田忌的🐎比齐王的🐎快,贪心选择 - P5749 [IOI 2019] 排列鞋子
考虑每次移动都是从右边最近的一个过来,那么开n给vector,存每种鞋子的位置,从右往左,树状数组跳过中间的鞋子 - P4823 [TJOI2013] 拯救小矮人
按照逃生高度排序,贪心dp - P6927 [ICPC 2016 WF] Swap Space
考虑分成两个数组,第一个存 \(a<=b\) 的 第二个存 \(a>b\) 的,分别按a从小到大,b从大到小排序,最后模拟即可
贪心正确性显然 - AT_agc023_f [AGC023F] 01 on Tree
考虑贪心,对于所有权值为0的点,当他的父节点全部拍下来了,那么把它马上拍下来就是最优的
所以可以考虑将子节点和父节点合并,考虑如何维护合并后结点的权值?
现在我有两个个结点a,b,那么当a放在前面时会产生\(a_{cnt1}*b_{cnt0}\)对逆序对,\(cnt_{1/0}\)表示该节点下方权值为\(1/0\)的结点个数,当b放在前面时会产生\(b_{cnt1}*a_{cnt0}\)对逆序对
所以当a比b更优时,即产生的逆序对最少,有\(a_{cnt1}*b_{cnt0}<a_{cnt0}*b_{cnt1}\),即以此优先队列排序即可
code: - 好消息,调出了道馆之战!
2025/08/26
最后的一天贪心了(
- P4409 [ZJOI2006] 皇帝的烦恼
每个勋章最多给\(n/2\)个将军,那么可以得出式子\(ans=\dfrac{\sum_{i=1}^{n}a_i}{\lfloor\frac{n}{2}\rfloor}\)
一共需要的勋章数/每种勋章最多可以给多少人 - P2123 皇后游戏
考虑怎么排律是最优的
- AT_arc076_b [ABC065D] Built?
将x与y分别排序,给相邻两项分别连边,最后跑最小生成树即可,正确性显然
2025/08/27
晚上神秘CF,明天补吧
2025/08/28
进入了构造板块,首先观摩了 \(dottle\) 佬的ppt,知道了一个神秘构造称呼:人类智慧
- CF1512D Corrupted Array
考虑什么时候可以由a变成b
记录一个最大值maxx,一个次大值se_max
要么是a中所有数加起来等于se_max,maxx是随机数
要么其他数加起来等于maxx,用maxx-sum和等于的那个数是随机数,分讨即可 - AT_abc185_f [ABC185F] Range Xor Query
为什么在构造题单里???线段树裸题哇( - P5595 【XR-4】歌唱比赛
首先考虑什么时候无解:形如ZZZXY,就是Z只能出现在末尾一段连续段中
然后做完了,X:0 9 Y:9 0 Z: 1 1 - P3514 [POI 2011] LIZ-Lollipop
考虑一个结论:当X可以得到,那么X-2也可以得到
证明:
- 当x两端都为1时,同时删去两边,满足x-2
- 当x一端为二时,删去该端,满足x-2
那么很显然了,通过找到最大奇数与最大偶数,然后\(1e6\)的范围L,R桶处理即可
- P3640 [APIO2013] 出题人
造数据,不嘻嘻,考虑不同最短路算法的卡掉,分析算法结构
2025/08/29
构构造造
- AT_agc029_c [AGC029C] Lexicographic constraints
考虑二分答案,如何check?
模拟进位即可,注意从大到小的答案为一的特判即可 - AT_agc035_c [AGC035C] Skolem XOR Tree
分奇偶讨论,考虑两种路径
- x->x+1->1->x' (x%2==0)
- x->x-1->1->x' (x%2==1)
2025/08/30
考试,放假
2025/08/31
常规收假
2025/09/01
补了MZOJ的考试题与ABC的题,abc421f是唐题,链表思想,记录next数组即可
2025/09/02
考虑杂题,四道题一下午只做出来两道(
- P3423 [POI 2005] BAN-Bank Notes
完蛋了,先没有看出来背包,然后看出来了不会写,花了0.5h+重新学习01背包(
首先多重背包求最小方案,采用二进制优化(其实就是拆位)
然后考虑如何输出方案,可以发现,dp时记录一下选择,dfs就可以了 - P4563 [JXOI2018] 守卫
你被骗了,不要像我一样去搞斜率与凸包,\(O(n^3)\) 滚出(
考虑每个区间 \([L,R]\) 一定会在 \(R\) 位置放一个人,那么我们以 \(R\) 为基础(一定要选), \(O(n)\) 枚举 \(L\)
那么枚举的复杂度为 \(O(n^2)\) , 考虑区间dp合出答案
对于每个枚举的 \(R\) ,在枚举它的 \(L\) 时记录一个可以看到的最左边的端点 \(P\) 那么 \(P\) 之前的就一定是之前访问过的区间,
那么记区间 \([a,b]\) 的最小放人值为\(dp_{a,b}\) 则\(dp_{a,a}=1\)
\(dp_{L,R}=dp_{L,P}+1 , dp_{P,R}=1\)
最后异或上所有的 \(dp\) 值即为答案
2025/09/04
同上面02,四,二,懂?
考虑杂题,四道题一下午只做出来一道(
- P5504 [JSOI2011] 柠檬
斜率优化版子,李超树轮椅,嘻嘻嘻 - P3209 [HNOI2010] 平面图判定
考虑每一条边要么在曼哈顿回路形成的⚪内,要么在⚪外,2-Sat做完了,考虑平面图的欧拉公式: \(v+p-e=2\)
2025/09/05
考虑考试(炸
2025/09/06
考虑vp abc,abc422e 随机化有点意思,时间复杂度之王(
2025/09/09
考虑vp cf 1048 Div2
- CF2139A Maple and Multiplication
非常简单,考虑每次变化三种情况:
- a==b (0次)
- gcd(a,b)a||gcd(a,b)b (1次)
- gcd(a,b)==1 (2次)
- CF2139B Cake Collection
非常煎蛋,你考虑贪心去取,排序后按最后一秒从大到小分配求和即可 - CF2138A Cake Assignment
肥肠煎蛋,你观察到变换的次数不超过120次,且每次变换的上一步是固定的,所以你倒着去搜一遍即可 - CF2138B Antiamuny Wants to Learn Swap
你注意到值域范围很小,然后转化一下题意,你就是去求区间有没有逆序三元组,线段覆盖区间查最小值,三颗线段树维护最近前驱即可 - 不会了(
2025/09/12
考虑vp cf 1049 Div2
- CF2140A Shift Sort
考虑位移的实质:交换两个数,那么两个指针前后扫,贪心匹配即可 - CF2140B Another Divisibility Problem
注意到每次拼接的x都可以是原数的二倍,然后你把原数乘二。输出来就行了) - CF2140C Ultimate Value
不难发现,Bob总会在第二轮选择结束游戏(Alice可以一直还原Bob的行动,然后只会增加权值)
那么Alice肯定会在第一轮完成最优解
- +_min 换 -_max
- +_l 换 +_r
判断即可
- CF2140D A Cruel Segment's Thesis
访问 题解 谢谢喵)
2025/09/13
考虑上午核桃OJ考试下午四道杂题,下午忙于补做题记录只写了一道杂题(
- P3177 [HAOI2015] 树上染色
比较裸的树形dp,转移方程为
\(dp[u][j+p]= \max\limits_{v\in Son_u}^{j \le Siz_u p\le Siz_v}dp[u][j]+dp[v][p]+val*w\)
其中 dp[u][m] 表示以u为根的字树里选m个点染色对答案的贡献,从下往上dfs时处理合并,枚举j,p算贡献
其中w为连边的权值,val 为经过的次数 复杂度为\(O(n^2)\)
2025/09/16
考虑写CF2144喵
- CF2144A Cut the Array
n <100 直接枚举即可 - CF2144B Maximum Cost Permutation
贪心从前往后和从后往前找即可 - CF2144C Non-Descending Arrays
访问 题解 谢谢喵
2025/09/26
前面几天都在vp喵,补题不想记喵
- P2709 小B的询问
莫队版子喵,奇奇偶偶排排序序。 - P12621 [ICPC 2025 NAC] Circle of Leaf
考虑树形dp,\(dp_{u,0/1}\) 表示以 u 为根的子树中方案,从下往上推 - P4198 楼房重建
使用线段树维护一段最长上升的斜率, \(O( \log n)\) 来 \(push\) 下放
2025/10/03
考虑今天的考试)
- A. 大数定理(largenumber)
所有可能的两个数一定是相距 \((n-1)/2\) 才能只删这两个数达到序列为1的,单调栈模拟即可
2025/10/04
记一下今天vp的cf
- A. Increase or Smash
你发现n很小,于是可以while来砸碎序列中除零以外的最小值
当序列中全部为0,结束并输出 - B. Catching the Krug
考虑取横纵坐标的差的绝对值,因为B可以斜着走,所以A左右横跳是没有用的.
A只能往相反方向逃窜,加上A反与B距离判断max即可 - C. Triple Removal
由于只有0/1所以数量要么是三元组个数+1,要么是三元组的个数
前缀和判断是否有00或者11即可 - D. Division Versus Addition
访问题解谢谢喵) - P5278 算术天才⑨与等差数列
考虑形成等差序列的三个限制条件,设判断区间l,r是否可以形成公差为k的等差序列
- \([l,r].max-[l,r].min=(r-l)*k\)
- \([l,r]所有相邻差值的gcd=k\)
- \([l,r]没有相同的数\)
一二条维护区间最大最小值,区间差值gcd即可
2025/10/10
记一下今天的杂题)今天的题比较好
- P2964 [USACO09NOV] A Coin Game S
看到这题,第一眼就可以搜索dp定义
\(dp[i][j]\)表示取到第i个限制为j个时的最优解
\(dp[i][j]= \max_{x \in_{}[1,j]}(\sum_{a_i}-dp[i+x][x*2] )\)
就这样去搜,开\(O_2\)就可以A了,
但是你发现记搜的复杂度实际上有\(O(n^3)\)
所以正解不是直接搜
你发现其实dp[i][j]与dp[i][j-1]状态数只有两项差距,所以可以直接特判 - P1758 [NOI2009] 管道取珠
ddddpppp
考虑组合意义(
你发现一下:
我们要求 \(\sum a_i^2\)
我们独立地进行两次游戏,每次游戏都用相同的初始管道状态(相同的 s1 和 s2)
那么两场游戏都产生第i种序列的方案数?
第一次有\(a_i\)种方案产生序列\(i\)
第二次有\(a_i\)种方案产生序列\(i\)
两次都产生序列\(a_i\)的方案数就是\(a_i \times a_i=a_i^2\)
所以实际上跑一边计数dp即可
因为两个游戏完全对称,并且要求输出序列相同,实际上我们可以用一个四维 DP 来解:
定义 dp[i][j][x][y] 表示:
第一个游戏已取出了 i 个上管道球和 j 个下管道球(即剩余 n-i 上球, m-j 下球)
第二个游戏已取出了 x 个上管道球和 y 个下管道球(即剩余 n-x 上球, m-y 下球)
此时两个游戏已产生的输出序列完全相同(即之前取出的球颜色序列一样)
的方案数。
最终答案: dp[n][m][n][m](两个游戏都取完,输出序列相同)
然后你发现i+j=x+y只有取得球数量相等,序列才可能相同,所以可以优化掉一维
然后你可以发现f[i][j][k]只与上一个状态有关,考虑作滚动即可
- P2943 [USACO09MAR] Cleaning Up G
维护pre颜色段dp即可
2025/10/11
记一下今天的考试题)
- A. 瘟疫(plague)
你发现一下,n,m的范围只有两千,那么你bfs遍历一遍图,把连通块标上vis,记下大小
然后再扫一遍遍历四个编号,取min即可 - B. 颤骨图腾(beacon)
你发现你记录一下pre和net,然后每次就可以 \(n/k\) 遍历
然后对每个k记录一下,做完了?
$ \frac{1}{n}+\frac{2}{n}+\frac{3}{n}+\cdots+\frac{n-2}{n}+\frac{n-1}{n}+\frac{n}{n} $
时间很熟悉啊,你就是调和级数喵!
原式$ \approx n \log n $] - C. 死灵法师(wizard)
神秘东西,不会( - D. 亡灵骑士(rider)
你考虑背包+剪枝
首先直接作 \(o(r^2)\) 的背包一定是不行的你肯定要优化
还有剪枝,考虑什么时候卡的最慢:
其中 \(x=sqrt(n)\)
2025/10/12
记一下昨天的abc
- C题
读了题,k<=10
状压一下,枚举做完了 - D题
k<=10
爆搜遍历一遍,然后记忆化一下,做完了 - E题
不会( - F题
折半搜索,直接枚举
考虑长度为n的不相邻序列只与长度为(n-1),(n-2)的不相邻序列有关,斐波拉契数列,其中\(fib_{30}\)大概是832040,然后记一下有没有选第一个,选作后一个,然后二分查一下,拼一拼就做完了)
2025/10/14
记一下今天的 cf1057 的vp
- CF2153A Circle of Apple Trees
签到题,派一遍序然后跑一遍就做完了 - CF2153B Bitwise Reversion
被骗了(
你考虑一下:
$ \because $
- $ a \And b = x$
- $ a \And c = y$
- $ b \And c = z$
$ \therefore $
好了,三个叠一起,判断一下是否相等即可(
- CF2153C Symmetrical Polygons
考虑首先一定要把成对的取完,然后成对的和加上一个数大于另一个数,二分判断即可 - CF2153D Not Alone
隔位dp,你发现要么两个相邻,要么三个相邻,因为所有数都可以被二和三完全分解,所以dp时只需要考虑前三位,关于断环成链,只需要右移三次dp判断即可
2025/10/17
今天补了CF1058vp
记一下一道不错的图论:
- AT_joisc2016_j 危険なスケート
你考虑到相邻格子最多走两步,滑行到终点处只需要一步,建边跑最短路!
2025/10/18
敲了洛谷下午的SCP-S组模拟赛
2025/10/19
vp了abc428,记录一下
- A - Grandma's Footsteps
模拟即可 - B - Most Frequent Substrings
string 排序即可 - C - Brackets Stack Query
括号匹配,考虑维护折线,满足值为0且前方没有负数位置才可判断Yes - D - 183184
你发现你可以把新加x后组成的数表示为 \(c\times 10^i+x\)
用上界开根号减去下界即可,枚举这个 \(i\) 并且累加答案即可 - Farthest Vertex
发现所有取值只会在直径的两端之一,两遍 dfs 找到编号最大直径端点,搜出直径上的所有点并记录答案
再往下搜出答案处理即可
2025/10/20
vp了CF1060
完成了斜率优化的施工:Link