自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ayanami_Rei的博客

记录算法学习历程

  • 博客(43)
  • 收藏
  • 关注

原创 2021 CCF CSP-S2.括号序列

对于每种形态考虑状态如何进行转移, 枚举的时候不能。, 星号也要定义唯一的解析方式, 算法时间复杂度。

2025-04-04 13:02:51 502

原创 VSCODE Code-Runner for C++配置

【代码】VSCODE Code-Runner for C++配置。

2025-04-04 12:49:10 43

原创 NOIP2012提高组.开车旅行

出发能走到的位置, 对于题目的第一个询问, 扫描一遍所有位置, 计算比值, 对于第二个询问直接模拟会。从起始位置从一个位置出发, 走到的终点是。走过的距离, 这样就可以迅速的计算出询问。找到前面和它差最小的一个数输出。从每个城市走最终能到达的城市。还要预处理走过的距离, 分为。数组, 有下面四个情况,走过的距离, 后两项代表。, 因此可以预处理小。

2025-04-03 16:57:48 599

原创 NOIP2010提高组.引水入城

发现每个水库覆盖的城市必须是连续的, 因为如果不连续, 其他地方的水也无法连接到当前城市, 因此问题就转化为了最少需要多少区间能将最后的城市全部覆盖?也就是经典的区间覆盖问题, 计算每个第一层的城市可以覆盖哪些最后一层的城市可以。

2025-04-02 19:28:06 183

原创 NOIP2018提高组.保卫国王

在原问题基础上还有每个点的限制, 要求某些点必须选择, 某些节点不能选择。将问题回到树形问题, 首先考虑只有一个点选或者不选, 可以将。将问题简化, 如果是一维问题, 可以前后缀分解来做。对于两个点以上情况, 使用。分为两部分, 也是类似于。

2025-04-02 16:06:09 308

原创 2019 CCF CSP-S2.括号树

进行划分, 如果包含第。

2025-04-01 17:06:49 541

原创 LIS离散化 + 树状数组

【代码】LIS离散化 + 树状数组。

2025-04-01 15:22:08 73

原创 NOIP2016提高组.愤怒的小鸟

预处理所有经过两个点的抛物线, 问题就变成。看状态转移, 可以少枚举一维, 时间复杂度。计算, 但是如果列数比较大只能使用。比较小, 因此可以使用。

2025-04-01 14:45:31 583

原创 NOIP2017提高组.宝藏

的所有方案的最小代价, 按照最后一层的状态进行集合的划分, 假设最后一层的状态是。层的点, 也就不需要连接到上一层的点, 因此我们重新考虑状态表示。的最小代价, 但是时间复杂度会爆炸, 空间也会爆炸, 需要优化。, 因为最后一层状态也要取决于上一层状态, 上一层状态是。, 因为需要连最短边, 因此其实也是连接到。, 求代价的最小值, 直接想法是。, 但是我们考虑是否可以连到前面。

2025-03-31 19:21:16 678

原创 NOIP2016提高组.换教室

因为只能在最开始的时候决定每节课的教室是否更换, 因此每个教室之间的概率是独立的, 也就是说总的。是否更换, 每一门课程更换教室的概率是不同的, 独立计算期望相加。门课程的教室并且当前这门课程的教室未更换的所有方案,代表更换了当前这门教室的所有方案。

2025-03-31 16:04:13 223

原创 ABC399.E题解

首先考虑是否有解, 然后再考虑最小操作步数, 观察什么情况下无解, 如果对于。一定无解(因为两个相等字符无法变为不同的字符), 假设有两个字符串。使得两个字符串相等, 因为无论变换哪个字符, 都会使得串中出现。, 然后变后面的字符, 最后换回来, 类似于。是可以的, 因为可以。

2025-03-31 15:14:33 238

原创 ABC399.D题解

不能在同一个位置, 并且可以通过交换使得。

2025-03-31 13:41:13 304

原创 NOIP2018提高组.货币系统

集合的其他数字表示, 也就不是最优解, 矛盾, 因此最优解。出来, 如果可以不选择, 否则选择, 也就是完全背包问题。将原集合进行从小到大排序, 对于没个位置检查。可以有最优解表示出来,反证法, 假设存在一个。表示为如上形式, 因为。凑出来, 因此可以将。

2025-03-30 15:29:20 761

原创 NOIP2014提高组.飞扬的小鸟

数, 当前状态可以由上一个位置的状态转移,的第二项开始的部分类似, 可以记为。优化掉一维, 时间复杂度变为。注意到从第二项开始的部分和。不难发现状态可以表示为。转移, 计算时间复杂度。必定超时, 因此需要将。, 状态转移方程转化为。

2025-03-30 14:25:08 982

原创 NOIP2007提高组.矩阵取数游戏

