自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闻缺陷则喜何志丹

本人拙作《闻缺陷则喜》欢迎指教,可在CSDN下载

  • 博客(1970)
  • 资源 (86)
  • 收藏
  • 关注

原创 【缩点 强连通分量】P1262 间谍网络|普及+

由于外国间谍的大量渗入,国家安全正处于高度的危机之中。如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。我们的反间谍机关提供了一份资料,包括所有已知的受贿的间谍,以及他们愿意收受的具体数额。同时我们还知道哪些间谍手中具体掌握了哪些间谍的

2025-07-28 07:28:27 1108 38

原创 【并集查找】P4380 [USACO18OPEN] Multiplayer Moo S|省选-

奶牛们提出了一款创新性的新游戏,令人惊讶的是她们给这款游戏取了个最没创意的名字:“Moo”。 Moo 游戏在一个由 $N \times N$ 个正方形格子组成的棋盘上进行。一头奶牛可以通过大叫一声“哞!”然后把她的数字编号写在这个格子里来占有这个格子。在游戏结束时,每个格子中都包含一个数。此时,如果一头奶牛创建了一个由连通的格子组成的领域,且该领域的大小不小于其他所有领域,那么这头奶牛就获胜。一个“领域”被定义为一些具有相同数字编号的格子,其中每个格子都直接与另一个同一领域中的格子通过上、下、左或右

2025-07-24 07:00:00 2048 48

原创 【高精度 带权并集查找 唯一分解定理】 P4079 [SDOI2016] 齿轮|省选-

现有一个传动系统,包含了N个组合齿轮和M个链条。每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x: y。即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈。传动比为正表示若编号为u的齿轮顺时针转动,则编号为v的齿轮也顺时针转动。传动比为负表示若编号为u的齿轮顺时针转动,则编号为v的齿轮会逆时针转动。若不同链条的传动比不相容,则有些齿轮无法转动。我们希望知道,系统中的这N个组合齿轮能否同时转动。

2025-07-21 07:00:00 1259 56

原创 【并集查找 拓扑序】P3008 [USACO11JAN] Roads and Planes G|省选-

Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 $T$ 个城镇 ( $1 \le T \le 25,000$ ),编号为 $1$ 到 $T$ 。这些城镇之间通过 $R$ 条道路 ( $1 \le R \le 50,000$ ,编号为 $1$ 到 $R$ ) 和 $P$ 条航线 ( $1 \le P \le 50,000$ ,编号为 $1$ 到 $P$ ) 连接。每条道路 $i$ 或者航线 $i$ 连接城镇 $A_i$ ( $1 \le A_i \le T$ )到 $B

2025-07-30 07:00:00 314

原创 【拓扑排序 最短路】P2149 [SDOI2009] Elaxia的路线|省选-

最近,Elaxia 和 w** 的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们必须合理地安排两个人在一起的时间。Elaxia 和 w** 每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。现在已知的是 Elaxia 和 w** 所在的宿舍和实验室的编号以及学校的地图: 地图上有 $n$ 个路口,$m$ 条路,经过每条路都需要一定的时间。 具体地说,就是要求无向图中,两对点间最短路的最长公共路径。

2025-07-29 17:00:00 368 1

原创 【拓扑排序 基环树】P1543 [POI 2004] SZP|省选-

