首页 > 其他分享 >竞赛图 SCC 计数(ARC163D)

竞赛图 SCC 计数(ARC163D)

时间:2024-07-05 10:54:39浏览次数:16  
标签:个点 ARC163D scc 计数 SCC 条边 正向

我们先端上来一个美味的结论。

对于一张有 \(n\) 个点的竞赛图 \(G\),它的 SCC 数量等于:

  • 将 \(G\) 的 \(n\) 个点划分为两个点集 \(S\) 和 \(T\),且要求 \(|T|>0\),对于任意的 \(u\in S\) 和 \(v\in T\),\(u\) 和 \(v\) 之间的连边方向为 \(u\to v\) 的方案数。

考虑将图 \(G\) 进行缩点,竞赛图缩点后的形态一定是 \(scc_1\to scc_2\to\ldots\to scc_k\) 这么一条链,同时链上每个点再向后面所有点连边。然后我们任选一个 \(0\le p<k\),将 \(scc_p\) 及它前面的 \(scc\) 内部的点划分到 \(S\),将 \(scc_{p+1}\) 到 \(scc_k\) 内部的点划分到 \(T\),容易发现和上面的方案正好构成双射,且 \(p\) 的取值恰好为 \(k\) 种,也就是 SCC 个数。

ARC163D Sum of SCC

呃,根据上面的结论,直接数划分点集且恰好 \(m\) 条正向边的方案数。

直接设 \(f_{i,j,k}\) 表示当前已经给前 \(i\) 个点划分好了点集,此时 \(|S|=j\),有 \(k\) 条正向边的方案数,转移考虑刷表,讨论 \(i+1\) 号点放到哪个集合:

  • 放到 \(S\) 集合中,连到 \(T\) 内的 \(i-j\) 条边全是反向边,连到 \(S\) 内的 \(i\) 条边任意定向,枚举 \(x\) 条边为正向边,有 \(f_{i+1,j+1,k+x}\leftarrow f_{i,j,k}\times\binom{j}{x}\)。

  • 放到 \(T\) 集合中,从 \(S\) 内连来的 \(j\) 条边全是正向边,连到 \(T\) 内的 \(i-j\) 条边任意定向,枚举 \(x\) 条边为正向边,有 \(f_{i+1,j,k+j+x}\leftarrow f_{i,j,k}\times\binom{i-j}{x}\)。

时间复杂度 \(O(n^5)\)。

提交记录

标签:个点,ARC163D,scc,计数,SCC,条边,正向
From: https://www.cnblogs.com/los114514/p/18285341

相关文章

  • 前端学习-flutter学习-002-计数器示例学习
    学习参考链接拆解代码学习Material是一种标准的移动端和web端的视觉设计语言,Flutter默认提供了一套丰富的Material风格的UI组件。//导入了MaterialUI组件库。import'package:flutter/material.dart';main函数为应用程序的入口。main函数中调用了runApp方法......
  • 题解 - 数字计数
    题目思路简析正解是数位dp,但是我不太会,所以我打分块。考虑从\(10^6\)到\(2\times10^6\)和从\(3\times10^6\)到\(4\times10^6\),其中真正的区别只有观察到数据范围是\(10^{12}\),分为一些块,每块长\(10^6\)会比较均衡,所以共有\(10^6\)个块。最差情况是\(n=10^6+1......
  • 题解 - 数字计数
    题目思路简析正解是数位dp,但是我不太会,所以我打分块。考虑从\(10^6\)到\(2\times10^6\)和从\(3\times10^6\)到\(4\times10^6\),其中真正的区别只有观察到数据范围是\(10^{12}\),分为一些块,每块长\(10^6\)会比较均衡,所以共有\(10^6\)个块。最差情况是\(n=10^6+1......
  • 14.计数器拓展练习
    (1)Visio视图:(2)Verilog代码:modulecounter_ten(clk,reset_n,led_out);inputclk;inputreset_n;outputregled_out;//0.5s=500_000_000ns=20ns*25_000_000;需要25位的寄存器去储存。reg[24:0]cnt;regen_cnt;regcn......
  • 13.计数器设计、标志脉冲信号的使用
    (1)设计定义:设计一个计数器模块,实现每0.5秒跳转一次的功能,可以用LED灯的翻转来体现,要求初始状态为LED熄灭。(2)visio视图:(3)Verilog代码:modulecounter(clk,reset_n,led_out);inputclk;inputreset_n;outputregled_out;//0.5s=500_000_000ns=......
  • 样本空间的计数
    前言在统计样本空间数时,需要考虑是否有顺序和是否放回,同时请注意列举法、描述法,表格法,树状图的合理运用。这些方法都是高一初次学习需要切实掌握的方法,等到了高二或者高三,对思维的要求提高以后,更多的会用到加法计数原理和乘法计数原理这两个计数原理,更多见的是使用排列数和组合数......
  • verilog写12 小时时钟(带上午/下午指示器)计数器(HDLbits Count clock)
    Createasetofcounterssuitableforuseasa12-hourclock(witham/pmindicator).Yourcountersareclockedbyafast-running clk,withapulseon ena wheneveryourclockshouldincrement(i.e.,oncepersecond).reset resetstheclockto12:00AM.......
  • 8路编码器脉冲计数器或16路DI高速计数器,Modbus RTU模块 YL69-485/232
    特点:●编码器解码转换成标准ModbusRTU协议●可用作编码器计数器或者转速测量●支持8个编码器同时计数,可识别正反转●也可以设置作为16路独立DI高速计数器● 编码器计数值支持断电自动保存● DI输入和电源之间3000V隔离●通过RS-485/232接口可以清零和设置计数......
  • 美丽下标对的数目(Lc2748)——计数
    给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0≤i<j<nums.length ,如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 ,则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。返回 nums 中 美丽下标对 的总数目。对......
  • 数位统计DP——AcWing 338. 计数问题
    数位统计DP定义数位DP(DigitalDP)是一种用于解决与数字的数位相关问题的动态规划算法。它将数字的每一位看作一个状态,通过转移状态来计算满足特定条件的数字个数或其他相关统计信息。运用情况统计满足特定条件的数字个数,例如在给定范围内有多少个数字满足某些数位特征。计算......