自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 分层图最短路

对于每条边,都向下一层连一条边权减半/为0的有向边(从上向下)表示k次决策(从上向下走一层表示用了一次操作)。再建一张虚图,表示各个集合之间的关系,将每张图连接起来,每张图都可以通过虚图转移至另一张图。分层图最短路板子题,可以发现k的范围奇小无比,直接建k+1层图跑一遍dijkstra即可。从子图进入虚图的花费为0(表示出站),从虚图进入子图的花费为进站的费用(表示进站)。在跑最短路过程中转移即可。然后跑最短路,统计答案时对每一层的终点的最短路去最小值。最后从虚层的起点跑最短路,答案就是虚层终点的最短路。

2025-08-24 22:11:18 909

原创 题解:AT_abc417_d [ABC417D] Takahashi's Expectation

具体的,先预处理出f数组,然后记录b数组的前缀和,对于每次询问,如果初始值大于1000,二分减到1000以内的次数,然后输出DP数组,否则直接输出DP数组。设计DP:fi,j​ 表示在收到第 i 件礼物前心情为 j 的最大答案。考虑倒序枚举 i ,发现j的值域仅为[1,1000],可以直接枚举。赛时写了半天离线+剪枝的做法,结果自然被卡到爆炸,只过了3个点。我们发现这题显然不能暴力直接做,考虑离线算法或预处理。时间复杂度:O(qlogn+1000n).

2025-08-07 21:25:38 142

原创 题解:P12149 【MX-X11-T3】「蓬莱人形 Round 1」科学

而一旦有一个盒子大于二分最大值的两倍,那就一定不合法。同时对于那些小于二分最大值的盒子,其实也可能会移动。我们可以将一个小的盒子移动到一个卖的盒子中,而将其他盒子的超出部分放到原先的盒子里,因为原先的盒子是不限制大小的。然后我们发现可以将这两种可能会移动的盒子存起来,然后排序,将可以最大的几个优先放入无上限的盒子。其他的盒子,记录比自己大的能买的盒子中最便宜的盒子,这个可以用优先队列维护,然后记录答案即可。我们可以二分最大值。我们发现对于那些数量大于二分最大值的盒子,一定要分出多的部分,装到其他的盒子里。

2025-08-07 21:24:23 236

原创 题解 P2371 【[国家集训队]墨墨的等式】

可以对合法答案按照对 ai​ 取模的结果分类,如 kai​+1 , kai​+2,.....kai​+ai​−1.设 fi​ 表示对 aj​ 取模结果为 kaj​+i 的最小合法解。则对 aj​ 取模为 i 的结果都能统计出来。题目本身是一个完全背包问题,但这么做复杂度太高,至少要带上 r。考虑如果一个数 x 合法,则 x+ai​ 一定合法。但可以发现转移式与最短路的转移很相似,考虑用最短路。最后统计答案(见代码),注意要减掉 l 以前的部分。可以发现我们无法确定转移顺序,下标时大时小。

2025-08-07 21:23:32 235

原创 题解:P1811 最短路

对于每一个三元组,我们可以用一个集合记录一下,在搜索过程中记录每两个点的前驱,如果构成三元组,就跳过,否则继续搜,并求出最短路。最后通过记录的前驱回溯,并输出方案。因为边权都为 1,考虑BFS。

2025-07-17 17:35:46 190

原创 题解:P10959 月之谜

设 mod 表示枚举的各个数位之和,令 val 对其取模,最后判断 sum 与 mod 是否相等即可。设系数 pos 表示当前 pos 位,sum 表示当前的和为 sum,val 表示当前当前原数的值。无法知道数位和的结果是多少?但是原数太大了怎么办?

2025-07-17 17:34:05 154

原创 题解:P12143 [蓝桥杯 2025 省 A] 好串的数目

我们可以发现长度为 1 或 2 的字符串一定是好串,而长度为 3 以上的字符串要么本身为连续非递减子串,要么由 2 个连续非递减子串拼接而成。所以我们可以提前预处理出所有连续非递减子串,记录起点与终点,最后计算答案即可。对于本身是连续非递减子串的好串,它一定在某个连续非递减子串中,可以用等差数列求出;对于由 2 个连续非递减子串拼接而成的好串,可以用乘法原理,将连续两个区间长度相乘即可求出。

2025-07-17 17:28:17 240

原创 题解:CF776D The Door Problem

最终若某个点i与i+m处于同一集合,就不可能, 否则就可能。设 i表示开(使用钥匙),则i+m表示不开(不用钥匙)。所以对于原本是开的灯,我们连接i与j和i+m与j+m;对于原本是关的灯,我们连接i与j+m和i+m与j。

2025-07-17 17:26:29 562

原创 题解:P11908 [THSPC 2023] G. 博物館

因为要将最大的k个数放到序列前k个位置,我们显然可以对序列进行以价值为第一关键字,位置为第二关键字进行排序。而进行完第一次排序后,我们可以存一下前k个数,按位置再进行一遍排序。

2025-07-17 17:23:30 199

原创 CF2064C Remove the Ends题解

考虑一组合法解的性质。不难发现,一组合法解肯定是由一段自然数加上一段负数组成的,而且肯定是从两边一直消到中间的,因为如果一个负数在一个自然数前面,它要么是还没有做出贡献时,就被后面的正数删了;要么就是把后面还没有做出贡献的正数删了。可以考虑枚举自然数段与负数段之间的分界点,计算以这里为分界点的贡献(这个点以前所有自然数的和,这个数以后所有负数的和,可用前缀和预处理),最后取一个最大值即可。如果取一个自然数,将删除以这个数结尾的前缀,如果取一个负数,将删除以这个数结尾的后缀,两者贡献均为这个数的绝对值。

2025-07-17 17:21:55 218

原创 --模拟--

模拟,顾名思义,就是题目中给出一个流程,然后你写出一份代码进行模拟,实现这个流程。它一般是比赛中的签到送分题,但是模拟一定要注意细节,千万要读懂题目中的意思!模拟通常需要一定的代码能力,它码量大,操作多且思路繁琐,需要多多练习。(因为循环清空不彻底,考场代码挂了30分.......)、模拟算法是一个非常经典的算法,是所有人学习的第一个算法。再枚举每一次出拳两人的胜负结果,统计得分,得出答案。十分小,所以我们完全可以考虑模拟。的模拟算法完全可以轻松通过。级别的,虽然是多测,但。次石头剪刀布的结果。

2025-05-06 22:23:23 638

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除