班花 [$\color{red}{\texttt{y}}\color{black}{\texttt{hb}}$](/user/835809) 作为某日的值日班长,在自习课上管理着 $n$ 名同学。除了她以外每一名同学都监视着另一名同学。现在班花 [$\color{red}{\texttt{y}}\color{black}{\texttt{hb}}$](/user/835809) 需要选择尽量多的同学去搬卷子和答题卡,且使得对于这些同学中的每一名同学,至少有一位监视她的同学没有被选中。问班花 [$\color

2025-07-29 07:00:00 961

原创 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-

一个有向图 $G=\left(V,E\right)$ 称为半连通的 (Semi-Connected),如果满足:$\forall u,v\in V$,满足 $u\to v$ 或 $v\to u$,即对于图中任意两点 $u,v$,存在一条 $u$ 到 $v$ 的有向路径或者从 $v$ 到 $u$ 的有向路径。若 $G'=\left(V',E'\right)$ 满足 $V'\subseteq V$,$E'$ 是 $E$ 中所有跟 $V'$ 有关的边,则称 $G'$ 是 $G$ 的一个导出子图。若 $G'$

2025-07-28 17:00:00 1388 1

原创 【二分查找 树状树状】P9588 「MXOI Round 2」队列|普及+

小 C 有一个队列,他要对这个队列进行 $q$ 次操作。操作共四种,参数分别如下:$1\ x$:这是第一种操作,表示从队尾依次插入 $1,2,3,\cdots,x$;$2\ y$:这是第二种操作,表示弹出队头的前 $y$ 个元素;$3\ z$:这是第三种操作,表示查询队列中的第 $z$ 个元素;$4$:这是第四种操作,表示查询队列中所有元素的最大值。你需要帮助他维护这个队列,并对于每个第三种操作和第四种操作,输出查询的答案。

2025-07-27 17:00:00 572 1

原创 【试填法】P6747 『MdOI R3』Teleport|普及+

凯瑞甘从帝国的围攻下,击毁了大天使号,乘着雷诺的飞船逃了出来,到了休伯利安号上。“吉米?”凯瑞甘着急地四处寻找着。“很抱歉,我们没能救出他”马特·霍纳向凯瑞甘走来。“你丢下了他?”凯瑞甘回想起曾经的自己被蒙斯克丢下,便起了杀心,用灵能将马特抓了起来。“不是的,凯瑞甘,我们受到了帝国的伏击,现在必须,马上离开,过会可以回头来找他”马特解释道。“这里没有我们!你走吧,我自己去找他。”凯瑞甘放下了马特,回头坐着雷诺的回到了星球上。“警告,警告,敌军突破能量场。”帝国的舰队突破了马特舰队设下

2025-07-27 12:00:00 1497

原创 【并集查找】P4092 [HEOI2016/TJOI2016] 树|省选-

在 2016 年,佳媛姐姐刚刚学习了树,非常开心。现在他想解决这样一个问题:给定一颗有根树,根为 $1$ ,有以下两种操作:1. 标记操作:对某个结点打上标记。(在最开始,只有结点 $1$ 有标记,其他结点均无标记,而且对于某个结点,可以打多次标记。)2. 询问操作:询问某个结点最近的一个打了标记的祖先。(这个结点本身也算自己的祖先)你能帮帮她吗?

2025-07-27 07:00:00 760

原创 【排序 区间合并】P9579 「Cfz Round 1」Elevator|普及+

给定两个长度为 $n$ 的数组 $a,b$。我们称序列 $p$ 是满足条件的,设 $p$ 的长度为 $m$,当且仅当:- $p_1=1$; - 对于所有的 $1\le i<m$,都有 $|p_i-p_{i+1}|=1$; - 对于所有的 $1\le k\le n$,都存在一个有序数对 $(i,j)$,满足 $1 \le i < j \le m$ 且 $p_i=a_k$,$p_j=b_k$。你需要输出所有满足条件的序列 $p$ 中,$p$ 的长度的最小值。

2025-07-26 17:00:00 582

原创 【试填法】P8453 「SWTR-8」美元巨大|普及+

小 A 有 $n$ 个 $2$ 的幂 $a_1, a_2, \cdots, a_n$。他要在这些数之间插入 $x$ 个异或运算符和 $y$ 个或运算符,组成一个表达式。保证 $x + y = n - 1$。表达式越大,越有可能炸掉小 T 的博客。小 A 希望 **从左往右** 计算表达式时它的值最大。他想知道表达式最大可能的取值是多少,用二进制表示。他还希望你构造出这样的表达式,因为他懒得自己构造了。若存在多组构造方案,输出任意一组。

2025-07-26 13:15:00 538

原创 【线段树】P8473 [Aya Round 1 H] 破碎的历史|普及+

数轴的正半轴上有 $n$ 个互不相同的被黑白染色的特殊整点,位置从左到右依次为 $p_1,p_2,\cdots,p_n$。维护初始为空的**可重**线段集合 $S$。$q$ 次操作。操作分若干种,具体格式如下:- `1 l r`:将所有满足 $l \le x \le y \le r$ 且两端点均为特殊整点的线段 $[x,y]$ 加入 $S$。- `2 x`:撤回第 $x$ 次操作添加的线段。在初始时和每次操作后,假设你可以进行任意次(可以是零次)染色。每次从 $S$ 中选出一条线段 $[x,y

2025-07-26 09:02:30 806

原创 【树状数组 并集查找】P4145 上帝造题的七分钟 2 / 花神游历各国|省选-

"第一分钟,X 说,要有数列,于是便给定了一个正整数数列。第二分钟,L 说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作。第三分钟,k 说,要能查询,于是便有了求一段数的和的操作。第四分钟,彩虹喵说,要是 noip 难度,于是便有了数据范围。第五分钟,诗人说,要有韵律,于是便有了时间限制和内存限制。第六分钟,和雪说,要省点事,于是便有了保证运算过程中及最终结果均不超过 $64$ 位有符号整数类型的表示范围的限制。第七分钟,这道题终于造完了,然而,造题的神牛们再也不想写

2025-07-24 17:00:00 569

原创 【并集查找】 P4616 [COCI 2017/2018 #5] Pictionary|省选-

在宇宙一个不为人知的地方,有一个星球,上面有一个国家,只有数学家居住。在这个国家有$n$个数学家,有趣的是,每个数学家都住在自己的城市,且城市间无道路相连,因为他们可以在线交流。当然,城市有从$1$到$n$的编号。一位数学家决定用手机发论文,而手机将“不言而喻”自动更正成了“猜谜游戏”。不久之后,这个国家就发现了猜谜游戏。他们想要见面一起玩,于是这个国家就开始了修路工程。道路修建会持续$m$天。对于第$i$天,若$\gcd(a,b)=m-i+1$,则$a$和$b$城市间会修一条路。由于数学家们

2025-07-22 17:00:00 709 1

原创 【并集查找】 P6008 [USACO20JAN] Cave Paintings P|省选-

Bessie 成为了一名艺术家,正在创作壁画!她现在正在创作的作品是一个高为 $N$ 的方阵,方阵的每行都由 $M$ 个方格组成($1\le N,M\le 1000$)。每个方格是空的,画了石头,或者画了水。Bessie 已经画上了包含石头的方格,包括整幅画作的边界。她现在想要将某些空的方格画上水,使得如果这幅画是真实的,其中应当不存在水的净移动。定义从上到下第 $i$ 行的方格的高度为 $N+1-i$。Bessie 想要她的画作满足以下限制:假设方格 $a$ 画的是水。那么如果存在一条从 $a$ 到方

2025-07-22 07:00:00 590

原创 【并集查找 启发式合并】P6279 [USACO20OPEN] Favorite Colors G|省选-

Farmer John 的 $N$ 头奶牛每头都有一种最喜欢的颜色。奶牛们的编号为 $1\ldots N$,每种颜色也可以用 $1\ldots N$ 中的一个整数表示。 存在 $M$ 对奶牛 $(a,b)$,奶牛 $b$ 仰慕奶牛 $a$。有可能 $a=b$,此时一头奶牛仰慕她自己。对于任意颜色 $c$,如果奶牛 $x$ 和 $y$ 都仰慕一头喜欢颜色 $c$ 的奶牛,那么 $x$ 和 $y$ 喜欢的颜色相同。给定这些信息,求一种奶牛喜欢颜色的分配方案,使得每头奶牛最喜欢的颜色中不同颜色的数量最大。

2025-07-21 17:00:00 736

原创 【并集查找 二分图】P6185 [NOI Online #1 提高组] 序列|省选-

小 D 有一个长度为 $n$ 的整数序列 $a_{1 \dots n}$,她想通过若干次操作把它变成序列 $b_i$。小 D 有 $m$ 种可选的操作,第 $i$ 种操作可使用三元组 $(t_i,u_i,v_i)$ 描述:若 $t_i=1$,则她可以使 $a_{u_i}$ 与 $a_{v_i}$ 都加一或都减一;若 $t_i=2$,则她可以使 $a_{u_i}$ 减一、$a_{v_i}$ 加一,或是 $a_{u_i}$ 加一、$a_{v_i}$ 减一,因此当 $u_i=v_i$ 时,这种操作相当于没有操

2025-07-20 17:00:00 725 2

原创 【单调栈 并集查找】P6283 [USACO20OPEN] The Moo Particle S|省选-

FJ 的奶牛们最近很无聊,她们想到了一种全新的方式缓解无聊:研究高等物理!事实上,她们甚至成功发现了一种新的亚原子粒子,她们将其命名为“哞粒子”。奶牛们正在进行一项有关 $N$ 个哞粒子的实验($1\le N\le 10^5$)。粒子 $i$ 的“自旋”可以用范围在 $−10^9\ldots 10^9$ 之间的两个整数 $x_i$ 和 $y_i$ 来描述。有时两个哞粒子会发生相互作用。自旋为 ($x_i,y_i$) 和 ($x_j,y_j$) 的两个粒子之间仅当 $x_i\le x_j$ 并且 $y_i

2025-07-20 07:00:00 722 1

原创 【并集查找 启发式子合并】 P8149 泪光 | Tears|省选-

「不想回忆的事,就别再去想了吧。为了分散你的注意力,正好我有一道与人的感情相关的题目,你看看怎么样?」“… 真是令人想吐槽呢。怎么,又是那个人在支配吗?”「什么嘛,令人不快… 你以前对这种事不是有很大的热情吗?」“… 说不准。”「咳咳… 那么听好了。现在共有 $n$ 个人,每个人都有一个情绪值:用 **实数** $v_i$ 表示。现在由于一些特殊的变化,使得这些人的情感发生了纠缠…」“嗯哼?”「第一种纠缠有四个参数 $a,b,c,d$,表示:现在已知存在无穷个 $f:\R\right

2025-07-19 17:00:00 630

原创 【并集查找 二分查找】P2898 [USACO08JAN] Haybale Guessing G|省选-

## 题目描述给一个长度为 $n$ 的数组 $q$ 个条件,数组中的数字互不相同,每个条件格式形如 $l_i,r_i,x_i$ 表示这个数组的区间 $[l_i,r_i]$ 内的最小值为 $x_i$,输出最早与前面的条件有矛盾的条件的编号,如果所有条件都不发生矛盾,输出 $0$。## 输入格式第一行两个整数,分别是 $n$ 和 $q$。第二行至第 $q+1$ 行,每行三个整 $l_i,r_i,x_i$ 描述一个条件。## 输出格式仅一个整数,表示最早发生矛盾的条件的编号。如果所有

2025-07-19 07:00:00 767

原创 【时间倒流法 并集查找 重构树】P9352 [JOI 2023 Final] 训猫 / Cat Exercise|普及

有 $N$ 个猫塔,编号从 $1$ 到 $N$。塔 $i$ 的高度为 $P_i$($1 \le i \le N$)。这些塔的高度是 $1$ 到 $N$ 之间的不同整数。共有 $N - 1$ 对相邻的塔。对于每个 $j$($1 \le j \le N - 1$),塔 $A_j$ 和塔 $B_j$ 是相邻的。最开始,可以通过从一个塔移动到相邻的塔,来从一个塔到达任何其他塔。最开始,一只猫待在高度为 $N$ 的塔上。然后我们进行**猫运动**。在猫运动中,我们反复选择一个塔并在其上放置一个障碍。然而,我们

2025-07-18 15:30:00 677 1

原创 【图论 并集查找 位运算 线性基】P11146 「SFMOI Round I」Strange Train Game|省选-

SFM 号列车由 $n$ 节车厢组成,编号为 $1\sim n$。每节车厢有一个舒适度 $a_i\in \{0,1\}$,$0$ 代表不舒适,$1$ 代表舒适。管理组想要让舒适的车厢的编号尽量小,也就是说,让 $a$ 的字典序最大。为此,管理组运来了一辆 $n$ 节车厢的备用车,舒适度表示为 $b_i\in \{0,1\}$。共有 $m$ 个可进行的操作,第 $i$ 个操作的操作参数为 $l_i,r_i$,表示 $\forall l_i\le k\le r_i$,交换 $a_k,b_k$。可以**从

2025-07-18 07:00:00 945

原创 【哈希映射实现的并集查找】P5962 [BalticOI 2004] ships 船|普及+

有一个由 $n\times n$ 的正方形组成的“船”的游戏棋盘。每个单元格可能属于某艘船(黑色)或为空。如果两个边相邻的单元格都是黑色,那么这两个单元格属于同一艘船。不同船之间没有公共边。船的吨位是这些相邻的单元格数。下边样例,棋盘中(黑色)的单元格属于船,共有一艘 $29$ 吨的船,三艘 $7$ 吨的船,二艘 $4$ 吨的船,三艘 $1$ 吨的船。![样例](https://i-blog.csdnimg.cn/img_convert/a942d1db60657e3f730905549012e7c

2025-07-17 17:00:00 986

原创 【带权的并集查找】 P9235 [蓝桥杯 2023 省 A] 网络稳定性|省选-

有一个局域网,由 $n$ 个设备和 $m$ 条物理连接组成,第 $i$ 条连接的稳定性为 $w_i$。对于从设备 $A$ 到设备 $B$ 的一条经过了若干个物理连接的路径,我们记这条路径的稳定性为其经过所有连接中稳定性最低的那个。我们记设备 $A$ 到设备 $B$ 之间通信的稳定性为 $A$ 至 $B$ 的所有可行路径的稳定性中最高的那一条。给定局域网中的设备的物理连接情况,求出若干组设备 $x_i$ 和 $y_i$ 之间的通信稳定性。如果两台设备之间不存在任何路径,请输出 $-1$。

2025-07-17 07:00:00 2480 45

原创 【并集查找 启发式合并 离线查询】P4269 [USACO18FEB] Snow Boots G|省选-

到冬天了,这意味着下雪了!从农舍到牛棚的路上有 $N$ 块地砖,方便起见编号为 $1 \dots N$,第 $i$ 块地砖上积了 $f_i$ 英尺的雪。在 Farmer John 的农舍的地窖中,总共有 $B$ 双靴子,编号为 $1 \dots B$。其中某些比另一些结实,某些比另一些轻便。具体地说,第 $i$ 双靴子能够让 FJ 在至多 $s_i$ 英尺深的积雪中行走,能够让 FJ 每步至多前进 $d_i$。Farmer John 从 $1$ 号地砖出发,他必须到达 $N$ 号地砖才能叫醒奶牛们。$

2025-07-16 17:00:00 616

原创 【并集查找 离线查询】P4185 [USACO18JAN] MooTube G|省选-

在业余时间,Farmer John 创建了一个新的视频共享服务,他将其命名为 MooTube。在 MooTube 上,Farmer John 的奶牛可以录制,分享和发现许多有趣的视频。他的奶牛已经发布了 $N$ 个视频($1 \leq N \leq 10^5$),为了方便将其编号为 $1 \ldots N$ 。然而,FJ 无法弄清楚如何帮助他的奶牛找到他们可能喜欢的新视频。FJ 希望为每个 MooTube 视频创建一个“推荐视频”列表。这样,奶牛将被推荐与他们已经观看过的视频最相关的视频。FJ 设

2025-07-16 07:00:00 999 2

原创 【线段树】P1198 [JSOI2008] 最大数|普及+

现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作。语法:`Q L`功能:查询当前数列中末尾 $L$ 个数中的最大的数,并输出这个数的值。限制:$L$ 不超过当前数列的长度。$(L > 0)$2. 插入操作。语法:`A n`功能:将 $n$ 加上 $t$,其中 $t$ 是最近一次查询操作的答案(如果还未执行过查询操作,则 $t=0$),并将所得结果对一个固定的常数 $D$ 取模,将所得答案插入到数列的末尾。限制:$n$ 是整数(可能为负数)并且在长整范围内。注

2025-07-15 07:00:00 1002

原创 【贪心】P1668 [USACO04DEC] Cleaning Shifts S|普及+

一天有 $T(1\le T\le 10^6)$ 个时段。约翰正打算安排他的 $N(1\le N\le 2.5\times 10^4)$ 只奶牛来值班,打扫打扫牛棚卫生。每只奶牛都有自己的空闲时间段 $[S_i,E_i](1\le S_i\le E_i\le T)$,只能把空闲的奶牛安排出来值班。而且,每个时间段必需有奶牛在值班。那么,最少需要动用多少奶牛参与值班呢?如果没有办法安排出合理的方案,就输出 $-1$。

2025-07-15 07:00:00 831

原创 【并集查找】P1967 [NOIP 2013 提高组] 货车运输|省选-

A 国有 $n$ 座城市,编号从 $1$ 到 $n$,城市之间有 $m$ 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 $q$ 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。## 输入格式第一行有两个用一个空格隔开的整数 $n,m$,表示 A 国有 $n$ 座城市和 $m$ 条道路。 接下来 $m$ 行每行三个整数 $x, y, z$,每两个整数之间用一个空格隔开,表示从 $x$ 号城市到 $y$ 号城市有一条限重为 $z$ 的道路。

2025-07-14 17:00:00 877

原创 【记忆化搜索 BFS】P9038 [PA 2021] Butelki|普及+

Byteasar 有三瓶橙汁。他现在想通过把橙汁从一个瓶子倒入另一个瓶子的方式,让其中一个瓶子恰好装有 $k$ 升橙汁。因为他家里没有量筒,所以唯一允许的操作是在两个瓶子之间转移橙汁——要么把一个瓶子倒空,要么把一个瓶子倒满。橙汁不能撒到地上,也不能在这三个瓶子之外添加橙汁。Byteasar 现在想知道,对于每一个 $k$,最少需要转移多少次橙汁才能让三个瓶子中的一个装有恰好 $k$ 升橙汁。他希望你帮帮他。## 输入格式第一行,三个整数 $A, B, C$,表示第一、二、三个瓶子的容积;第

2025-07-14 07:00:00 1825 53

原创 【并集查找 虚拟节点】P1783 海滩防御|省选-

WLP 同学最近迷上了一款网络联机对战游戏(终于知道为毛 JOHNKRAM 每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭。于是,WLP 动用了他那丰满且充实的大脑(或许更偏向前者),想出了一个好主意,他把海滩分成垂直于海岸线的若干列,在其中的几列上放置几个信号塔,试图来监视整个海滩。然而,WLP 是一个非常心急的人,他把信号塔建好后才发现还需给信号塔供能,它们才能投入使用(这不是废话么),它们都有一个工作半径,一个圆形区域里的所有敌人都逃不过它们的监视,

2025-07-13 17:00:00 1377

原创 【前后缀分解】P6878 [JOI 2020 Final] JJOOII 2|普及+

定义有连续 $K$ 个 $\tt J$ 和连续 $K$ 个 $\tt O$ 和连续 $K$ 个 $\tt I$ 组成的字符串为 $K$ 阶 JOI 串。比如,$\tt JJOOII$ 为 $2$ 阶 JOI 串,**但是,注意要有顺序**,比如 $\tt OOJJII$ 就不是 $2$ 阶 JOI 串。现在,给定一个长度为 $N$ 的字符串 $S$,可以对他进行 $3$ 种操作:- 操作 $1$:删除 $S$ 开头的字符- 操作 $2$:删除 $S$ 结尾的字符- 操作 $3$:删除 $S$

2025-07-13 07:00:00 621

原创 【数论 线性筛】P11253 [GDKOI2023 普及组] 小学生数学题|普及+

Moon 是一名小学生,在做作业时遇到了这样一个问题,对于给定正整数 $n,k$,求出下面表达式的值:$$\sum_{i=1}^n \frac{i!}{i^k}$$其中 $i!$ 表示 $i$ 的阶乘运算,即 $i!=1\times 2\times 3\times 4...\times i$。这个式子太难了,所以 Moon 希望得到你的帮助。但是因为 Moon 只学过整数运算,还没有学过实数运算,所以希望你可以帮助他求出这个式子在模 $998244353$ 意义下的值。也就是说,如果最终的结果假如化

2025-07-12 17:00:00 1389 1

原创 【并集查找 虚拟节点】P3457 [POI 2007] POW-The Flood|省选+

你有一张 $m \times n$ 的地图,地图上所有点都被洪水淹没了。你知道地图上每个网格的海拔高度,其中一部分点属于 Byteburg 城。你需要放置尽可能少的巨型抽水机,将 Byteburg 城从洪水中解救出来。巨型抽水机会抽干该格子的所有水,直到该格子不被洪水淹没为止。水会在有公共边的格子间从高向低流动。

2025-07-12 07:00:00 364

原创 【期望 滑动窗口 单调队列】P12225 [蓝桥杯 2023 国 Java B] 游戏|普及+

熊大和熊二在玩游戏。他们将 $n$ 个正整数 $a_1, a_2, \dots, a_n$ 排成一行,然后各用一个长度为 $k$ 的框在这个数组中各自随机框选出一段长度为 $k$ 的连续子序列(随机框选指在合法的 $n - k + 1$ 个连续子序列中均匀随机)。熊大记录了他框出的 $k$ 个数中的最大值 $P$,熊二记录了他框出的 $k$ 个数的最小值 $Q$,他们突然有个疑问:$P - Q$ 的期望是多少?

2025-07-11 15:30:00 1016

原创 【单调队列 前缀和 】P8102 「LCOI2022」 Cow Insertion|普及+

文章摘要: 题目P8102「LCOI2022」Cow Insertion考察奶牛开心值计算问题。给定n头奶牛及其开心值a_i,新奶牛Bessie的开心值A,以及感染距离m。要求计算将Bessie插入不同位置后,牛棚开心值的最大值(定义为所有长度为m的连续子序列最大值的总和)。解题思路包括:1)预处理原数组的滑动窗口最大值;2)计算插入Bessie后各位置的增量;3)使用前缀和优化计算。关键点在于利用单调队列高效求取区间最大值,并通过前缀和数组快速计算差异值。时间复杂度主要取决于预处理阶段,最优可达O(n)。

2025-07-11 07:00:00 611 1

原创 【01BFS】P7284 [COCI 2020/2021 #4] Patkice II|普及+

Netflix 的经商人员想要制作一个有关三只鸭子之旅的系列改编。在 COCI20/21 的第一轮中,鸭子们位于一个洋流的地图中,鸭子们一同出行。鸭子们的起始岛屿用 `o` 表示。鸭子们可以往四个方向进行旅行,分别是:西 $\to$ 东(`>`),东 $\to$ 西(`<`),北 $\to$ 南(`v`) 和南 $\to$ 北(`^`)。当鸭子们位于洋流的点上时,它们将会向洋流的方向移动一个单位。平静的海面用 `.` 表示。如果洋流把鸭子们带到了平静的海面、到达地图之外或者回到起始小岛处,它们就会停

2025-07-10 17:00:00 754 1

原创 【前缀和 BFS 并集查找】P3127 [USACO15OPEN] Trapped in the Haybales G|省选-

Farmer John 收到了一批 $N$ 个大型干草捆($1 \le N \le 100,000$),并将它们放置在他通往谷仓的道路上的不同位置。不幸的是,他完全忘记了奶牛 Bessie 正在这条路上吃草,她现在可能被困在这些干草捆之间了!每个干草捆 $j$ 有一个大小 $S_j$ 和一个位置 $P_j$,表示它在这条一维道路上的位置。Bessie 可以在道路上自由移动,甚至可以移动到干草捆所在的位置,但她无法穿过这个位置。唯一的例外是,如果她朝同一方向连续移动 $D$ 单位的距离,她将获得足够的速度,能

2025-07-10 07:00:00 1855 44

原创 【并集查找 启发式合并】P3101 [USACO14JAN] Ski Course Rating G|省选-

滑雪场用一个M\*N(1 <= M,N <= 500)的数字矩阵表示海拔高度,每个数字表示一个范围在0 .. 1,000,000,000的高度。有些格子被指定为起点,组织者想对这些起点做难度评级。如果起点P点是一个难度级别为D的起点,则D必须是满足以下条件的一个最小值:(1)从一个格子只能滑到相邻的格子;(2)这两个格子的海拔差不超过D;(3)至少能够到达T(1 <= T <= M\*N)个格子(包括起点本身)。

2025-07-09 17:00:00 1014

喜缺全书算法册 C++实现

电子书和博文的分工。电子书以:原理、正确性证明、总结为主;博文(题解)以思路、源码、封装类(模板)、测试用例、流程图为主。 当前阶段:以二分查找为主,前缀和为辅,之后会有其它算法的。文字算法见我的博文,视频算法见我的学院课程。 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都为 n 。每次操作中,你可以选择交换 nums1 中任意两个下标处的值。操作的 开销 为两个下标的和。你的目标是对于所有的 0 <= i <= n - 1 ,都满足 nums1[i] != nums2[i] ,你可以进行 任意次 操作,请你返回达到这个目标的 最小 总代价。请你返回让 nums1 和 nums2 满足上述条件的 最小总代价 ,如果无法达成目标,返回 -1 。 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的:

2023-09-17

喜缺全书之平凡的经历最新版

《闻缺陷则喜》这本书由何志丹与魏家瑜共同创作,其核心理念是通过暴露和面对问题,促进个人和团队的成长。书名源于作者们对于缺陷的积极态度,他们认为缺陷是学习和进步的契机,而不是阻碍。在当前知识爆炸的时代,分享和交流成为提升效率的关键。 书中涵盖的工作经历部分,作者强调了工作中遇到的挑战和陷阱,这些经历不仅对于技术开发者,如C/C++/VC程序员,具有宝贵的参考价值,也适用于任何行业。作者提到,许多工作中需要但网络上难以找到的信息,正是他们书籍想要填补的知识空白。他们提倡通过阅读、实践和再传授来深化理解和掌握知识,比如,通过反复阅读多本书籍,甚至制作教学视频,以教促学。 生活中的点滴和女儿的成长部分,反映了作者对个人生活和家庭教育的关注。这部分内容可能包含如何平衡工作与家庭,以及如何培养孩子独立思考和解决问题的能力。作者的人生态度和教育观念,可能会给读者提供关于如何在生活中学习和成长的新视角。 投资理财的亏损与教训部分,则揭示了作者在财务管理和投资上的经验和反思。他们可能分享了投资失败的案例,从中提炼出的教训,旨在帮助读者避免同样的错误,提高投资决策的明智程度。这部分内容对于希望提升理

2023-08-18

闻缺陷则喜2021九月版

主要增加:C#调用托管C++,托管C++调用C++

2021-09-11

深度优先搜索(BFS)的原理和C++实现

n个端点的无向图,编号范围[0,n)。每个端点最多4条出边。edges表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有边联接。求s到d的最少需要经过多少条边。如果无法到达,请返回-1。可能有环,但无自环,重边,可能不联通。

2023-09-28

美丽塔单调栈O(n)解法

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 <= heights[i] <= maxHeights[i] heights 是一个 山状 数组。 如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组: 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j] 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k] 请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

2023-09-27

较难算法: 美丽塔 时间复杂度O(nlongn)

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足,我们称这些塔是 美丽 的: 1 <= heights[i] <= maxHeights[i] heights 是一个 山状 数组。 如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山状 数组: 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j] 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k] 请你返回满足 美丽塔 要求的方案中,高度和的最大值 。

