自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 错排公式总结

和前面对的那个数交换,即可全部错排。个数错排(也就是说全部错排)的方案数。个中的任意一个数交换即可。个数,全部错排:我们只需要把。

2024-05-23 11:53:41 956

原创 欧拉函数以及应用大全(通俗讲解)

前言:下面我会详细介绍欧拉函数和应用,例题有难有易,我也会尽量说的清楚。例题难度我大概给一个评级,在 111 到 777 之间。除特别标注的地方外,其余均为原创!码字不易,欢迎留赞!介绍欧拉函数: φ(n)\varphi(n)φ(n) 表示在 [1,n][1, n][1,n] 之间与 nnn 互质的数,xxx 与 nnn 互质指的是 gcd⁡(x,n)=1\gcd(x,n)=1gcd(x,n)=1。欧拉定理: 若 gcd⁡(a,m)=1\gcd(a,m) = 1gcd(a,m)=1,则 aφ(m

2024-05-22 21:47:23 2298

原创 二分答案 经验

以后当看到题目中有求平均数、中位数等等,以及最大值最小,最小值最大,不要再想什么 dp 了,试试二分答案!

2024-07-16 09:55:41 195

原创 RMQ 部分代码

【代码】RMQ 部分代码。

2024-06-13 10:25:22 452

原创 2024年,计算机相关专业还值得选择吗?

现在的科技飞速发展,现在才学计算机太晚了,是几乎赶不上的。或许,等你学的很棒的时候,已经有机器人来帮人们写代码了。我的建议是:你可以把学计算机当作兴趣,但是最好不要主修。

2024-06-13 10:21:49 275

原创 火车头模板(供参考)

【代码】火车头模板(供参考)

2024-06-12 10:54:38 385

原创 线段树(附详细解释)

【代码】线段树(附详细解释)

2024-06-12 10:53:08 383

原创 CF1279B 的题解

如果在看的各位还不了解前缀和,建议可以看看 P1115 了。的时间复杂度直接暴力肯定不行,那么有没有其他的办法呢?相信很多人都了解了前缀和,现在我们来分析题目。,如果发现和在加上当前的这个数之前并没有大于。我们用前缀和思想,可以将时间复杂度优化到。暴力是不行的,那么我们就必须用到前缀和!项和,可以把它理解为数学上的数列的前。表示当前循坏到的得房,再用一个变量。,而现在满足要求,那么就加上这个数。前缀和是指某序列的前。其余的细节请看代码。

2024-06-11 07:57:59 1171

原创 CF244A的题解

前言:这题很水,只能评红。个人,其次再处理其他还没被用过的橙子,就这么简单~~,注意需要加头文件,其实只需要先处理有要求的。个橙子(瓣),请输出任意一种可行的方案。个人,每个人都能得到。

2024-06-11 07:57:17 477

原创 解决计数类问题的一些方式

一道还不错的题目:洛谷 P1806 跑步。

2024-06-09 20:29:48 315

原创 洛谷 P3509 的题解

根据题目,我们可以想出,用单调队列 + 快速幂就可以解决此问题。去存答案,每次移动用快速幂更新即可。其他就没什么了,具体请参见代码。个点移动到离这个点距离第。单调队列显然用于初始化。

2024-06-09 20:26:29 964

原创 CF821A 的题解

遍历元素,每次循环再遍历同行同列的元素,判断加起来等不等于这个数。我第一次看到这题好像不是那么简单,不过一看到数据范围心里乐开了花。代码很简短,是比较容易理解的。首先是读入实验室网格,然后。天哪,这题就是个模拟题!一句话:暴力出奇迹!

2024-06-06 11:21:34 335

原创 CF472D 的题解

一眼看上去,就是个 LCA,而本蒟蒻不太会 LCA,只好用了 prim 算法。,说明也无效,直接输出 NO,后面用 prim 进行处理即可。当然不能直接套模板,而需要在模板上进行一些修改,具体见代码吧。首先读入,边读入边判断是否满足要求。,说明无效,直接输出 NO,当然,如果。还算是比较清楚,贴个题面吧。

2024-06-06 11:20:45 456

原创 B3706 的题解

出题人题解,本题为 2023 年 2 月语言月赛 B 题。

2024-06-05 15:05:24 2032

原创 洛谷 P7158 的题解

比较有意思的一题。

2024-06-04 10:42:12 475

原创 洛谷 P9086 的题解

一道很好的思维题。

2024-06-04 10:41:37 329

原创 洛谷 P1853 的题解

现在告诉你总资产以及债券的种类数,要你求。这题只是在完全背包上套了个皮,在外面模拟每一年即可。

2024-06-03 09:23:55 505

原创 洛谷 P2364 胖男孩的题解

一开始我就差点忘了这个,也提醒一下你们,注意上面的代码求的是。个序列的最长公共子序列是十分简单的,即设。,在 dp 过程中记录答案,一切都好办了。个序列的最长公共子序列(LCS)问题来了,怎样输出最长公共子序列?位字符串与第二个字符串前。位字符串的 LCS。但是本题要求输出的是。

2024-06-03 09:23:13 1262

原创 洛谷 P3133 [USACO16JAN]Radio Contact G 的题解

我总结出橙黄的 dp 基本上都是问啥设啥。这题也不例外。我们可以设dpijdp_{i,j}dpij​表示 FJ 走到路径的第iii个点,Bessie 走到路径的第jjj个点时候最少消耗的能量。好,就是这样。请读者们别急,让我们继续。

2024-05-31 15:43:30 949

原创 洛谷 P7266 [BalticOI 2000] Honeycomb Problem 的题解

有点烦人的是输入,但是找一下规律其实也没那么难。行(列数递减),状态转移方程跟上面的没啥两样,建议自己想,实在想不出来看。我们用贪心,如果这一行要换值,那么就把值换成最大的。转移方程主要分成两种情况(为了方便,数组就不用。列没交换/交换数字的最大权值和。然后我们来讨论一下状态转移方程。最适合,于是选择暴力 dp。我们发现蜂窝图的行和列都是。

2024-05-31 15:41:00 911

原创 洛谷 P8614 [蓝桥杯 2014 省 A] 波动数列 的题解

关于取模的转移方程,我不细讲了,就看 RoMantic_Queue 大佬的吧。觉得他讲的详细些。在一些数学推导(其实这题也是个数学题)后,得到转移方程。

2024-05-30 09:26:04 1243 2

原创 洛谷 P8667 [蓝桥杯 2018 省 B] 递增三元组 的题解

别看他这上面有 dp 的标签,其实不用 dp 也可以迅速的做完。由于题目中有小于号,我们可以把这里看成突破口。的数据,但是我打了一下,怎么是。

2024-05-30 09:25:04 628

原创 洛谷 P8725 [蓝桥杯 2020 省 AB3] 画中漂流 的题解

然后判断一下是否还活着即可。考虑使用时空复杂度为。

2024-05-30 09:24:18 879

原创 洛谷 P9227 异或积 的题解

为什么感觉大家的题解代码都那么复杂?首先,我们可以猜测这就是找规律题,因为我们不可能在。其中进行一次操作有些技巧,具体见代码。均为偶数,其他都必须进行一次操作。是奇数的性质:除第一次外其他都是。为偶数时,答案将会在。我们可以发现,除非是。同样,我们也可以验证。

2024-05-29 09:49:40 2107

原创 CF1154E Two Teams 的题解

开两个优先队列,一个记录现在队里面的人,一个记录被挑选出来的人。这个人要有两个参数,一个是能力值,一个是编号。我们可以用结构体轻松解决。然后开个双向链表(其实可以用数组维护),维护每个数的前驱后继,在模拟过程中直接运用就行了。我们得想办法优化这一模拟过程。于是,我想到了优先队列。

2024-05-29 09:49:08 279

原创 CF812C Sagheer and Nubian Market 的题解

二分购买总件数,然后每次计算一下值,用数组排个序,再累加一下判断是否满足要求就行了。当然模拟可以,就是慢了点。代码很清晰,看一下吧。

2024-05-29 09:48:20 245

原创 洛谷 P9435 『XYGOI round1』三个数 的题解

这题我赛场上只想到了。

2024-05-28 10:09:25 480

原创 洛谷 P2031 脑力达人之分割字串 的题解

— 它是用来判断两个字符串。有了这个,问题不就解决了吗?记录个数(最终答案),

2024-05-28 10:08:29 432

原创 UVA1400 “Ray, Pass me the dishes!“ 的题解

首先你可能会想到 RMQ,但是由于是动态的,而不是像 P1115 这题静态的,所以立刻放弃这种算法。同时,我们还需要一个用来更新线段树的最大子段和(其实就是参数)的函数。到了这里,就需要一点点思维难度了。ok,分析就到这了,如果有简洁的非线段树做法(作者很期待哦)欢迎私信我哦。知道了这个,单点修改应该就没问题了,主要问题就在于。整体来看,我的代码应该是比较短、比较快的了。普通的线段树大家想必都会,不会的萌新先做做。那么我们就需要功能强大的利器——线段树了。首先,普通线段树模板里的。

2024-05-28 10:07:57 369

原创 洛谷 P7941 「Wdcfr-1」Magical Expression 的题解

其中这题已经给了后缀,所以第一步可以省略。显然是编译原理题了。又可以发现其中隐藏的贪心:凑成。给你一段合法后缀表达式,包括。

2024-05-28 10:06:32 385

原创 洛谷 P6599 「EZEC-2」异或 的题解

的一半左右,效果是最佳的。如果你听不懂,可以看看题目下面的样例解析,把它给的数以二进制从上到下排列,看看每一位。暴力肯定不行,那么我们考虑优化。但是似乎公式优化也不行啊 qwq。现在还有一个问题:二进制最多一共有多少位?,那么对于每一位(二进制),我们得尽量保持出现的。具体大佬们就参照一下别的题解吧,我不细讲了。的算法,于是我们尝试从中间找找规律吧。的个数在总共数的个数(也就是。的数据范围,我们就需要一个。为止,每一次累计答案即可。因此,我们可以定义一个。

2024-05-27 13:11:02 807

原创 洛谷 P8488 「Wdoi-(-1)」恋弹者们的黑集市 的题解

个面(也就是与上方那个面相邻的面),依次模拟即可。即使你是小学生,只要空间想象还行,是完全可以模拟出来的(但我不保证你 dp 能写出来)qwq。画一个立方体,由于我们知道上方和前方,那么每次确定上方的一个面(共。为了让大家更好的理解代码和思路,我的有些数组用了比较具体的英文,而且都有中文解释。显然,当确定了一个骰子的两个面时,就可以确定这个骰子,因此我们可以将暴力 dp 降维。dp 的转移方程和含义大佬们都讲得很清楚了,我不细讲。数组确定了下面,同理,前面确定了后面。数组,于是,由上面和前面通过。

2024-05-27 13:10:19 810

原创 洛谷 P8775 [蓝桥杯 2022 省 A] 青蛙过河 的题解

看到这题,你或许会想到二分。这是可以的,但是有一种代码更简短的方式——双指针。我们可以发现一个规律:如果设青蛙的跳跃能力为。,那么后面就没有办法再跳到上面了。,因为青蛙每次跳到这都得耗费。,都必须满足区间和大于等于。,那么必须满足每个区间。

2024-05-27 13:08:17 932

原创 洛谷 B3667 求区间所有后缀最大值的位置 的题解

但是好多大佬直接用 deque 秒杀了这题,但是其实可以有更优的方法,于是。分别维护这个单调队列的头和尾。每次读入的循环里保持。由数据范围和大概的题意不难知道这题用的是单调队列。的间距,按照题意模拟即可。当一次循环开始我们要求左端点时,,左端点就会是负数,不满足题意。第一个 while 循环完后。

2024-05-27 13:07:23 756

原创 洛谷 P9473 [yLOI2022] 西施江南 的题解

数组(bool)来记录现在分解的这个数之前是否用过相同的质因数,如果相同,直接 break 即可。我们过了这题,可是美中不足的是,用时和内存都太大了,我们可以怎么优化呢?好了,题解就到这了,如果有更好的此类方法的优化,欢迎私信作者!的情况,因为不管怎样,这两个数一定满足条件,输出。这个暴力应该已经做到极致了,那么我们考虑其他做法。我们发现,如果换一个角度思考,分解质因数,开一个。其中还有一些小优化我就不说了,应该影响不大。次的初始化,显然会消耗掉巨大的时间!我们可以发现,时间减了有。的最大下标,后面直接。

2024-05-26 19:51:38 231

原创 P9519 pay 的题解

虽然考试时候代码过了,但是算法有可能不对,只是想分享一下我的思路。可以发现这题要求的是区间的修改,而且可以划分成加两个等差数列,那么我们很容易想到用。

2024-05-26 19:39:44 194

原创 洛谷 P9583 涂色 的题解

的数据范围很小,完全够开一个桶,考虑从这里开始突破。次操作,每一次涂一整行或一整列。最后求出涂色层数不被。但是光是这样是不行的,因为统计答案需要。所以,在这种情况下,应该取。实际上这题的代码是非常简短的。的时候,应该特判,不管怎样。的时候才会被擦掉,应为。但是有一点要注意一下,当。

2024-05-24 13:22:35 253

原创 洛谷 P9586 游戏 的题解

所以,考虑贪心,我们让小 C 先出斩,如果无法把对方杀死,就直接把回合转给对方。因为斩用光了也没有事,无论对方怎么出,都不用出斩来克制对方。而如果把杀和斩一次性都用完,如果对方出斩,就无法出牌回应,就输掉了。读题就可以发现,斩就是老大,杀是老二,闪是老三。闪就非常的被动了,出闪的唯一目的就是克制杀。因为两人的斩都出完了,就没有任何的牌对杀构成威胁。如果某个人杀的数量比另一个人的闪的数量大,那么这个人就赢了。在两人都没有杀的情况下出闪就没有任何意义了,于是,答案就是平局。有三种手牌:杀、闪、斩。

2024-05-24 13:21:25 401

原创 洛谷 P9587 排名 的题解

我在做这题的时候有一种下意识,当我发现题目怎么暴力也暴力不出来的时候,就想到分情况讨论,找规律。,所以当前的数就必须和最大数平齐,所以对于每一个。由于数组已经排过序了,那么就贪心地选择后面的。分的做法,从部分分做起可以更深的理解题意。其中第二个式子可以直接用前缀和优化。的时候正好满足条件,所以答案为。看题目中的特殊性质 B,既然。得完这档部分分,相信大家对于。题目已经很简短了,不好概括。首先,我们得先给数组排个序。由于要排序,时间复杂度为。

2024-05-24 13:16:19 520

原创 洛谷 P8591 『JROI-8』颅脑损伤 2.0 的题解

那么我们考虑贪心,如果这条线段满足条件就选择,否则就放弃(你想想,要是这样的话,这么水的题会放 T4 吗),很容易构造出反例。那么贪心不行,那么就得用 dp 了。最后取个最小值就可以了。(没错,就是这么简单),

2024-05-24 13:15:17 340

c++ KMP 的模板(附详细解释)

char s[1000007], t[1000007]; int nxt[1000007], j = 0; int main() { cin >> (s + 1) >> (t + 1); int lens = strlen(s + 1), lent = strlen(t + 1); for(int i = 2; i <= lent; i++) { while(j && t[i] != t[j + 1]) j = nxt[j]; if(t[i] == t[j + 1]) j++; nxt[i] = j; } j = 0; for(int i = 1; i <= lens; i++) { while(j && s[i] != t[j + 1]) j = nxt[j]; if(s[i] == t[j + 1]) j++; if(j == lent) { cout << i - lent + 1 << endl; j = nxt[j]; } } }

2024-05-22

空空如也

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

TA关注的人

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