<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Graph on Inftopia</title>
    <link>https://inftress.pages.dev/tags/graph/</link>
    <description>Recent content in Graph on Inftopia</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 05 Jun 2026 23:29:43 +0800</lastBuildDate>
    <atom:link href="https://inftress.pages.dev/tags/graph/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>路南柯</title>
      <link>https://inftress.pages.dev/posts/%E8%B7%AF%E5%8D%97%E6%9F%AF/</link>
      <pubDate>Fri, 05 Jun 2026 23:29:43 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/%E8%B7%AF%E5%8D%97%E6%9F%AF/</guid>
      <description>&lt;p&gt;牛牛题。&lt;/p&gt;
&lt;p&gt;首先你把答案 reverse 一下，就是指定一个根，然后每次扩展一个相邻于当前连通块的点。&lt;/p&gt;
&lt;p&gt;先考虑如何 check。&lt;/p&gt;
&lt;p&gt;首先一个 native 的想法是考虑两种方向相反的 DFS 序。&lt;/p&gt;
&lt;p&gt;然后你发现一个菊花图就把你 hack 了。&lt;/p&gt;
&lt;p&gt;然后另一个 native 的想法是用两个根这样做。&lt;/p&gt;
&lt;p&gt;但实际上你通过跑一下你发现还是会出问题，然后你看一下相同的两棵树，你发现他们一般动一两条边，然后他们分别连的都是同一连通块。&lt;/p&gt;
&lt;p&gt;这启示我们从一个点连到哪个点进行考虑。&lt;/p&gt;
&lt;p&gt;我们注意到我们根据一个拓扑序来构造一棵树的话，本质上你是把每个点选择一个前面的点挂上去。其实跟整个树的结构无关。你只关心每一步了连到了哪个点。&lt;/p&gt;
&lt;p&gt;然后我们就想，如果对于两个拓扑序来讲一个点都能挂到前面的两个点上，那是不是就不唯一了呢？这个感觉是非常对的。&lt;/p&gt;
&lt;p&gt;形式化的来讲，你对每个 $i$ 都找出 $i$ 在每个拓扑序中的位置，然后把前面的所有数的集合交起来。如果存在一个 $i$ 使得该集合大小超过 $1$ 则不合法。&lt;/p&gt;
&lt;p&gt;然后你趁洗澡的时候对拍，然后回来发现拍了四万多组了都没出问题，就把他当对的了。&lt;/p&gt;
&lt;p&gt;然后接下来的思路，你灵光一现，想到我们其实不怎么关心是怎么遍历的，我们关心的是从哪个点开始遍历的。&lt;/p&gt;
&lt;p&gt;然后我们就想一条边他是怎么被经过的。然后你发现除了连接叶子的边其他边都要被正反经过一遍。&lt;/p&gt;
&lt;p&gt;我们把叶子剥了，把每个里叶子都作为起点扫一遍就能做到。（这个显然是下界）&lt;/p&gt;
&lt;p&gt;然后我们发现这个图的性质很优雅。我们发现这样一并把原来的性质满足了。&lt;/p&gt;
&lt;p&gt;但我们还要考虑叶子怎么放置。我们发现我们直接紧贴着放在里叶子的后面即可。因为你发现这样一定不会重。&lt;/p&gt;
&lt;p&gt;然后就做完了。&lt;/p&gt;
&lt;p&gt;啊？&lt;/p&gt;
&lt;p&gt;等等，然后怎么做答案呢。&lt;/p&gt;
&lt;p&gt;直接做即可。&lt;/p&gt;
&lt;p&gt;我好厉害。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你发现你输出解会有点问题。&lt;/p&gt;
&lt;p&gt;但不慌，你扰动一下，你每次把 $G$ 翻转一下。&lt;/p&gt;
&lt;p&gt;然后就过了！！！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Forbidden Tournament</title>
      <link>https://inftress.pages.dev/posts/forbidden-tournament/</link>
      <pubDate>Thu, 04 Jun 2026 19:57:25 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/forbidden-tournament/</guid>
      <description>&lt;p&gt;首先“三元环”触发关键词。&lt;/p&gt;