2023-09-24

让数组不相等的最小总代价

让数组不相等的最小总代价 可运行源码,VS2022 C++17 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都为 n 。每次操作中,你可以选择交换 nums1 中任意两个下标处的值。操作的 开销 为两个下标的和。你的目标是对于所有的 0 <= i <= n - 1 ,都满足 nums1[i] != nums2[i] ,你可以进行 任意次 操作,请你返回达到这个目标的 最小 总代价。请你返回让 nums1 和 nums2 满足上述条件的 最小总代价 ,如果无法达成目标,返回 -1 。

2023-09-23

《闻缺陷则喜》之《主册》

闻缺陷则喜 1 第一章:平凡的经历 5 第二章:观念与想法 5 1. 基础 6 1.1. 认知鸿沟 6 2. 传播 6 3. 沟通 6 3.1. 淡化对错 6 3.2. 不要随意批评别人 6 3.3. 参与感 6 3.4. 如果错了,马上认错 7 3.5. 从别人的立场说服对方 7 3.6. 具体到场景 7 4. 交往与合作 7 4.1. 双赢思维 7 4.2. 合作层次 8 4.3. 能力+信息(情报)+资源=成就 8 5. 工作相关 8 5.1. 金融骗局 8 5.2. 对小白而言创业比股票危险的多 9 5.3. 投资比创业稳妥的多 9 5.4. 程序员干不到30岁 9 5.5. 忠诚度与能力 10 5.6. 拒绝无意义加班 10 5.7. 内卷的历史 11 5.8. 关于社保 11 6. 家庭相关 12 6.1. 我的遗产 12 6.2. 金钱观 12 6.3. 借贷观 13 6.4. 女儿的婚姻 13 6.5. 轶事 14 6.6. 生育观 15 6.7. 教育观 15 6.8. 不要因为担心亲友不舒服,而不指出错误 16 7. 工作技巧 16 7.1. 八二原理 16 8.

