自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 问答 (43)
  • 收藏
  • 关注

原创 决定换个平台写题解

你想要的功能他都有。而且操作非常方便 不会有什么冗余的操作 非常直接。最好在早期 就选一个 适合自己的平台。还是那句话 人的精力是有限的。就像物体移动的摩擦力一样。不要搞各种乱七八糟的东西。不要给我搞什么沙发 电视 茶几 衣柜 什么乱七八糟的东西。就是一个类似文档而已。不该有的功能什么都不要给我。也像vsc 和sublime 我特别喜欢sub的原因。干扰创作的东西要尽可能少一点。前两个星期复习了atc的 我做过的全部蓝题。1 这个平台 不要有太多乱七八糟的东西。我就要一个床 一台电脑 其他的啥也不要。

2024-08-31 11:11:16 556

原创 atc 经典dp 26题 题型总结

H - Grid 1. 矩阵的[1,1]->[n,m]的路径数统计 就是f[i-1][j].f[i]j[j-1]来。F 找两个string的公共最长 子序列。主要恢复手法 i-- j--。也不用强行写dp 写的非常麻烦。主要想发现他 这个题单主人 是怎么去分类dp的类型的。不能继承pre一样位置的。LCS 的本质就是一个填表的过程 dp的填表视角就是基于这种题型吧。统计答案的时候反向枚举 开销 第一个需要的容器

2024-08-30 20:45:37 710

原创 F - Distinct Numbers 每次取k个不同的 整零计算

主要是理解 b[x] + x * (c[n] - c[x]) >= x * y;c数组是 值x的cnt 的cnt 前缀。—没错就是两个cnt嵌套含义。然后这样算起来 是否大于x*y所形成的矩形。这可以参考下面那篇题解。他这个验证的意思是。从x位置截断 前面按照零的算 后面按照整的算🦋。整的就是算x的高度。----这是这种题的计算特点。就是每次拿k个 然后每个都要不一样🔥。b数组实际上是 高度sum。b c数组 都是一个 递增的梯形。这个数据预处理还是挺方便计算的。

2024-08-30 18:02:39 309

原创 F - Deforestation 插入dp

然后求的是整个排列的可行方案数。刚开始觉得挺抽象的。说明这种dp他的继承框架 是很稳定的。新接触的一种dp题型。dp的定义非常特别。

2024-08-30 10:40:44 303

原创 sg博弈

这个是一些区间 轮流选。当前选的不能和之前的区间有交集。感觉就是一个区间dp。这种题型最近碰到的有点多。

2024-08-30 09:38:40 232

原创 F - Simplified Reversi 矩阵侧边视角 修改

主要还是行列间的 查询和修改的互动。1 行修改的时候只🔥影响的是哪些位置 反之。2 用什么东西可以维护这样的区间修改。

2024-08-29 20:59:02 394

原创 F - Contrast 两个数组对比 通过交换位置 =》a[i]!=b[i]

a[l] && l

2024-08-29 20:49:19 162

原创 E - Multiplication 4 数组选k个 最大的乘积

/ 写个例子 -2 1 2 3。当左边拿到 -2*1 的时候肯定是不拿的 或者说最后拿。所以这个策略是对的。1最大那个正数 肯定必拿的。如果最大的都是负数。因为他是绝对值最小的。// 剩下疑问就是为什么两个两个拿。然后为什么是相邻的?还是绝对值最大化吧。总体思路就是要拿偶数个 相乘绝对值较大的。这就是为什么两个两个拿。// 我们要找的就是绝对值的最大化。两个两个拿保证是正数。也是看别人的题解的。那么就给他转换成偶数个的问题。还是可以理解这个策略的。实际上这些问题都不是问题。

2024-08-29 20:22:01 138

原创 F - Pond Skater 矩阵 一个方向走k步。。最短路

/ 按照四个方向状态去写。因为你要算 剩下的可用步数。这个步数+1 -1 之间。而且初始化统一步数也麻烦。// 直接用最短路。他的复杂度不知道怎么证明。这种矩阵走k步的问题。一般都是选择直接🔥暴力k次。然后严格控制入队的条件。感受下 当时写4方向状态的。// 虽然我也写出来了。

2024-08-29 19:31:47 483

原创 F - Knapsack for All Subsets 子集的子子集和=s 问题