&lt;p&gt;在竞赛图中若有环则一定有三元环。&lt;/p&gt;
&lt;p&gt;然后我们再套路地把竞赛图进行 SCC 缩点是一条链。&lt;/p&gt;
&lt;p&gt;很容易知道如果一个 SCC 不是链的最后一个他只能是一个点，因为若不是，则有三元环，而他们都指向后面，因此不合法。&lt;/p&gt;
&lt;p&gt;显然我们要重点考虑最后一个 SCC。&lt;/p&gt;
&lt;p&gt;然后呢就不会了，看一眼题解。&lt;/p&gt;
&lt;p&gt;我们现在考虑找 SCC 中的一个点 $u$，并把他的前驱后继分开来。&lt;/p&gt;
&lt;p&gt;显然前驱必须是一条链。&lt;/p&gt;
&lt;p&gt;后继呢可以手玩。假设不是一条链，则一定有一个三元环，如果这个三元环都指向了一个点，那不合法，如果没有的话，则一定指到了 $u$ 的前驱，然后我们拿 $u$，那个前驱，指向前驱的点作为三元环，如果满足一定条件他们一定都指向三元环下一个点。反正啰里啰唆的，分讨即可。懒得写。于是后继也必须是一条链。&lt;/p&gt;
&lt;p&gt;然后怎么做呢？&lt;/p&gt;
&lt;p&gt;然后我们通过手玩发现其实这个条件是充要的。具体来讲你反证法然后一定能推出一个矛盾。&lt;/p&gt;
&lt;p&gt;然后他就像一个厚厚的甜甜圈一样，基于一个环。&lt;/p&gt;
&lt;p&gt;主要是怎么 DP 的问题。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;这个不愧是2000pts的题目完全做不出来。&lt;/p&gt;
&lt;p&gt;严肃研读题解。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;大哥我错了，这个题怎么这么难。&lt;/p&gt;
&lt;p&gt;你主要是你对这个甜甜圈计数，&lt;/p&gt;</description>
    </item>
    <item>
      <title>全对最大流</title>
      <link>https://inftress.pages.dev/posts/%E5%85%A8%E5%AF%B9%E6%9C%80%E5%A4%A7%E6%B5%81/</link>
      <pubDate>Thu, 07 May 2026 22:36:29 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/%E5%85%A8%E5%AF%B9%E6%9C%80%E5%A4%A7%E6%B5%81/</guid>
      <description>&lt;p&gt;牛牛题。&lt;/p&gt;