2022-09-10

《闻缺陷则喜》之《软件开发的那些人》 20230917

软件团队的那些人(理论) 4 1. 引言 5 1.1. 你的灯开着么? 5 1.2. 货车过山洞 5 1.3. 软件维护之痛 5 2. 软件过程与思想 6 2.1. 基础 6 2.2. 过程模型 12 2.3. 敏捷开发 14 2.4. 编程范式 15 2.5. 工具 16 3. 问题定义 18 3.1. 基础 18 3.2. 过滤概念(可行性分析) 20 3.3. 用户细分 22 3.4. 模式 22 4. 系统分析 23 4.1. 基础 24 4.2. 用户画像 25 1.1 RFM模型 25 4.3. 需求收集与整理 25 4.4. 系统分析 26 5. 架构设计 26 5.1. 开发期质量 26 5.2. 运行期质量 28 5.3. 沟通 35 5.4. 架构内容 36 5.5. 架构模式 38 5.6. 关于重构 39 5.7. 其它 42 6. 概要设计 44 6.1. 设计模式六大原则 44 6.2. 设计模式 45 6.3. 反模式 46 6.4. 模块划分、公共数据、资源设计、接口 46 6.5. 界面设计 49 6.6. 数据存储设计 49 6.7. 工时预估与工作

