自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [题解] Codeforces Round 976 (Div. 2) A ~ E

d 最大为 10, 于是对于 a[i], 考虑继承前 10 个节点往后跳跃的情况, 更新到 a[i] 上, 同时继承过来的跳跃次数减一. 这样每个点只用往前跳跃最多 10 次.发现, 运算结果不会有负数. 于是每位就自能顾得上自己, 只需要按位检查, 一旦有一位满足不了, 就输出 -1.表示前 i 位选取某些异或到一起答案是 j 的概率. 就很好转移了. 见代码. 记得滚动数组优化一下空间.首先考虑用并查集维护两个点的连通块所属关系. 但是操作太多, 会 tle.eg: jiangly 的取模机真好用!

2024-09-30 02:26:13 1255 2

原创 【题解】Codeforces Round 975 (Div. 2) A~E

的区间内时, 对于这个区间, 一定有解 ( 可以从这个区间的最小值开始往两边扩散, 哪边吉往哪边去).对于所有区间求并集即可. 注意到如果数组中没有小于等于 t 的数, 那它对应的区间就是全部.分别假设答案为取第偶数位的最大值和取第奇数位的最大值两种情况, 取更优解.相同的节点. 于是可以对这个树跑一个层次 bfs, 对每层的答案取。取偶数位的最大值时, 把所有其他都偶数位都取上. 奇数同理.** 答案没有二分性**, fk, 赛时写了一个小时的二分., 实时更新当前有多少个区间在做贡献.

2024-09-29 16:54:37 1553

原创 线段树优化建图 + 迪杰斯特拉找单源最短路

先看 1, 我们可以用一个点连到线段树的节点 node {l, r} 来表示这个点到 {l, r} 各有一条单向边(橙色). 此时显然: 大区间向被包含的小区间可以有权值为 0 的单向边(绿色). 因为一个点可以到上面的大区间, 一定可以到达被包含的小区间的任意一个点.如果要实现类似线段树的 lazy 优化也是可以的. 即到达了这个线段树节点, 就是可以到这个节点所代表的区间内的所有点.显然, 这两个树是不共存的, 不能公用一个树. 就要用一定形式把这两个树连到一起. 于是…个边, 显然无法接受.

2024-09-10 20:27:07 861 1

原创 [题解 hduoj-7521] 2024HDU 暑假多校7 - cats 的二分答案