&lt;p&gt;先讲我自己想到的部分。&lt;/p&gt;
&lt;p&gt;首先最大流肯定不好做，做最小割。&lt;/p&gt;
&lt;p&gt;然后显然有最小割树。&lt;/p&gt;
&lt;p&gt;但现在问题出在如何求最小割上。&lt;/p&gt;
&lt;p&gt;一个很大的问题是，你求最小割至少都要考虑所有的即一定是 $\Omega(n)$。&lt;/p&gt;
&lt;p&gt;然而如果这样时间复杂度就已经爆了。&lt;/p&gt;
&lt;p&gt;我一直的思路都是用数据结构扫描线啊啥的维护发现很难做。（也许可以做？我好像看到有人用 DS，有可能是把不同的步骤在 DS 上合在一起吧。）&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;然后题解做了个很厉害的事情，他说：&lt;strong&gt;平面图我们要想到对偶图&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;好的我们考虑他的对偶图。&lt;/p&gt;
&lt;p&gt;我们考虑我们求一次最小割，是在做什么事情。&lt;/p&gt;
&lt;p&gt;我们发现在对偶图上就是把 $s$ 和 $t$ 伸两条射线出去，然后做对偶图，就是上下两个无限平面的最短路。&lt;/p&gt;
&lt;p&gt;如果只是想到这里，我们只是得到了一个 $\Omega(n\log n)$ 的算法，但其实无论如何，这已经优于我们的朴素 DS 了（而且我们的朴素 DS 很难写）。&lt;/p&gt;
&lt;p&gt;我们想一下我们的根本诉求是什么，我们的根本诉求是，把这个最小割树转化为其他东西，而不是直接求最小割（因为这样一定会爆）。&lt;/p&gt;
&lt;p&gt;但若是我们继续想。我们递归之后做的是什么呢，我们做的其实是把左右分成两半，然后对于左边，就把右边整个缩为一个点，右边同理。&lt;/p&gt;
&lt;p&gt;我们首先就是想到，我们无论怎么分，实际上最多只有 $n$ 个无限平面，我们干脆提前分好，然后我们发现我们变成了是选两个无限平面使得最短路最短。&lt;/p&gt;
&lt;p&gt;实际上这就是在树上找最近的两个叶子。&lt;/p&gt;
&lt;p&gt;我们试图继续用这种找两个的方式选，然后我们想到我们既然不要这两个点，那我们把这俩合起来。我们看其他最小的两个叶子。&lt;/p&gt;
&lt;p&gt;Creatively，我们发现我们在做 kruskal。&lt;/p&gt;
&lt;p&gt;然后我们不想做 kruskal。&lt;/p&gt;
&lt;p&gt;面对 MST 最好用的就是 boruvka。&lt;/p&gt;
&lt;p&gt;然后我们使用 boruvka。&lt;/p&gt;
&lt;p&gt;我们如何找树上每个叶子最近的不同块的叶子呢。&lt;/p&gt;
&lt;p&gt;我们可以使用 DP，从下到上做一遍，从上到下做一遍，记录最小次小即可。&lt;/p&gt;
&lt;p&gt;然后我们就建出来了合并无限平面的树。&lt;/p&gt;
&lt;p&gt;但我们要得是最小割树。&lt;/p&gt;
&lt;p&gt;于是我们再对偶回去即可。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;就这个题最本质的 idea 是，你可以“发现你在做一个经典问题然后换一种解法”。比如把 kruskal 换成 boruvka。&lt;/p&gt;
&lt;p&gt;这仍然是灵活迁用，更本质的来说，这是把方法之间建立活的联想连接，而不是感觉连接。这对发散性思维有很高的要求。、&lt;/p&gt;
&lt;p&gt;然后其他一些重要的是平面图用对偶图。&lt;/p&gt;
&lt;p&gt;还有就是提前处理的思想，把无限平面分成 $n$ 个也可能是一个卡点。&lt;/p&gt;
&lt;p&gt;还有呢，就是一个贯彻思想的做法。比如你第一下找的是最近叶子，那你肯定也希望接下来也是最近叶子。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;透过现象看本质&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cactus Meets Torus</title>
      <link>https://inftress.pages.dev/posts/cactus-meets-torus/</link>
      <pubDate>Tue, 05 May 2026 22:48:39 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/cactus-meets-torus/</guid>
      <description>&lt;p&gt;如果前面的是怪物题，那这个是克苏鲁题，不可名状，只能感性理解。&lt;/p&gt;