2021-08-09

二分查找旋转数组源码和视频

包括视频和三个版本的源码(初始、寻找右数组左边界、完成) 已知整数数组nums,先按升序排序后,再旋转。旋转k位后,元素分别为nums[k],nums[k+1]...nums[0]...nums[k-1]。请查找target 是否存在,如果存在返回所在索引;否则返回-1。假定nums没有重复的元素。 假定排序后的数组为{1,2,3,4,5}。 旋转0位:不变。 旋转1位:{2,3,4,5,1} 旋转2位:{3,4,5,1,2} 旋转3位:{4,5,1,2,3} 旋转4位:{5,1,2,3,4} 1.解题思路 观察后,可以得到如下结论: 旋转数组,可以拆分成左右两个升序数组,且左数组的任意元素都大于右数组的任意元素。 分两步: 一,找到数组的分界线RBegin,[0,RBegin)是左数组,[RBegin,n)是右数组。特殊情况:只有一个升序数组,则RBegin为0,左数组为空。 如果是小于等于nums.back(),在右边找;否则在左边找。升序寻找元素之前已经讲过了,就不累赘了。

2023-08-20

C# 获取C++的连续数据

C# 获取C++的连续数据。 两种方式:1,返回C++指针,2,将值存到C#的数组中。

2022-04-02

