首页 > 其他分享 >【竞赛图】【DP】ARC163D Sum of SCC 题解

【竞赛图】【DP】ARC163D Sum of SCC 题解

时间:2023-10-05 20:46:03浏览次数:42  
标签:dots 连通 竞赛 个点 ARC163D 题解 Sum 条边 集合

ARC163D

发现这个竞赛图一定能被分为两个集合 \(A\),\(B\)。满足 \(\forall u\in A,v\in B\),均有 \(u\to v\in E\)。答案就是划分这两个集合的方案数。

证明:

首先,竞赛图缩完点后一定是一条链,对强连通分量进行标号,满足编号小的强连通分量指向编号大的强连通分量。不妨令竞赛图 \(G\) 缩完点后的强连通分量编号分别为 \(a_1,a_2\dots a_k\)。则这个图 \(G\) 存在 \(k\) 个 \(i\) 能分出两个满足条件的集合,即 \(\{a_1\dots a_i\}\) 和 \(\{a_{i+1}\dots a_k\},i\in[1,k]\)。而分出的 \(k\) 种集合 \(A\),\(B\) 是与其形成双射关系的,故可转化。

这时就很好用动态规划求解了,定义 \(f_{i,j,k}\) 表示 \(i\) 个点的竞赛图中,\(A\) 集合有 \(j\) 个点,有 \(k\) 条边满足 \(u<v\) 的方案数。

采用刷表法,考虑转移。

若第 \(i+1\) 个点在 \(A\) 中,内部有 \(c\) 条边连向 \(i+1(c\le j)\),则对 \(f_{i+1,j+1,k+c}\) 产生贡献。

若第 \(i+1\) 个点在 \(B\) 中,内部有 \(c\) 条边连向 \(i+1(c\le i-j)\),则对 \(f_{i+1,j,k+j+c}\) 产生贡献。

可得到方程:

\(f_{i+1,j+1,k+c}\leftarrow f_{i+1,j+1,k+c}+f_{i,j,k}\times\dbinom{j}{c}\)

\(f_{i+1,j,k+j+c}\leftarrow f_{i+1,j+1,k+j+c}+f_{i,j,k}\times\dbinom{i-j}{c}\)

答案容易得到:\(\sum\limits_{i=0}^{n-1} f_{n,i,m}\)。

时间复杂度:\(\mathcal{O}(n^5)\)。

空间复杂度:\(\mathcal{O}(n^4)\)。

评测记录

标签:dots,连通,竞赛,个点,ARC163D,题解,Sum,条边,集合
From: https://www.cnblogs.com/Pengzt/p/solution-at-arc163-d.html

相关文章

  • 【整除分块】【DP】ABC239Ex Dice Product 2 题解
    ABC239H简单题。令\(f_i\)表示乘到\(\gei\)的期望。容易得到\(f_i=\dfrac{\sum\limits_{j=1}^{n}f_{\lceil\frac{i}{j}\rceil}}{n}\)。将\(f_i\)移到同一边,去掉系数,有\(f_i=\dfrac{n\sum\limits_{j=2}^{n}f_{\lceil\frac{i}{j}\rceil}}{n-1}\)。提出\(\frac{n-1}{n......
  • 【字符串】【哈希】ABC284F ABCBAC 题解
    ABC284F这题的正解是\(Z\)函数。如果\(str=T+T\)的话,若可以找到连续的分别长为\(n\)的两段,且这两段可通过\(1\)次翻转变为相同的字符串,那么便一定有解,否则无解。暴力判断是\(\mathcal{O}(n)\)的,时间复杂度直接上天。可以用哈希\(\mathcal{O}(1)\)地判断出两个......
  • 【组合计数】ARC058D Iroha and a Grid 题解
    ARC058D简单组合计数。可以先把矩形旋转一下,变为求从\((1,1)\)走到\((n,m)\),只能向上或向右移动。且不经过左上角的\(A\timesB\)的禁区的方案数,对\(10^9+7\)取模。假如没有\(A\timesB\)的禁区的话,那么方案数为\(C_{n+m-2}^{n-1}\)。就是一共要走\(n+m-2\)......
  • 「题解」Codeforces Round 883 (Div. 3)
    A.EscalatorConversationsProblem[题目](RudolphandCuttheRope)Sol&Code绳子长度大于钉子高度的要剪#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}in......
  • 「题解」Codeforces Round 888 (Div. 3)
    A.EscalatorConversationsProblem题目Sol&Code签到#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}intT,n,m,k,h;intmain(){scanf(......
  • 「题解」Codeforces Round 891 (Div. 3)
    A.ArrayColoringProblem题目Sol&Code只有数列的和为偶数时才符合要求,即有任意个偶数,偶数个奇数。将这些数分成两部分,发现两部分初始值\(0\)为偶数,偶数不会影响奇偶性,故需要偶数个奇数。#include<bits/stdc++.h>#defineN51typedeflonglongll;intmin(inta,......
  • P9712 「QFOI R1」贴贴 の 题解
    这道题比较典型。大概就是你先输出solution-,之后再处理其他的。之后遍历字符串,如果发现是大写,就给转成小写,之后输出,如果发现是减号,就输出字符串,都不是就直接输出该字符串的第\(i\)个字符。#include<iostream>#include<string>usingnamespacestd;strings;intlen;int......
  • 实现文档AI搜索,提高问题解决效率
    在当今的数字时代,以AI为动力的文档搜索变得越来越重要。随着在线提供信息的指数增长,传统的搜索方法通常效率低下且耗时。实施文档AI搜索可以显著提高搜索相关文档的效率和有效性。|在网站中实施文档AI搜索的好处很多首先,它通过提供无缝且直观的搜索过程来增强用户体验。借助文档AI......
  • 【基环树 | 题解】P5022 [NOIP2018 提高组] 旅行
    前言一日知基环树弱,固补题。关于基环树基环树定义一个环,环上每个点都有一颗以该点为根的树,如下图为一棵基环树关于基环树常规思路通常来说基环树常规思路是先处理环上树的结果,后通过树的结果来处理换上结果。具体处理方式依照题目来定。然而只是通常来说因为基环树的问......
  • CF1249(Div. 3) 题解(A to D)
    \(\texttt{EF}\)忘(不)记(会)写了。AYetAnotherDividingintoTeams题解题目大意有一个长度为\(n\)的序列\(a_1,a_2,\cdots,a_n\),将他们分为若干组,使得每一组没有两个数的差为\(1\),使分的组数尽可能少。解题思路排完序后对于任意\(1\lei<n\)均有\(a_i\)与\(a_{i......