考虑: 一个区间内合法的 n 的数量其实是和区间起点终点无关的, 只和区间长度有关, 故记忆化维护一下每个长度的答案. 大大优化时间. 每次二分只用走其中一半, 复杂度来到 log 级别.在如题所示的二分代码流程中, r 的初始值可能大于 n. 那么通过 mid 访问的。这是一个类似二叉树的遍历, 最后会遍历到每一个。满足越界次数不超过 k, 得到正确结果. (就会越界. 统计有多少。

2024-08-12 21:04:12 1105 2

原创 [题解 hduoj-7522] 2024HDU 暑假多校7 - cats 的最小生成树

有一个有重边的无向图, 每次找到它的最小生成树, 并删除生成树的边, 直到不存在最小生成树, 问被每条边在第几次被删除.考虑用类似 Kruskal 算法, 但是是遍历一遍所有边, 同时处理出来所有的生成树.

2024-08-12 20:27:59 559

原创 树上启发式合并(dsu on tree)

不妨这样做: 每往上传递子树的贡献时, 其他 ( 轻子树 )的仍旧暴力枚举所有点来计算贡献. 最大的那个子树 ( 重子树) 留到最后一个跑 dfs, 此时跑出来的结果不再动他, 直接往上回溯, 就传承给了上一级. 形象地说, 就是所有轻子树合并到了重子树上, 作为 fa 的子树的贡献.就是说: 遍历所有子树的贡献时, 由于换一根子树 dfs 之前就要清除之前子树的贡献, 我们可以选择一个子树作为最后跑 dfs 的, 这样他就是不用清除的, 就可以节省复杂度.可以证明这样的复杂度是。

2024-08-03 16:04:30 450

原创 Tarjan( 系列4)求点双 / 边双连通分量

由此可见: 点双连通两点一定在一个环上, 而边双连通的两点可能是在一个扭起来的环上(如图, 点多次使用, 但边只用一次的环, 可以拆解为多个环) (见题。故: 一个点是割点时, 它一定是点双分量的根. 如果再往上包含它的父亲, 那它就成为分量内的割点了. 操作类似求有向图的强连通分量, 用一个栈去存点.也就是说, 边双可能含有割点. 不同点双可能公用某点 (割点), 边双无公用.桥 (-> 删除一条边使两点不连通 ), 故桥两边的点一定不满住边双。这时的所有连通分量都是边双连通分量.

2024-08-02 19:17:54 1010 1

原创 【题解】Codeforces Round 962 (Div. 3) F-Bomb

给你一个数组 a 和数组 b, 每次操作可以任选一个。. 问执行 k 次后最大收益是多少. k 最大为。的大小, 但此后的要执行。

2024-07-27 11:14:14 853 3

原创 【主席树】学习笔记

得到的就是 l 到 r 区间所有元素的组成的权值线段树, 然后操作就和权值线段树找第 k 小一样了. 可持续化线段树的就用来保存树的不同版本 Version. 本质就是前缀和操作, 每个。个节点, 并连上未被更改的节点, 且保存这个新根, 注意到, 访问不同的根就相当于访问了不同版本的树.都是一棵树. 其实如果时间空间允许, 完全可以每插入一个点, 就把原树复制一份, 执行前缀和的。个元素被改变, 而且根是一定会改变的, 我们就可以对每次更改, 执行如上图的更改, 新建。访问左右儿子了, 要动态开点.

2024-07-24 17:31:45 415

原创 2024牛客暑假多校-A-Bridging the Gap 2-题解

个人, 问题就是要运算最多可以返回多少次. 考虑往返一次, 回去接人的人要付出两点体力, 一共需要 L 个人. 返回 x 次, 付出的体力总数是。有一艘船, n 个人想要渡船到河对岸, 船至少要 L 个人开动, 最多可以载 R 个人. 每个人渡过一次船体力。, 因为 x 次返回, 同一个人最多往返 x 次. 就可以二分答案找最多的返回次数.返回时至少要回去 L 个人, 所以每次返回接人, 就相当于上次最多能运。预处理成了每个人最多可以返回多少次. 查看总贡献能不能满足。, 但是每个人对其的贡献不能超过。

2024-07-23 16:45:47 809

原创 (HDUOJ7452)2024HDU暑假多校2-1008-成长,生命,幸福 题解

考虑如何快速算出成⻓后的点数, 可以发现, 在进行一次成⻓后的树度数最大为3, 对于一个 2 度点, 成⻓一次变为 2 个 2 度点, 对于一个 3 度点, 成⻓一次边为 2 个 2 度点和 1 个 3 度点,对于一个 d 度点, 成⻓一次为 2 个 2 度点和。接下来就考虑用这个式子作为每个点的权值, 来计算树中的最长路( 权值和最大的路径 ).个 3 度点. 最后推出一个度数为 x 的点成长 m 次后会变成。个点.(补题时总是不想计算这些推理的, 所有我没推这玩意 )

2024-07-22 22:20:26 1181 1

原创 2024HDU暑假多校1012(hduoj 7444) --并 题解

!!组合数的推导部分不讲, 想看这部分的可以转战了. 主要记录一下这题的前缀和部分, 和之前见过的不太一样.

2024-07-20 14:28:59 1033 2

原创 牛客 2024 暑假训练营, D- XOR of Suffix Sums 题解

有一个起始为空的数组, 每次操作从尾部删除 t 个数, 在在尾部加一个数. 求每次操作( 最多 5e5 次) 后的后缀和的异或和. 对。

2024-07-18 22:08:38 1132

原创 Tarjan( 系列3) 有向图中的缩点操作

Tarjan 是大佬的名字, 大佬一生发明了许多算法, 都叫 Tarjan, 我会渐渐整理出来, 想知道都有啥的话, 可以直接到我文章列表搜索 Tarjan.在 Tarjan 求得 scc 后, 对于每个点打上同样的 scc, 就可以很容易统计出每个 scc 的出度入度有哪些, 就完成了缩点.重温Tarjan, 网上看了许多博客感觉都讲的不清楚. 故传上来自己的笔记, 希望帮到大家.将有向图中的强连通分量缩成一个点, 权值具题而定.

2024-07-17 21:35:40 276

原创 Tarjan( 系列2) 在无向图中找割点/桥

如果删除某个点/边后,无向图的连通分量数增多,这个点叫割点/边,桥。即把图分为互不相连的两部分。

2024-07-15 14:49:55 493

原创 Educational Codeforces Round 167 , D Smithing Skill 题解

因为 c 在他的原数值操作一次就减了一个 dif. 由预处理的第 3 步知道, c 变小了, 下面一定是一个更优或相同的 dif.所以每个位置的dif 就用一次.表示 c 恰好为 i 时可以通过操作获得的利益. 转移方程就为。不能变成小于 0.且操作前要保证。操作一次, 贡献加 2.但是。

2024-07-15 10:38:38 858

原创 使用 Hexo + Github Page 搭建个人静态博客

用此文记录一下我这个的搭建过程. 参考了这篇博客。

2024-06-24 11:35:27 406

原创 cdq 分治处理二维三维偏序问题

在函数体内,递归地解决左区间和右区间的子问题,然后对于一个在左区间,一个在右区间的点对,我们分别将左右区间按。,需要捆绑起来一起处理,不然可能会把相等的元素划到左右两个区间去,从而把相等两元素的之间相互的贡献漏掉一半。eg: 当然也可以选择 cdq 套 cdq, 而不是 cdq 套树状数组。具体地,对于右区间的每个点,我们遍历左区间,把第二维符合要求的点的。,然后查询第三维也符合要求的点的数目(即上树状数组求逆序对方法)。但是需要注意,如果偏序关系带等号,对于。为了节约时间,清空树状数组不使用。

2024-06-22 16:55:03 263

原创 Tarjan( 系列1) 求强连通子图

提到的一些概念可以参考 oi wiki, 代码也是 oi wiki 的, 因为我不认为我能写出比大佬更好的代码了.重温Tarjan, 网上看了许多博客感觉都讲的不清楚. 故传上来自己的笔记, 希望帮到大家., 说明当前节点是它所属连通块的最小节点. 栈里它之上所有点都是一个强连通块., 说明当前节点是它所属连通块的最小节点. 栈里它之上所有点都是一个强连通块..v 入栈. 回溯时用 low[v] 更新它的 fa 的 low[ ]..v 入栈. 回溯时用 low[v] 更新它的 fa 的 low[ ].

2024-06-20 18:46:29 1164 1

空空如也

空空如也

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

TA关注的人

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