<?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>Counting on Inftopia</title>
    <link>https://inftress.pages.dev/tags/counting/</link>
    <description>Recent content in Counting on Inftopia</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 04 Jun 2026 19:57:25 +0800</lastBuildDate>
    <atom:link href="https://inftress.pages.dev/tags/counting/index.xml" rel="self" type="application/rss+xml" />
    <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>Sightseeing Plan</title>
      <link>https://inftress.pages.dev/posts/sightseeing-plan/</link>
      <pubDate>Thu, 04 Jun 2026 19:46:13 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/sightseeing-plan/</guid>
      <description>&lt;p&gt;有趣题。&lt;/p&gt;
&lt;p&gt;首先答案相当于要求三个矩阵里枚举三个点，然后求 AB 的路径数乘上 BC 之间的路径数加起来。&lt;/p&gt;
&lt;p&gt;然后这个东西呢，我们先考虑假如 A 和 B 都固定的情况，我们发现是一个矩形。&lt;/p&gt;
&lt;p&gt;然后我们根据一个叫曲棍球棒恒等式的东西我们很容易写出其为：&lt;/p&gt;
&lt;p&gt;$$
f(x_r + 1, y_r + 1) + f(x_l, y_l) - f(x_r + 1, y_l) - f(x_l, y_r + 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;然后就大概是超大常数 $O(n)$。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Random Kth Max</title>
      <link>https://inftress.pages.dev/posts/random-kth-max/</link>
      <pubDate>Thu, 04 Jun 2026 19:19:51 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/random-kth-max/</guid>
      <description>&lt;p&gt;简单题。&lt;/p&gt;
&lt;p&gt;首先看到这个题目第一眼就要想到结论：$n$ 个在 $[0,1]$ 间均匀随机的数的第 $k$ 小期望是 $\cfrac{k}{n + 1}$。&lt;/p&gt;
&lt;p&gt;这个范围相当宽裕，我们只要给出一个 $O(\text{poly } n)$ 的即可&lt;/p&gt;
&lt;p&gt;然后我们考虑枚举答案所在区间，我们现在枚举到了 $[t - 1, t]$。&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>彩绘</title>
      <link>https://inftress.pages.dev/posts/%E5%BD%A9%E7%BB%98/</link>
      <pubDate>Sat, 30 May 2026 23:33:04 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/%E5%BD%A9%E7%BB%98/</guid>
      <description>&lt;p&gt;简单题，但脑抽了。&lt;/p&gt;
&lt;p&gt;这个题目本质上就是让我们算这个每个位置的系数。（因为他可以通过类似哈希来检验你的系数，就算你有不算出系数的方法，那通过他的不同数据一定能唯一确定系数）&lt;/p&gt;
&lt;p&gt;好的我们很容易得到一个 $O(n^3)$ 的做法，设 $f_{i,j}$ 为第 $i$ 轮第 $j$ 个数的系数，然后枚举你当前选择哪一个。然后便是 $O(n^2)$ 的。你发现对每个 $f_{i,j}$ 他只从 $f_{i-1,j}$ 和 $f_{i-1,j-1}$ 转移过来。然后就方了。&lt;/p&gt;
&lt;p&gt;如何继续优化？显然你可以把每轮的除以 $i-1$ 和除以 $2$ 拎出来。然后你对着剩下的表进行干瞪。你通过瞎试发现他一定是 $\binom{i-1}{j-1}$ 的倍数。然后你对他除完之后的进行因式分解。然后发现除完之后是两个双阶乘的积。然后你就糊里糊涂地做完了，但并不知道这个组合意义。这不乏为一种方法但多少有点唐了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;然后说正解，实际上你发现我糖丸了。你还可以继续拎。具体思想就还是&lt;strong&gt;考虑不变量&lt;/strong&gt;以及&lt;strong&gt;图论建模&lt;/strong&gt;。我们把他变成在自动机上走，然后你发现你每增加 $j$ 就会乘上固定贡献，每增加 $i-j$ 也会乘上固定贡献。于是我们发现这两个贡献与你走的路径无关，乘上的东西都是一定的。然后贡献就是两个双阶乘，而你的路径数就是 $\binom{i-1}{j-1}$。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Permutation and Minimum</title>
      <link>https://inftress.pages.dev/posts/permutation-and-minimum/</link>
      <pubDate>Thu, 21 May 2026 22:35:45 +0800</pubDate>
      <guid>https://inftress.pages.dev/posts/permutation-and-minimum/</guid>
      <description>&lt;p&gt;首先我们发现其实这个东西是可以分类讨论的。&lt;/p&gt;
&lt;p&gt;对于 $(2i-1,2i)$ 这样的二元组讨论。&lt;/p&gt;
&lt;p&gt;若两者都不是 $-1$ 则直接跳过。（甚至可以直接离散化掉）&lt;/p&gt;
&lt;p&gt;若两者都是 $-1$ 则可以放在一起算。具体来讲，我们可以数一共有多少个这样的二元组，然后我们只要算全是 $-1$ 的答案，然后再乘上把这些二元组去掉之后的答案即可。（因为对于其他的二元组确定的情况下，实际上的方案数总是相同的）&lt;/p&gt;
&lt;p&gt;比如有 $k$ 个二元组，然后你考虑钦定哪些数作为二元组中的更小值，然后再排列一下。钦定的方案数为 $Catalan(k)$。因为注意到你本质上要求对于任意前缀，选的作为最小值的个数 $\ge$ 作为最大值的个数。然后排列即为 $k!$，即答案为 $Catalan(k)k!$。&lt;/p&gt;
&lt;p&gt;现在我们只要专心考虑恰好有一个 $-1$ 的即可。&lt;/p&gt;
&lt;p&gt;我们先考虑简单的情况，假设整个排列都是一个 $-1$ 和一个非 $-1$。&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;p&gt;设 $f_{i,j,k}$ 为当前处理了值域在 $[i,n]$ 内的东西，其中钦定 $j$ 个 $[1,i)$ 中的黑点，$k$ 个 $[i,n]$ 内的黑点已经被预留了。&lt;/p&gt;
&lt;p&gt;然后直接转移即可。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;调半天过不了样例。&lt;/p&gt;
&lt;p&gt;问题在于，实际上你不能在 dp 的时候简单地只看你留了几个来考虑这个 $(-1,-1)$ 二元组，你要把他放进去算，因为实际上这个预留与实际上还是有一些区别的，因为你可能可以填上这个东西。&lt;/p&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>
  </channel>
</rss>