闻缺陷则喜版本号20220123

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2022-01-23

闻缺陷则喜2021年12月26.doc

闻缺陷则喜,本人拙作,注将软件工程。

2021-12-26

闻缺陷则喜20211205

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2021-12-07

Windows性能监控工具Perfmon使用

Windows性能监控工具Perfmon使用

2021-10-31

关于halcon膨胀腐蚀开闭.doc

关于halcon膨胀腐蚀开闭

2021-11-14

简单的C#类 生成对应的C#类

开发工具: C#2013 功能: 针对简单的C#类,生成对应的非托管C++类,并生成托管C++的转换函数。 应用场景: 界面层、数据层C#,逻辑层C++。 简单的C#类:类型只包括 double string List

2021-11-07

保存文件的同时删除文件,保存用时会略微升高

保存文件的同时删除文件,保存用时会略微升高。没必要花大功夫专门处理 保存500文件用时(毫秒):30906 删除文件同时,保存500文件用时(毫秒):30263 删除500文件用时(毫秒):363 保存500文件用时(毫秒):29155 删除文件同时,保存500文件用时(毫秒):29258 删除500文件用时(毫秒):426 保存500文件用时(毫秒):27992 删除文件同时,保存500文件用时(毫秒):29068 删除500文件用时(毫秒):686 保存500文件用时(毫秒):29172 删除文件同时,保存500文件用时(毫秒):31837 删除500文件用时(毫秒):337 保存500文件用时(毫秒):29373 删除文件同时,保存500文件用时(毫秒):29563 删除500文件用时(毫秒):321 保存500文件用时(毫秒):29663 删除文件同时,保存500文件用时(毫秒):30180 删除500文件用时(毫秒):350