&lt;p&gt;&lt;del&gt;什么逆天东西啊喂！&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;首先我们得先看懂题，注意 Torus 指的不是球，他实际上你硬要画出来是一个&amp;hellip;甜甜圈。&lt;/p&gt;
&lt;p&gt;但我们还是在矩形纸上考虑问题吧，不然太难描述了。&lt;/p&gt;
&lt;p&gt;我们可以把他假想成，一个无限延伸的平面，上下左右都复制当前纸，这样直观一点。&lt;/p&gt;
&lt;p&gt;好的，我们想象一下，一个环可以长什么样。&lt;/p&gt;
&lt;p&gt;他首先不能在纸上是一个圆对吧这样切了就爆了。&lt;/p&gt;
&lt;p&gt;他能是怎么样的？他肯定至少要能穿过边界对吧，然后呢他这个要求联通，等价于说你要按照这个环切了之后呢，存在一个连通块，满足他进行在 $x$ 和 $y$ 上都进行类似 mod 的操作重叠在一起后覆盖了整个矩形。&lt;/p&gt;
&lt;p&gt;或者本质一点，他应该是，所有的连通块，全等？？？&lt;/p&gt;
&lt;p&gt;我感觉是这样的。&lt;/p&gt;
&lt;p&gt;然后我们发现他实际上画在这个无限平面上呢，是类似一堆这个同一个方向的线，类似平行，但是可能扭来扭去。&lt;/p&gt;
&lt;p&gt;显然我们可以在无限平面上任意平移这个我们考虑的矩形。&lt;/p&gt;
&lt;p&gt;然后显然我们根据拓扑原理，你是直的是弯的的是根本不重要的，你只要交点结构一样即可。&lt;/p&gt;
&lt;p&gt;你交点的这个位置是不重要的，重要的是你交点在整个图形中的层次与地位。&lt;/p&gt;
&lt;p&gt;然后你发现就非常多的画环的方式都是等价的，比如一个横线是一个等价类，一个竖线是一个等价类，一个对角线也是一个等价类。他们的特点都是可以通过连续地平移矩阵，或者连续地扰动这个路径得到同一个地方。&lt;/p&gt;
&lt;p&gt;然后我们有一个非常重要的感性理解，就是其实像比如说无论是横的啊，竖的啊，对角线的啊，还是缠两圈的对角线啊，甚至自己跟自己交错的神秘斜线。他们本质相同。我们都可以通过旋转和缩放我们所观测的这个矩形来发现，比如一个对角线，你给他转一下再缩放一下，对角线就变为竖线了。&lt;strong&gt;因此我们可以选择最简单的横线和竖线思考问题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;然后我们可以开始思考问题了。&lt;del&gt;是的现在才开始思考问题。&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;我们注意到，如果等价类 $\ge 3$ 个，那他们必定共点。&lt;/p&gt;
&lt;p&gt;不然因为你不能边相交，三个拓扑上方向不同的一定会围出我们不想要的环。&lt;/p&gt;
&lt;p&gt;然后我们发现这等价于仙人掌上所有环共点。&lt;/p&gt;
&lt;p&gt;我们试图构造，发现这是好构造的，你就钦定一个中心点，然后向外辐射即可。&lt;/p&gt;
&lt;p&gt;只要满足这个条件就是 Yes。&lt;/p&gt;
&lt;p&gt;显然剩下的树你随便挂在一边即可。&lt;/p&gt;
&lt;p&gt;如果等价类 $=2$ 个，那他们要么共点，要么其中一个等价类只有一个环，且与其他所有的环相交。&lt;/p&gt;
&lt;p&gt;理由同理，如果共点的话我们在第一个情况就算过了，不用管。&lt;/p&gt;
&lt;p&gt;如果是一个等价类只有一个环，且与其他所有的环相交，这相当于一个川中间画了一横。&lt;/p&gt;
&lt;p&gt;然后这个东西你发现你可以看成是，仙人掌上的所有其他环都挂在一个特定的环上。&lt;/p&gt;
&lt;p&gt;这个也是好判的，你记 $i$ 在 $c_i$ 个环里，你只要看 $\sum c_i = sz+cnt-1$ 即可。&lt;/p&gt;
&lt;p&gt;然后如果只有一个等价类，我们发现他一定得是一堆竖线，然后一个横线段（不是横直线）贯穿。&lt;/p&gt;
&lt;p&gt;这等价于所有的环都挂在一条链上，你建出圆方树进行简单的树形 DP 即可。&lt;/p&gt;
&lt;p&gt;然后我们终于理解完了这个题目。但也只是理解，至于证明？&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我们伟大的信息学，不需要证明。&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Tri Colored Paths</title>
      <link>https://inftress.pages.dev/posts/tri-colored-paths/</link>
      <pubDate>Mon, 04 May 2026 23:32:34 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/tri-colored-paths/</guid>
      <description>&lt;p&gt;非常非常厉害厉害的题目，总算是自己做出来了个厉害题。&lt;/p&gt;