这个问题可以概括如下:有多少对集合(T, U)满足以下条件?T和U都是{1, 2, …dp[i][j] = 当前i个选项的选择已经确定时,使得所有选择第一个选项的k的ak之和等于j的组合数。设U = {x1, x2, …, xk},则ax1 + ax2 + …这题的代码非常简单。但是我逛了几乎所有的题解 都没有给与明确的逻辑说明。所需的答案是dp[N][S],总时间复杂度为O(NS)。只有当选择第一个选项时,和才会增加ai。既不放入U也不放入T。

2024-08-29 18:59:33 208

原创 E - ∙ (Bullet) 不能同池子的限制,计数

主要是他这个-1。

2024-08-29 18:33:46 361

原创 F - Bracket Sequencing 括号匹配 子串拼接

右边R>L 也是同理。如果从右边开始放 我们L要尽量小的放最右侧。肯定是R少的放前面。因为这样前面用来抵消当前R的L会减少压力。也就是 一段序列 他左右括号 未匹配的剩余量。直觉上我们就是要减少R增加的幅度 来减少L的压力🔥。我们一般拿他的两个数据来研究。但是同样是L>R的。里面又应该怎么排序呢。证明也不知道怎么证。因为随着L>R的叠加。L一定是越来越多的。直觉上 肯定左边放L>R的。

2024-08-29 17:59:55 139

原创 [ABC203F] Weed 之前操作次数vs之后操作次数 权衡

f[i][j]=min(f[i-1][j],f[pre[i]][j]) 一次j-1 一次j 不变。结合1分析 当前的dp定义 有两个 f[i][cnt] 到i为止 删了cnt次。我们只需要预处理下pre[i]的位置。然后特判下j==0的值。2 dp的定义是很重要的 从定义的角度来思考。一般递推方式都是 当前i位置 选 和 不选。所以他次数肯定不会多。说明可以暴力这个维度。每次删 相当于h之内只留一半。那么f[i][cnt]=的值。我们可以定义为什么?下面是一些处理细节上不同的方式。

2024-08-29 11:11:49 227

原创 关于写题解的标准 一步步的给启发 和纹路

很明显学习的过程重要的是自己的输出。所以别人题解对你的输入 即使再多效果都是有限的。这也是题解的边界吧🦋。这可以是我的题解风格吧。🦋算是一个追求的方向 用最简洁的语言 刻画最关键的纹路。这是一篇题解能做到的吧。就像一只猪 在拆解的过程中 把他的肌肉纹路说清楚。不过题解的另外的功能 很显然是给那些当前没有 解题思路的人启发用的。所以一篇好的题解 最重要的首先是你切题的角度要对。用最简洁 最少的文字。我又没有画图的好使的工具。对于一些结构复杂的。最关键的首先是你切问题的角度🔥。回想以前我找题解的过程。

2024-08-29 10:15:44 276

原创 两点问题 模型

他适用于连续区间的统计问题。甚至可以用在回文区间统计。原理就是枚举右端点。然后我们通过数据结构的预处理 可以快速的拿到 左端点的有效个数。我不知道专业的是怎么称呼。下面记录一种看似和两点问题没有任何关系。因为点对问题 很常见。这种思想的应用就很广泛。他的暴力是n^2 .一般都能优化成n*logn。就是这个模型的经典。

2024-08-28 19:14:21 266

原创 F. LIS on Tree 树上根路径LIS

这样 对于任何一个查询的a[u]我们都可以通用🔥st + 1, st + n + 1 这个范围。// 12345 查4 应该放在4。类似 1 3 5 inf inf inf inf 这样的。这个和st + 1, st + n + 1。3 关于 memset(st, 0x3f, sizeof st);2 关于 ans[u] = max(j, ans[p]);维护一个max 一定从(premax,cur)中选出来的。//如果1235 查4。而不用自定义 st+1 ,st+len+1。

2024-08-28 13:56:43 240

原创 F - Knapsack for All Segments 两点问题+01背包

用01背包 作为两点问题的容器。大框架统计 还是两点问题的手法。这题实际上也是两点问题。他在每个i 也就是右端点都统计ans。就是对于每个[l,r]他的子序列=s的子集个数和。是两点问题 和01背包的结合🦋。

2024-08-28 11:43:48 706

原创 E - Divisible Substring 逆序哈希 同余计数

而且有时候即使逆序。他哈希 竟然也写 x=x*10+t;// 其他的哈希同余 为什么要逆序。// 特判一下2 和5 、

2024-08-28 11:24:40 131

原创 D - Pairs 二分+二分

因为i j 和j i 会被反复算。我们这里没有规定方向。然后再去填充内部验证的逻辑细节。这样写起来思路会清晰点。内部就是分三类讨论。也是单调的 所以再次二分 算个数。因为二分我们要先思考 我们要怎么拿到这个边界值。我们可以先把逻辑🔥大框架 写出来。然后这里写的二分竟然是左边界。

2024-08-28 11:06:48 119

原创 F - Tree and Constraints 以子集为状态容器的 01背包

然后就是跑01背包了。然后这里思路是把每条边 能🔥贡献给m个条件中的几个。这个m

2024-08-28 10:28:37 243

原创 E - Handshake 二分再二分的

就是二分再二分的题目。

2024-08-28 10:10:41 190

原创 E - Red Polyomino 关于回溯 和爆搜

回溯只在于样本只有一份。我们只有通过恢复现场。如果我们可以每层递归 都是拷贝。实际上是不需要回溯的。之前一直在思考回溯 到底和爆搜什么关系。但是实际上因为相连的限制。下面两个版本的写法。回溯只不过是爆搜的一种方式而已。目前算是阶段性的一个理解。

2024-08-27 17:21:00 376

原创 [ABC192F] Potion 枚举个数+01背包 扩展

1 这里需要自己枚举 最终目标物品的个数。因为这里涉及%个数 的值 所以。2 这里就是目标sum%cnt=X%cnt。这也是常见的一种关系。01背包的基本框架。外面套一层枚举个数。只有先确定个数 我们才dp。不然数组开多大你都不知道。

2024-08-26 11:02:03 208

原创 F - Rook on Grid 矩阵 侧面视角 树状数组

有个技巧🔥就是 当行>=r[1]的那些。我们都给他当做在第一列开始就有阴影了。先右再下 就吃剩的哈哈 每个L[i]挡住的阴影部分 才是有效的吃到部分。可以遍历行 对应的能到达的最近的列。作为key 反向来存。处理方式可以按照列扫过去。一边用树状数组维护那些有阴影的行🔥。这题的关键就是怎么去维护那个东西。先下再右 吃到的就是L[i]-1个。这样处理起来更方便。

2024-08-25 19:06:32 183

原创 F - Close Group子集切割型

有点像 区间dp的递推类似。把当前子集 分割成小子集+小子集。有别于旅行商那种子集dp f[s][i]这种。他研究的一般是子集和子集的拼凑。子集切割型 递推的dp。

2024-08-25 18:33:55 141

原创 E - Count Descendants 时间戳 深度切片

有个性质:🔥u节点 [in[u],ou[u]]覆盖了他子树内所有的节点。上面那个性质也是一样的。我们可以用 [in[u],ou[u]] 区间点数=答案。启发式合并维护深度的时候 最好维护的是 绝对深度🔥。如果我们把这个时间戳数组按照 深度d 来分层。他问题本质是问 u子树内 绝对深度为d的节点个数。这题也可以用启发式合并来写。它是时间戳手法的一个拓展 或者细化。

2024-08-25 11:44:08 373

原创 E - Xor Distances 树上异或问题

很容易想到减去lca公共的那段。而xor 他异或 刚好也是会抵消公共部分的。树和 xor 有些地方 很契合🔥。

2024-08-25 10:46:04 177

原创 E - Permutation

但是这么特别的逻辑。最快提交 竟然也只用了3分钟就写出来了。然后就是 不知道这种题目 猴年马月会再碰到。一道很特别的数组构造题 排列的 n<18。而且说实话 我并不不是很理解。

2024-08-25 10:13:05 162

原创 做个实验

【代码】做个实验。

2024-08-25 08:52:09 704

原创 F - Dist Max 2 二维数据维护

/ 第二个维度 只需要迭代mx 和mi。最远距离一定出现在这两个端点之一。// 这是一个我感觉挺特别的二维。// 两个维度 第一个维度用滑窗来控制|x1-x2|>=k。// 特别是二分的验证。

2024-08-24 17:17:48 168

原创 G - 01Sequence dsu菊花树 dsu枚举i

/ 这里有个贪心思想就是 能填右边的就右边先填。因为右边的1 可能被后面的区间覆盖到。也就是可以多贡献几次。// 他要求[l,r]区间要有x个1。可以用树状数组来查询 之前已经填充的量。用dsu 来进行枚举i的🔥超爱的 感觉dsu又雄起了。// 这样反过来说 1就会尽可能少。

2024-08-24 12:14:20 186

原创 F - Blocked Roads 发现 思考 总结

/ 策略:先弄出n-1条必经的边。其他的非必经边 就不需要暴力了。有点跟根分治的味道。// 选择性的暴力。不能全暴力 因为这里m理论上是有可能n*(n-1)的~n^2。跑一次bfs是n+m的复杂度。那么总的(n+m)*m~=n^4 …// 比较灵性🔥的题目了。//挖掉一条边 问d[1,n]的变化。

2024-08-24 11:44:37 118

原创 F - Parenthesis Checking 括号匹配问题 维护左右剩余未匹配

然后就是这个线段树的模版 实际上很通用的。大部分的代码都不需要改 它可以很灵活的维护一些需要🔥自定义合并逻辑的问题。// 这种维护括号的方式。也就是适用🔥大部分括号的维护问题。都可以用维护这两个数据来处理。如果区间没有匹配完 剩下的一定是 ))…((( L=2 R=3这样的。中间部分就是匹配掉的。// 就是用线段树暴力 算是。左右没有匹配掉的括号的数量。这题不需要知道匹配了多少对 所以我们不用去维护那个sum。

2024-08-24 10:33:20 243

原创 F - Problem where +s Separate Digits

而且这题的解法非常多样。有正序 逆序 递推的方式也非常多。下面是找到的一个感觉相对比较简洁的。

2024-08-24 09:26:46 175

原创 F - Construct Highway 知道度数 构造树。。策略:度=1 优先

我们把 颗粒度最小化。比如 ins[i]=4 我们就直接存 i i i i 四次。// 关键还是匹配的逻辑。如果度=1 的用完了。还剩下度>2的肯定是会成环的。这题也算挺有特点的。就是实现起来挺恶心的。

2024-08-23 11:26:38 218

原创 E - Average and Median 平均数 中位数 二分方式

二分的 平均数 中位数 相邻必选1 的问题。我们实际上是无所谓的。我们只要把所选的-mid的值相加就行了。以前我是转化成0 和 1。但是感觉1 和-1 更方便。他可以无视n的奇偶性性。2 中位数 有一个技巧就是把a[i]值 转化成 1 和-1 的贡献值。然后继承就是 很好写 代码。答案在f[n-1]和f[n]之间。这样一个好处是方便计算。3 相邻至少选一个的问题。就是dp 当前位置必选定义为=>f[i]。这样就不需要讨论 要选多少个 的问题。1 平均数 二分的一个方法。验证的技巧 比如选3个。

2024-08-22 20:10:34 250

原创 F - Exactly K Steps 树上直径 最长距离问题

因为根路径可以避免那个点在其他分支。即使d[u]-d[v]=k。而任意一个点 他到某一条直径的两端 一定它到树上任意一个点的距离最大的。我们弄个直径两端 来当root 分别跑两次根路径。就是在找直径端点的时候 顺便把答案统计了。额主要是觉得自己写的很优雅吧。那么距离u为k的点一定在根路径上。直径应用另外一个是最长路吧。因为他只要找去任意一个可行解。但是感觉没有我这种优雅。

2024-08-22 18:16:13 178

原创 F - Pre-order and In-order 先序中序 构造树的手法

通过先序的root 找到中序的 分割点。再通过中序 root的位置 反向找到先序到分割点的len。这题做第一遍的时候感觉挺乱的。做第二遍的时候竟然自己写出来了,还挺简单。哈哈 这就是所谓的进步吧。l r x y 一定要分别维护 因为 他们随着递归 中序和先序对应的区间位置会发生改变。但是会写之后感觉 实际上他的逻辑还是挺精妙的 算是富有美感吧。最早的时候那个时候 在lc 写树专项的时候 经常碰到这种 先序 后序 中序啥。在atc写到这题的时候 有点梦回leetcode。所以一开始挺烦这种题的。

2024-08-22 16:44:56 421

原创 F - Operations on a Matrix 版本前缀和 离线问题 维护数据技巧

行 要用前缀和版本思想。要记录行覆盖的版本时间位置 在那个位置找到那时候列的值。然后用 sum[r]-sum[l]这样的方式 来获取之间列的变化量。这题如果行也是修改的 而不是覆盖的话。实现的关键在于记录sum[l]的那个版本的版本位置。答案就是 最近一次行的覆盖值+那个列的前缀和。行列操作 分别对应的策略。列我们可以用线段树直接维护。带一堆口水话的注释版本。

2024-08-22 10:08:16 206

原创 G - Sum of Tree Distance 树上距离和 经典问题 2种角度

也就是加入了同值的概念。亮点在于深度的存储方式 给计算带来的便利。他实际上是普通的经典 树上点对计算框架的 一个功能扩展。如果代码看不懂 可以去找一些基本的 树上点对问题统计的题目。实际上树上直径dp。本质上也是树上点对问题。因为直径可以看做是寻找树上最远的两点之间的距离。一道很有意思的树上点对 数量计算的问题。

2024-08-15 09:58:21 181

空空如也

你好打扰下。。验证一个猜想。

2024-08-25

vscode c++ 部分没有高亮效果 也没有代码补全

2021-12-22

数据结构 欧拉回路 线上编译 过不去

2021-11-06

mongodb 数据库的 一个简单的demo 跑不起来

2021-07-28

js变量命名为啥很少见到数字结尾

2021-06-27

mysql文件 有用户名 和密码 怎么把它转成可读文件?

2021-06-16

请问下 黑马 vue全家桶 那个案例 登录账号密码是多少?

2021-06-15

vscode 这种多行注释 是怎么快捷键操作的?

2021-06-08

想同城找编程的聚会,不知道什么平台上有?

2021-06-06

语雀 一个很神奇的功能 自动生成索引 目录。。。。?

2021-06-02

vue router引用问题?

2021-05-31

vue 初级。。。。。。。。。。。。?

2021-05-30

vue 初学 样式问题?

2021-05-29

vue 初学 css排版问题?

2021-05-29

初学vue 装完less-loader 和less依赖 再开项目就报错了。。?

2021-05-29

初学 vue 把vue新项目清除原来的页面信息 就报错?

2021-05-28

初学 有没有说vue单文件的import export default 这些逻辑关系的文章?

2021-05-25

初学 vue 脚手架明明就安装了。。而且vue都能跑的起来了。但是为什么vue -v 还是报错?

2021-05-24

初学.vue单文件组件 怎么挂载到页面中?

2021-05-24

.vue格式单文件 。。里面颜色被我整没了 ?

2021-05-23

有类似这样酷炫的vue登录页面的源码吗?

2021-05-22

为啥 element ui 组件装不了?

2021-05-22

为啥vue 这个里面的代码没有样式 都是白色的?

2021-05-22

vue 组件传递。。。。。。。。?

2021-05-21

webpack 安装老是提示。。。装不了

2021-05-21

招聘 说的jd 说的是啥?

2021-05-21

Vue做一个点击变色的按钮?

2021-05-21

mint-ui 上不去 换了https 也不行 翻了也不行?

2021-05-20

vue初学 为啥这个组件不能复用。。。?

2021-05-19

初学vue 路由 这样嵌套三层路由不行吗?

2021-05-18

这个v-for 有没有大哥能把完整实例 说下要怎么写 或者有空写个最简单的实例?

2021-05-17

template 格式问题?vue

2021-05-15

vue初学 这个template这样为啥还报错划线?

2021-05-15

如果有两个编程职位 你会选哪一个?

2021-05-13

vue 处级 为啥hello world这样不行?

2021-05-13

自学vue。为啥网页打开不是http://localhost:8080/#/目录下的?

2021-05-13

一个视频自学初学疑问js的。为啥那个id要全局声明?下面stop函数明明就能读取上一个函数里的id

2021-05-11

js初学问题 为什么类不能直接用class 而要用className?

2021-05-10

自学初学问题,js为什么声明变量要写在函数里面?

2021-05-09

w3cschool有合租的吗

2021-05-07

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

TA关注的人

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