之间是独立的, 因此可以求出每一行的最大值, 然后行与行之间最大值相加, 就是总的最大值。对于行内来说, 每次可以选取左边或者右边, 可以使用**区间。, 或者高精度加法处理结果。**求解, 时间复杂度。的最大范围, 可以使用。, 因为列的最大值是。

2025-03-29 14:53:02 551

原创 2019 CCF CSP-S2.Emiya 家今天的饭

核心方法总得方案数减去不合法的方案数, 首先考虑前两个。个食材出现的次数减去其他食材出现的次数为。个食材的所有方案, 类似于。个烹饪方式, 对于第。

2025-03-28 16:14:12 592

原创 NOI2015提高组.子串

的长度进行划分, 状态转移方程如下。

2025-03-28 14:16:13 912

原创 线性DP位置压缩优化

位置压缩优化

2025-03-27 15:07:15 354

原创 ABC390题解

AtCoder Beginner Contest 390

2025-03-26 20:28:24 775

原创 ABC391题解

AtCoder Beginner Contest 391

2025-03-25 20:41:57 807

原创 ABC398题解

UNIQUE VISION Programming Contest 2025 Spring (AtCoder Beginner Contest 398)

2025-03-24 20:33:32 707

原创 FFT快速傅里叶变换原理及实现代码

求两个多项式乘积或者卷积, 也就是将问题转化为。值, 将区间分为左右两份, 第一个区间预处理。, 非常方便, 因此目标就变为如何快速的将。本质是基于分治算法, 每一层时间复杂度。, 在点表示法计算完结果后, 再。将原式的奇偶项分开, 使用换元法。就是求卷积, 直接求时间复杂度。, 然后就可以根据这两个值计算。方向坐标相乘即可, 也就是。将点表示法快速的求出原来的。, 在函数图像上任意取。个点, 唯一能确定一个。个特殊点, 如果求点的。次单位根, 一般来说将。, 第二个区间预处理。, 计算原多项式系数。

2025-03-24 13:12:29 688

原创 ABC392题解

如果正着做, 插入不好操作, 平衡树操作, 如果倒着做, 插入第。而且没说两个骰子只有一个点数相等, 下面做法有遗漏情况。, 如果这个位置被占用将其改为。, 初始化树状数组每个位置。, 寻找从左往右的第。的位置, 时间复杂度。

2025-03-23 21:44:46 867

原创 ABC393题解

AtCoder Beginner Contest 393

2025-03-23 13:42:06 544

原创 ABC394题解

KAJIMA CORPORATION CONTEST 2025 (AtCoder Beginner Contest 394)

2025-03-22 13:24:07 653

原创 ABC395题解

AtCoder Beginner Contest 395

2025-03-20 22:53:51 984

原创 ABC396题解

AtCoder Beginner Contest 396

2025-03-19 20:02:31 634

原创 网络流基本概念及实现算法

对于一个有向图, 抽象成水管里的水的模型, 每根管子有限制, 计为GVE对于任意无向图, 都可以将反向边转化为上述形式如果一条边不存在, 定义为容量为0, 形式上来说就是cuv0。

2025-03-18 12:00:05 677

原创 ABC397题解

求根公式直接求解一元二次方程, 时间复杂度。, 代表从后面开始向前的不同数字的个数。, 因此第一项是常量, 第二项必须在。因为求最大值最小, 因此考虑二分答案。表示区间个数, 对于每一项添加一个。一样枚举分界点, 那么时间复杂度。, 都计算出这样一个数值, 对于。线段树维护该数组, 时间复杂度。修改了一条边, 相当于将这条边。上述数组会产生什么样的变化?, 当前数有没有变化取决于。, 具有一个二分的性质。, 至少需要修改几条边。, 换言之, 至少需要。题是切一到的最优方案。, 因此就是求最大流。

2025-03-17 16:44:34 911

原创 DSU并查集应用

DSU。

2025-03-16 15:14:55 693

原创 Acwing157周赛题解

的位置开始向前, 一定是最优进位方式, 如果从后面进位结果一定没有当前进位好。的情况就是计算完后还向前进一位, 因此需要将原字符串前面。将情况分为两类, 因为是两位数, 因此看个位, 如果。, 因为区间中元素都是正的, 因此。基础线段树之单点修改, 区间查询。删除某个数后求最大子段和。维护区间总和到代表元素上。, 舍去, 否则进位。并且每次进位最多一次。

2025-03-15 21:49:11 562

原创 C++严格代码规范

严格下划线命名法, 适当缩写行rowrowrow列colcolcol体积volvolvol或vvv前缀和sss动态规划数组f[i][j]f[i][j]f[i][j]图论当中点对(u,v)(u, v)(u,v), 如果有一个点命名为uuukmpkmpkmp算法模式串匹配数组左边界右边界l,rl, rl,r左儿子右儿子ls,rsls, rsls,rs栈stackstackstack队列qqq, 队头队尾h,th, th,t并查集数组fafafa一般来说nnn代表数量, mmm代表边数或