2021-10-11

多线程样例一 读写参数文件

事情起因: 修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。 解决思路: 读文件费时间,所以开一个线程读文件。 抽象后的类似demo: 假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。 类和函数 读取文件函数: 一,List<int>增加本序号(0开始)。 二,随机生成5000整数,加到list<int>中。 三,写文件(文件名为序号,如0.txt),文件夹File。 四,Sleep(600)。 五,记录日志:本函数开始执行 时间,结束时间,序号。 六,复制List<int>到参数。 模拟图像处理函数: 一,复制参数 二,参数保存到文件,文件名list<int>第一个int,文件夹img。 三,Sleep(500)。 六,记录日志:本函数开始执行 时间,结束时间,序号。 参数类(跨线程): 一,从list<int>复制参数。 二,复制数据到list<int>。 线程: 启动线程“读取参数”线程:执行100次 读取参数功能。 启动线程“模拟图像处理”线程:执行100次 模拟图像处理。 运行预期结果: File文件夹中有0到100共101个文件。 img有约80个文件。 img有的文件,File文件夹中一定有,且完全相同。用文件夹比较工具(如:BCompare)查看。 查看日志:“读取参数”线程约60秒完成,模拟图像处理”线程约50秒完成。

2021-09-09

C#调用C++的类和函数

C#直接调用C++的函数,C#调用托管C++,C++托管调用非托管C++

2021-08-31

本博文算法对应源码单元测试用例

电子书、博文和附录分工。电子书以总结、原理、正确性证明为主;博文(题解)以思路、源码、封装类(模板)、测试用例、流程图为主。附录:封装好的类、小题题解、很长的源码和单元测试。 本书针对读者:刚刚入职的软件工程师,假定已经学完了“C++”和“算法与数据结构基础”。工程师和学生不同,工程师的首要目标的实用。工程师用到的知识是未知的,很多都是临时用一下,之后几年甚至一辈子都不会用到。受精力的限制,不可能将所有遇到的知识全部学完。本文会有超多用例,方便工程师从最相近的样例开始修改。所以,本文先讲如何使用,再讲原理,最后讲样例;设计(如:流程图)和源码会作为附录提供。

2024-07-05

位运算、状态压缩、枚举子集汇总.html

位运算、状态压缩、枚举子集汇总.html

2024-04-27

本博客配套流程图,会经常更新

Bob 站在单元格 (0, 0) ,想要前往目的地 destination :(row, column) 。他只能向 右 或向 下 走。你可以为 Bob 提供导航 指令 来帮助他到达目的地 destination 。 指令 用字符串表示,其中每个字符: 'H' ,意味着水平向右移动 'V' ,意味着竖直向下移动 能够为 Bob 导航到目的地 destination 的指令可以有多种,例如,如果目的地 destination 是 (2, 3),"HHHVV" 和 "HVHVH" 都是有效 指令 。 然而,Bob 很挑剔。因为他的幸运数字是 k,他想要遵循 按字典序排列后的第 k 条最小指令 的导航前往目的地 destination 。k 的编号 从 1 开始 。 给你一个整数数组 destination 和一个整数 k ,请你返回可以为 Bob 提供前往目的地 destination 导航的 按字典序排列后的第 k 条最小指令 。

2024-04-24

利用二分查找解决H指数问题

利用二分查找解决H指数问题。

2024-01-01

搜索矩阵C++实现:二分查找Z形查找

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。

2023-12-17

长度最短的子数组C++实现

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 示例 2: 输入:target = 4, nums = [1,4,4] 输出:1 示例 3: 输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0 提示: 1 <= target <= 109 1 <= nums.length <= 105 1 <= nums[i] <= 105

2023-12-10

[二分查找双指针]LeetCode881: 救生艇

给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船数 。

2023-12-03

两数之和 - 输入有序数组

给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。 以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。

2023-11-26

C++二分查找算法:132 模式

给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。

2023-11-12

C++算法:第 N 位数字原理、源码、测试用例

给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字。 示例 1: 输入:n = 3 输出:3 示例 2: 输入:n = 11 输出:0 解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。 提示: 1 <= n <= 231 – 1

2023-11-05

C++二分查找算法应用:最长递增子序列 原理、源码、测试用例

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: 输入:nums = [0,1,0,3,2,3] 输出:4 示例 3: 输入:nums = [7,7,7,7,7,7,7] 输出:1 参数范围: 1 <= nums.length <= 2500 -104 <= nums[i] <=104