&lt;p&gt;首先显然正难则反。&lt;/p&gt;
&lt;p&gt;嗯。我们一个想法呢，是说，我们可以按点分类，分成 A 点：连接 1 2 的点，B 点：1 3, C 点：2 3, X 点：1 2 3, O 点：无。&lt;/p&gt;
&lt;p&gt;然后呢，我们想一下啊，我们发现我们只要把 ABC 中不同的两个点，连起来，然后就一定是一条合法路径。&lt;/p&gt;
&lt;p&gt;当然这个有 corner case，就是如果是个三元环，那就爆了。&lt;/p&gt;
&lt;p&gt;为什么呢？因为两点都连有不同的两种颜色，所以满足。&lt;/p&gt;
&lt;p&gt;所以似乎这个如果有 ABC 点的话，那只能有这一种，换句话来说只能有两种颜色。&lt;/p&gt;
&lt;p&gt;好的，然后 X 点同理，你发现，这个如果有 X 点似乎其他必须得是 O 点。&lt;/p&gt;
&lt;p&gt;然后你写完发现样例过不了。&lt;/p&gt;
&lt;p&gt;为啥呢，因为 corner case。&lt;/p&gt;
&lt;p&gt;然后你很容易发现，我们如果是 X 点的情况，因为 corner case，我们如果两个不同颜色的边连到了同一个点双里，那就爆了，因为会形成一条路。&lt;/p&gt;
&lt;p&gt;然后另一种情况就是，你根本没有 X 点，你可能是有一堆奇奇怪怪的三元环（如样例 1），他因为俩点接到同一个点上了，所以爆了。&lt;/p&gt;
&lt;p&gt;然后你怎么着一下，然后就把这个情况全部判掉，然后就过了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blue and Red Tree</title>
      <link>https://inftress.pages.dev/posts/blue-and-red-tree/</link>
      <pubDate>Mon, 04 May 2026 23:23:05 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/blue-and-red-tree/</guid>
      <description>&lt;p&gt;怪物题目。&lt;/p&gt;
&lt;p&gt;我一直在想正着做，然后就爆了。&lt;/p&gt;
&lt;p&gt;我们考虑反着做。&lt;/p&gt;
&lt;p&gt;首先你解放一条边，显然这条边一定得是红蓝边重合。&lt;/p&gt;
&lt;p&gt;然后你解放倒数第二条边，然后你发现他一定得是红蓝边分别连接了两个相同的这个解放块。&lt;/p&gt;
&lt;p&gt;然后你发现你相当于是合并解放块的过程。&lt;/p&gt;
&lt;p&gt;然后你干脆啊，直接就给他启发式合并，把整个块变成一个点，然后他就相当于要求红蓝边是重边。&lt;/p&gt;
&lt;p&gt;显然因为两个是树，所以呢你根本不用区分哪个是红边哪个是蓝边，直接找重边即可，因为树不可能有重边。&lt;/p&gt;</description>
    </item>
    <item>
      <title>School Road</title>
      <link>https://inftress.pages.dev/posts/school-road/</link>
      <pubDate>Mon, 04 May 2026 23:16:14 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/school-road/</guid>
      <description>&lt;p&gt;广义串并联好题。&lt;/p&gt;
&lt;p&gt;首先我们看到 $m \le n + 13$ 这个就是广义串并联。&lt;/p&gt;
&lt;p&gt;其次，对于这种东西，我们可以把点双搞出来，这个简单路径的限制如果是难点可以用点双解决。&lt;/p&gt;
&lt;p&gt;首先肯定不可能出点双再进来。&lt;/p&gt;
&lt;p&gt;你考虑我们发现如果 $1$ 和 $n$ 不在一个点双以内，那我们直接就连一条 $1,n,L$ 的路径显然不会更改答案。&lt;/p&gt;
&lt;p&gt;所以我们直接考虑它点双。&lt;/p&gt;
&lt;p&gt;好的然后我们既然用的是这个广义串并联，我们就要考虑 $K_4$。&lt;/p&gt;
&lt;p&gt;然后你发现，如果有这个 $K_4$ 就一定存在 $&amp;gt;L$ 的路径。&lt;/p&gt;
&lt;p&gt;然后我们知道他是广义串并联，然后我们缩图即可。&lt;/p&gt;
&lt;p&gt;而且注意到 $1$ 和 $n$ 是可以不缩的，如果不缩导致不行说明也是不行的（类似 $K_4$ 的分析）&lt;/p&gt;
&lt;p&gt;重边显然是要 check 边长短。&lt;/p&gt;
&lt;p&gt;二度点显然把两个长度加起来即可。&lt;/p&gt;
&lt;p&gt;这个告诉我们的就是说这个 VCC 非常的好用在简单路径中。&lt;/p&gt;
&lt;p&gt;以及这个广义串并联看到部分分就要想到。&lt;/p&gt;
&lt;p&gt;或者更本质的来说，你如果是要搞类似这种就是一排排过去，长得跟毛细血管一样的，那就是可以试试广义串并联。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cost Performance Flow</title>
      <link>https://inftress.pages.dev/posts/cost-performance-flow/</link>
      <pubDate>Mon, 04 May 2026 23:14:00 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/cost-performance-flow/</guid>
      <description>&lt;p&gt;唐唐题。&lt;/p&gt;