2025-03-15 14:32:32 523

原创 图论缩点问题

问题描述: 给定无向连通图, 问至少在几个位置设置出口, 使得无论任意一个点坍塌其余所有点都能走到出口位置。将所有叶子结点都连接起来, 该图一定是无向连通图, 也就是没有任意一个点是桥。情况, 如果当前连通块有割点, 那么需要进行缩点, 然后统计每个。用哈希表管理重边的情况, 对边的两个节点做哈希映射, 每个集合由。, 也就是删除当前点后所在连通分量被分割为的数量?算法求割点, 将当前位置分为是根节点和不是根节点。, 如果一个出口坏掉必须还有一个出口。将原图缩点后, 变为一棵树,

2025-03-15 14:20:51 843

原创 Acwing158周赛题解

最多的链, 对于链以外的点的变化次数一定不能大于链两端的变化次数, 如果大于, 那么该点所在的分支就会替代原来的链。那么如果剩余两部分在同一分支, 由于回溯过程是从子节点到父节点进行的, 也可以找到,从黑色点只能到黑色点, 从白色点只能到白色点, 最少操作多少次, 将树变成同一种颜色。如果剩余两部分不在同一个分支, 那么由上图一定能找到答案, 因为回溯的过程是独立的。, 因此定义树的边权, 如果边的两端颜色相同边权为。段与段之间都是独立的, 因为没有环, 将。将问题细分, 将问题分为。

2025-03-14 17:13:19 527

原创 Acwing159周赛题解

具体来说, 假设答案弹第一个队列的第一个元素和第二个元素, 那么顺序是可以。次的最大价值, 那么问题就变成了每次选择一个队列弹出并且最大价值是多少。, 因为不能有重复方案因此每次分割线都到换到其他位置。将每个队列看成一个物品组, 问题转化为分组背包问题。因为是每次选择弹出队列的队头或者队尾, 观察到。因为每次从队头或者队尾弹出, 因此。的区间, 在用总和减去中间位置的和。, 那么可选位置位置的数量是。每次重组, 相当于把环上的。步进行划分, 时间复杂度。, 因此可以枚举长度为。, 可选择的位置数量是。

2025-03-14 12:56:58 845

原创 Acwing160周赛题解

计算最大分数以及总分数能被。, 因此需要高精度运算。

2025-03-13 17:54:10 165

原创 Acwing161周赛题解

原来是暴力枚举所有非互质数, 现在可将整个集合进行划分, 划分成与。, 时间瓶颈在试除法分解质因数, 或者使用筛法优化, 时间复杂度。, 因为前后奶牛的顺序可以任意调整, 因此概率为。的最大值, 这样处理后状态转移方程转化为。, 如果所有奶牛都能上车进行特判。将问题集合进行分类, 将集合。将集合继续进行划分, 前面有。不互质的数的位置一定至少与。的方案数, 发生的概率就是。发现后面的式子是组合数倒数。需要优化, 如何找到。

2025-03-13 15:02:22 1029

原创 Acwing163周赛题解

因为有四个朋友, 但是三个是已知的, 因此将三个已知的朋友去掉剩下一个就是下一个奶牛位置, 因此是可以递推的。以任意一头奶牛开始, 读入的时候讲所有奶牛的朋友读入, 如果第一头奶牛的所有朋友确定, 也就是上图中。初始的时候节点指向自己表示未被淘汰, 如果淘汰一个奶牛, 那就将该位置指向下一个位置,奶牛之间有朋友关系, 相邻奶牛是朋友 之间隔了一个奶牛也是朋友。, 如果不合法枚举下一个位置, 因此最开始直接枚举。, 每个节点只会被考虑一次, 因此时间复杂度是。四个位置, 如果想知道下一头奶牛位置,

2025-03-13 11:11:45 664

原创 牛客小白月赛111

存储每个字符串出现的次数, 因为只能更改一次因此如果不满足条件就缩减窗口大小。数字三角形模型, 多加一些边界, 如果某位置在某时刻变为石头, 那价值就是。贪心, 因为只有两个邪恶英雄合并有收益。, 这样该位置一定无法到达。滑动窗口, 建立一个。

2025-03-11 22:19:45 168

原创 算法常用数学知识

线性筛质数Acwing1292.哥德巴赫猜想Acwing1293.夏洛克和他的女朋友每一条边都是从质数连到非质数, 因此是二分图Acwing195.质数距离寻找在区间[l,r][l, r][l,r]之间, 相邻质数差值最大和最小的一对范围比较小的时候, 直接筛出质数, 然后在区间中进行扫描即可, 但该题数据范围非常大, 因此不能直接扫描先找出[1,50000][1, 50000][1,50000]所有的质因子, 对于全部区间的数字, 如果该数字是合数, 必然存在一个[1,50000][1, 50000

2025-03-11 11:35:51 1016

空空如也

空空如也

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

TA关注的人

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