2023-10-29

二分应用:峰值查找 原理、源码、测试用例

1. 题目 长度为n的数组nums,请返回任意一峰值的索引。符合以下条件之一i便是峰值的索引。 n等于1 i等于0 n>1 i等于0 nums[i] >nums[i+1] n>1 i等于n-1 nums[i] > nums[i-1] 0<i<n-1 nums[i]>nums[i-1] nums[i]>nums[i+1] 题目保证nums[i]不等于nums[i+1]。 2. 分析 假定: nums[left,r)符合nums[left]>nums[left-1],且nums[r-1]>nums[r]。显然初始情况nums[0,n)符合。 推论一:如果[left,r)的长度为1,则left就是返回的索引。 推论二:假定left < mid<r。如果mid[mid] > mid[mid-1],则nums[mid,r)也符合假定。如果mid[mid] < mid[mid-1],则nums[left,mid)也符合假定。 推论三:推论二也可以也可以理解成分别抛弃[left,mid)和[mid,r)。令mid = left+(r-left)/2,由于r-left>=2,所以left<mid<

2023-10-22

C++算法:前缀和基础

长度为n的数组nums,共有n+1个以nums[0]开始的子数组。索引范围分别为[0,i),i取值区间[0,n]。preSum[i]记录子数组[0,i)的和。比如:nums = {1,2,3,4},则preSum = {0,1,3,6,10}。通过preSum,我们可以求任意nums的子数组和。子数组[i,j)等于子数组[0,j)减去[0,i),也就是子数组[i,j)的和等于preSum[j] – preSum[i]。如果i等于j,则preSum[i]-preSum[i],和为0,符合计算公式。如果i大于j,则非法,需要提前排除。

2023-10-15

时间复杂度O(40n*n)的C++算法:修改图中的边权

给你一个 n 个节点的 无向带权连通 图,节点编号为 0 到 n - 1 ,再给你一个整数数组 edges ,其中 edges[i] = [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 部分边的边权为 -1(wi = -1),其他边的边权都为 正 数(wi > 0)。 你需要将所有边权为 -1 的边都修改为范围 [1, 2 * 10^9] 中的 正整数 ,使得从节点 source 到节点 destination 的 最短距离 为整数 target 。如果有 多种 修改方案可以使 source 和 destination 之间的最短距离等于 target ,你可以返回任意一种方案。 如果存在使 source 到 destination 最短距离为 target 的方案,请你按任意顺序返回包含所有边的数组(包括未修改边权的边)。如果不存在这样的方案,请你返回一个 空数组 。 注意:你不能修改一开始边权为正数的边。

2023-10-14

多源最短路径的原理及C++实现

当一层循环执行完后,m_vMat[i1][i2]表示经过[0,i)中的任意个点的最短距离。 初始状态下, m_vMat[i1][i2]表示直达的最小距离,也就是经过0个点。 通过[0,i)中任意个点,i1到i2的最短路径记为PrePathi1i2,通过[0,i+1)中任意个点,i1到i2的距离的路径为Pathi1i2,如果Path不经过Pathi1i2,则和PrePathi1i2相同。如果经过则可以拆分成{i1…i}+{i…i2},显然{i1…i}是PrePathi1i,{i…i2}是PrePathii2,否则替换成PrePathi1i和PrePathii2。 m_vMat同时表示PreMath和Math,如果m_vMat[i1][i]或m_vMat[i][i2]已经更新,会带来错误的结果么?结果是不会,会更新但值不变。 当i1等于i时: m_vMat[i][i2] = min(…, m_vMat[i][i] + m_vMat[i][i2]); 由于m_vMat[i][i]为0,所以右式就是左式。 当i2等于i时,类似。

2023-10-04

堆优化迪氏最短单源路径原理及C++实现

4.1. 时间复杂度 O(ElogE),E是边数。适用与稀疏图。 4.2. 使用前提 边的权为正。可以非连通,非连通的距离为-1。 4.3. 原理 优选队列(小根堆)记录两个数据:当前点到源点距离,当前点。先处理距离小的点;如果距离相等,先处理谁都可以。可以用pair记录,不用重写小于。优先队列只记录如下情况的距离: 一,{0,源点}。 二,任意点的最短距离和可以直达的边。 如果是有向图,则入队数量等于边数,计算出起点最短路径的那一轮。无向图,则翻倍。显然出队数量等于入队数量。优先队列入队和出队时间复杂度都是O(logn),故总时间复杂度为O(nlogn)。

2023-10-03

.有向图计数优化版原理及C++实现

不需要拓扑排序,也不需要并集查找,直接dfs了。完成以下三个职责: 一,DFS那些端点在环上。 二,DFS环上各点此环的长度。 三,DFS非环上各点。

2023-10-02

有向图访问计数的原理及C++实现

现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。 给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。 想象在图上发生以下过程: 你从节点 x 开始,通过边访问其他节点,直到你在 此过程 中再次访问到之前已经访问过的节点。 返回数组 answer 作为答案,其中 answer[i] 表示如果从节点 i 开始执行该过程,你可以访问到的不同节点数。 2 <= n <= 100000 无自环。

2023-10-01

朴素迪氏最短单源路径的原理及C++源码及测试用例

Dijkstra算法,翻译为迪杰斯特拉或狄克斯特拉。在下驽钝,记不住如此长的翻译,故简称迪氏。 3.1.时间复杂度 O(n2),端点数的平方。 3.2.使用前提 边的权为正。可以非连通,非连通的距离为-1。

2023-09-30

01BFS最短距离原理和C++实现

n个端点的无向图,编号范围[0,n)。Edges0表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有路联接。Edges1表示{{n1,n2},...{n3,n4}}表示n1和n2,n3和n4之间有损坏的路连接。要想让s和d之间至少有一条通道,最小需要维修多少条路。如果无法到达,请返回-1。可能有环,但无自环,重边,可能不联通。

2023-09-29

空空如也

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

TA关注的人

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