&lt;p&gt;考虑直接开导！&lt;/p&gt;
&lt;p&gt;我们很容易发现我们画在图像上，我们一定是优先节省这个费用最大的东西。&lt;/p&gt;
&lt;p&gt;然后我们把每次增广的这个流过去的流量与每流一次的代价啥的都算出来。&lt;/p&gt;
&lt;p&gt;然后直接贪心即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Boxes and Balls</title>
      <link>https://inftress.pages.dev/posts/boxes-and-balls/</link>
      <pubDate>Sat, 02 May 2026 20:40:42 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/boxes-and-balls/</guid>
      <description>&lt;p&gt;很厉害的题目。&lt;/p&gt;
&lt;p&gt;首先我们知道他是网络流。&lt;/p&gt;
&lt;p&gt;怎么流呢。&lt;/p&gt;
&lt;p&gt;其实最重要的呢，是这个条件如何刻画。&lt;/p&gt;
&lt;p&gt;我们要把这个条件转化为什么东西来进行这个刻画。&lt;/p&gt;
&lt;p&gt;一个 native 的想法是，你列成一个矩阵分别是当前阶段的这些位置和当前时间，然后像网格图一样穿起来。&lt;/p&gt;
&lt;p&gt;但你发现这样是完全不可行滴！因为你根本不知道每个位置现在是什么数。&lt;/p&gt;
&lt;p&gt;然后我们发现一个重要的观察，你要么是从上一个同一个数那里继承，然后就一直从那个时候一直霸占这个位置，要么呢就是现在开始，踢掉一个并放进去。&lt;/p&gt;
&lt;p&gt;还有就是，你发现关心这个具体是哪个位置放的是哪个数是十分愚蠢的，我们发现他只是一个霸占的过程，在你霸占的过程中呢你可以直接看作这个位置消失了，那你根本不需要知道哪个位置放的是哪个数，你只要知道有多少个位置被霸占即可。&lt;/p&gt;
&lt;p&gt;然后你发现你变成了，给一堆区间，然后你可以选一些区间（即霸占他们）并获得一些受益，但同一个时间不能选很多区间。&lt;/p&gt;
&lt;p&gt;然后这个就是经典模型，从 $1$ 到 $n$ 穿起来即可，容量为 $m-1$，代价为 $0$，然后在旁边接一些边，容量为 $1$ 费用为 $-w$，可以把这个流量引到旁边去表示你用了这个区间。&lt;/p&gt;
&lt;p&gt;注意我们同时只能有 $m-1$ 个被霸占，因为你每次还要放一个数进去。&lt;/p&gt;
&lt;p&gt;注意 $s,t$ 可能重合，有可能会死循环，注意特判或者多拉一条边。&lt;/p&gt;</description>
    </item>
    <item>
      <title>排序大师</title>
      <link>https://inftress.pages.dev/posts/%E6%8E%92%E5%BA%8F%E5%A4%A7%E5%B8%88/</link>
      <pubDate>Fri, 01 May 2026 23:41:21 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/%E6%8E%92%E5%BA%8F%E5%A4%A7%E5%B8%88/</guid>
      <description>&lt;p&gt;厉害厉害厉害！&lt;/p&gt;
