首页 > 其他分享 >题解:P10998 Tuple+

题解:P10998 Tuple+

时间:2024-09-26 10:13:46浏览次数:8  
标签:le Tuple 题解 复杂度 三元组 ge P10998 text deg

\(\text{Link}\)

有意思,记录一下。

题意

给出 \(m\) 个互不相同的无序三元组 \((u,v,w)\),求有多少无序四元组 \((a,b,c,d)\) 使得三元组 \((a,b,c),(a,b,d),(a,c,d),(b,c,d)\) 均存在。

\(m\le 3\times 10^5\)。

Bonus:\(m\le 2\times 10^6\)。

题解

回忆无向图三元环计数的做法,使所有边从度数小的点指向度数大的点,其中度数相同的比较编号。此时图形成 DAG,三元环中一个点指向另外两个点,枚举该点 \(u\),标记其所有出点,枚举 \(u\to v\to w\) 即可。

考虑计算复杂度,令定向后每个点的出度为 \(\text{deg}'(u)\):

  • 如果 \(\text{deg}(u)\le m^{1/2}\),显然 \(\text{deg}'(u)\le \text{deg}(u)\le m^{1/2}\)。
  • 如果 \(\text{deg}(u)\ge m^{1/2}\),那么定向后每一个 \(u\to v\) 均有 \(\text{deg}(v)\ge \text{deg}(u)\ge m^{1/2}\),所以 \(\text{deg}'(u)\le m^{1/2}\)。

所以 \(\text{deg}'(u)\le m^{1/2}\)。我们在 \(O(m^{3/2})\) 的时间复杂度内枚举到了每一个三元环,同时这也说明了三元环数量的上界。

回到本题,限制为三元组,相对难以处理,我们考虑强制满足一维的限制以化为二维的问题。假如枚举 \(a\),则对于所有的三元组 \((a,x,y)\),我们在 \(x,y\) 间连边,枚举建出的图上的所有三元环并检查这三点是否包含在同一三元组内即可。时间复杂度 \(O(m^{3/2})\)。

考虑类似三元环计数的优化:我们令 \(\text{deg}(i)\) 表示包含 \(i\) 的三元组数量,则我们将每个三元组内部重排使得其 \(\text{deg}(u)\le \text{deg}(v)\le \text{deg}(w)\),其中度数相同的比较编号。

考虑计算复杂度,令 \(\text{deg}'(u)\) 表示重排后三元组 \((u,x,y)\) 的数量:

  • 如果 \(\text{deg}(u)\le m^{2/3}\),显然 \(\text{deg}'(u)\le \text{deg}(u)\le m^{2/3}\)。
  • 如果 \(\text{deg}(u)\ge m^{2/3}\),那么重排后每一个 \((u,v,w)\) 均有 \(\text{deg}(w)\ge\text{deg}(v)\ge \text{deg}(u)\ge m^{2/3}\),所以 \(\text{deg}'(u)\le m^{2/3}\)。

那么 \(\text{deg}'(u)\le m^{2/3}\) 且 \(\sum\text{deg}'(u)=m\),复杂度为 \(\sum(\text{deg}'(u))^{3/2}\),这在 \(\forall i\in[1,m^{1/3}],\text{deg}'(i)=m^{2/3}\) 时取得最大值 \(O(m^{4/3})\)。

如果本题中三元组变为 \(k\) 元组,我们仍可依照类似的方式将其变为 \(k-1\) 元组的子问题,时间复杂度可做到 \(O(m^{1/k+1})\)。

标签:le,Tuple,题解,复杂度,三元组,ge,P10998,text,deg
From: https://www.cnblogs.com/cyffff/p/18432910

相关文章

  • 题解:P10590 磁力块
    \(\text{Link}\)来自传奇讨论区大神@年年有年的\(O(n\logn)\)做法!题意有\(n+1\)块磁铁\(0\simn\),每个磁铁都有四个属性\((d_i,m_i,p_i,r_i)\),如果你拥有了磁铁\(i\),那么你就能吸引并拥有所有满足\(d_j\ler_i,m_j\lep_i\)的磁铁\(j\),初始你只拥有磁铁\(0\),求最......
  • 题解:CF1799F Halve or Subtract
    \(\text{Link}\)介绍一下一种高维wqs的方法。此方法来自@YeahPotato的专栏严谨的WQS二分方法。题意给定一个长为\(n\)的序列\(v_{1\dotsn}\),三个常数\(d,a,b\)。你可以执行若干次以下两种操作:选择\(1\lei\len\),令\(v_i\gets\lceil\frac{v_i}{2}\rceil\)。......
  • 勇攀山丘小队(翻越篇)1——题解
    前言胸有丘壑,气吞山河。正片A题:考虑使用DP,由于题目给了2个a不能在一起的限制,所以每次接上一个a都要考虑一下前面的一个状态是否也是a。于是就可以使用\(f,g\)数组,\(f_i\)表示第\(i\)个字母是a的合法情况有多少,\(g_i\)表示第\(i\)个字母是b或c的合法......
  • P8907 [USACO22DEC] Making Friends P 题解
    P8907[USACO22DEC]MakingFriendsP题解我们考虑维护每个\(i\),在\(i\)的后面有多少个点和它有朋友关系。初步的想法是每删掉一个人就给集合里所有的点连边。但是我们发现这样太不优了,有很多边会重复连很多次。优化的想法是对于\(i\),删去之后连的边就成了一个完全图,于是......
  • [GYM103119K][2020 ICPC Asia Macau] Candy Ads 题解
    题意简述有\(n\)个广告,每个广告在一个时间段内占据二维平面的矩形,\(m\)个约束表示两个广告至少有一个要被选择,选择若干广告,满足所有约束且同时刻不能有重叠的广告。Kosaraju算法流程在正图上跑一遍DFS,给每个位置打上时间戳从时间戳大到小枚举点,在反图上跑DFS,这个时候对......
  • 题解 洛谷P3398 仓鼠找 sugar
    原题链接:P3398仓鼠找sugar题解里大部分都是用的lca,然而我看不懂那些关于lca的性质是怎么证明出来的。不过这题可以直接用树链剖分来写,把模板套上去就好了。题意为查找两条路径是否存在公共点,我们只需要把其中一条路径上的点都赋值为1,然后查询另一条路径上的点的总和,如果总和......
  • [ARC062F] AtCoDeerくんとグラフ色塗り 题解
    思路对于一个点双,我们可以发现:假如它是一个简单环,那么它只能旋转这一个环,我们可以使用polya定理计算。假如它是多个环的组成,那么它的颜色可以随意调动,任何的情况都可以得到,那么假如说有\(m\)条边,方案数则为\(\binom{m+k-1}{k-1}\),我们只考虑每一种颜色的出现次数。对于......
  • 题解 QOJ5034【>.<】/ BC2401D【可爱路径】
    必可赛前公益众筹赛第一试Dhttps://qoj.ac/problem/5034,2022-2023集训队互测Round6(Nov12,2022)题目描述这原本是一道简单的最短路问题,但是由于种种地域文化,宗教信仰以及政治因素,原来一些或许可以行走的路径不能通行了。我们定义禁止路径为连续的经过一些特定的点的......
  • Luogu_P10977(AcWing_299) Cut the Sequence 题解
    解题思路考虑线性dp。首先如果存在\(a_i>m\),那肯定不满足条件,输出\(-1\)。设\(f_i\)表示前\(i\)个数分成若干段,然后每段最大数之和,其中每段内的整数之和不超过\(m\)。\(f_i\)肯定是由\(f_j\)(\(1\lej<i\))转移过来的,也就是前\(j\)个数分好后再加上\((j,i]\)这一......
  • 【OJ题解-1】稀疏矩阵乘法
    一、试题题面计算两个稀疏矩阵相乘,输出相乘的结果【输入输出约定】输入:第一行输入三个正整数p、q、r,表示p×q和q×r的两个矩阵相乘;(约定0<p,q,r≤1000)然后是第一个矩阵的输入,首先是一个整数m,表示矩阵一有m个非零元素;然后是m行,每行三个整数i,j,d,表示第i行,第j列的元素为d(约定......