&lt;p&gt;就是在面对这类的排列的题目，尤其是排序类，一个非常重要的方向就是从图理论出发。&lt;/p&gt;
&lt;p&gt;非常经典的就是 $i\to p_i$ 建边，然后每次交换就是可以合并两个环或者拆开两个环，目标是 $n$ 个自环。&lt;/p&gt;
&lt;p&gt;然而在这里你发现首先你这样连会导致 $O(n)$ 个边的变动，不可取，我们希望有常数级别的边的变动。&lt;/p&gt;
&lt;p&gt;然后一个 native 的想法是你考虑 $p_i\to p_{i+1}$。于是我们得到了一个下界，大概是与目标图的不同边的数量除以 $4$ 向上取整。&lt;/p&gt;
&lt;p&gt;但我们很容易发现这个下界相当的松，构造十分的困难况且我们还能举出反例，我们需要一个紧一些的下界，而且另一个原因是，这个链的形状我们实在是不太好刻画，这个链的信息实际上蛮多的，这也是导致下界很松的原因之一。&lt;/p&gt;
&lt;p&gt;我们想要的是环，最好是数个数，但正常的方法不行了，怎么办？&lt;/p&gt;
&lt;p&gt;这个题目牛逼的来了，他指出：我们可以 $p_i + 1\ to p_{i+1}$。&lt;/p&gt;
&lt;p&gt;注意这个是在排列前后添了 $0,n+1$ 的情况下。&lt;/p&gt;
&lt;p&gt;我们发现他本质上来讲，是把一条链，进行了错位，把链变成了自环。&lt;/p&gt;
&lt;p&gt;其根本思想在于，我们可以通过改变连边方式本身来改变图的性质。&lt;/p&gt;
&lt;p&gt;这确乎是一个范式的突破。我们的图理论与排列理论相结合，不再拘泥于那一种的连边方式，而是我们可以尝试多种的，不同的，适配每个题目性质的连边方式，这是前所未有的。&lt;/p&gt;
&lt;p&gt;我做这个题目的时候就卡在我根本没有向这个地方想，被这个集体无意识给禁锢住了。&lt;/p&gt;
&lt;p&gt;一个顺畅的思考路径应该是想到 native 的想法后想到这个链化为自环然后做完。&lt;/p&gt;
&lt;p&gt;这个连边方式跟这个题目的性质有什么适配性呢？这还得从 $i\to p_i$ 说起。&lt;/p&gt;
&lt;p&gt;我们说到，这个东西最大的问题在于，他需要更改 $O(n)$ 个，而其根本是他是对段进行操作。&lt;/p&gt;
&lt;p&gt;然后我们自然地想到这个我们要把段转化为单点，自然是使用差分。这是差分思想的一种灵活运用。&lt;/p&gt;
&lt;p&gt;我们发现我们可以让每个连边关联于他前后的东西，我们最好是希望在进行一系列操作之后，中间的影响恰好被抵消掉了，我们不用管。&lt;/p&gt;
&lt;p&gt;然后我们想着要把 $p_i$ 和 $p_{i+1}$ 关联起来，既然如此，我们 $p_i\to p_{i+1}$ 如何？&lt;/p&gt;
&lt;p&gt;这就诞生了我们的链。&lt;/p&gt;
&lt;p&gt;但我们想要的是环啊，于是我们就把他挪一下，让&lt;strong&gt;最终图&lt;/strong&gt;全是自环。&lt;/p&gt;
&lt;p&gt;我们注意到，&lt;strong&gt;原图是不重要的，最终图是重要的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;然后变成了 $p_i + 1\to p_{i+1}$。&lt;/p&gt;
&lt;p&gt;然后我们发现这个题已经做完了一大半。&lt;/p&gt;
&lt;p&gt;我们发现我们每个操作本质上相当于交换对应的两个对这个出边，自然也就是最多多出现两个自环，且奇偶性一定不会变。&lt;/p&gt;
&lt;p&gt;我们发现这个下界紧得多，我们试图构造。&lt;/p&gt;
&lt;p&gt;我们发现我们本质上就是要每次多两个自环，也就是多两个 $x\to x+1$,$y\to y+1$。&lt;/p&gt;
&lt;p&gt;然后我们不难这样构造：我们找到第一个前面有比他大的东西的 $x$，再找 $x$ 前面最大的 $y$，然后你发现 $x-1$ 在 $y$ 前面，$y+1$ 在 $x$ 后边，然后我们按顺序这样拼一下，把 $x-1\to x$ 拼起来，$y\to y+1$ 拼起来即可，不难发现在没排序的情况下总是能找到的。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
