首页 > 其他分享 >[ARC163D] Sum of SCC

[ARC163D] Sum of SCC

时间:2024-10-15 20:32:42浏览次数:7  
标签:竞赛 个点 指向 ARC163D Sum SCC 条边 集合

神秘 trick 题。

根本想不到的 Trick:一个竞赛图的强连通分量的个数等价于:

把整个图分成两个集合 \(S,T\), \(u\in S,v\in T\),满足所有边的方向为 \(u\to v\)。

为什么是对的呢?考虑到把整个图缩点以后就是一个 DAG,而且还是一个竞赛图,然后竞赛图的拓扑序是唯一的,找到一个拓补序的分界点,我们把它割断成两个子集,那么前半部分的都是指向后面的。容易发现,这是唯一合法的方案。最后要减去空集的情况。

问题转化成:将 \(n\) 个点,分成两个集合,两个集合之间的边是单向的,小指大只有 \(m\) 条边。

考虑刷表 dp。

定义状态 \(f_{i,j,k}\) ,集合 \(S\) 有 \(i\) 个点,集合 \(T\) 有 \(j\) 个点,有 \(k\) 条边是小点指向大点。
现在与 \(f_{i-1}\) 就是多了 \(i-1\) 条新边,考虑转移。

  • \(1.\) 把 \(i\) 扔进 \(S\)。
    此时,\(i\to T\) 的边的固定方向的,是大指小,枚举有多少条边是指向自己的就行。
    转移方程式为:
    \(f_{i,j,k}=\sum\limits_{l=0}^{i-1} f_{i-1,j,k-l}\times C_{i-1}^l\)

  • \(2.\) 把 \(i\) 扔进 \(T\)。
    仍然枚举边数量。
    \(f_{i,j,k}=\sum\limits_{l=0}^{j-1} f_{i,j-1,k-i-l}\times C_{j-1}^l\)

然后转移 \(O(n)\),总状态为 \(O(n^2m)\),时间复杂度 \(O(n^5)\)。

整个题难点在第一步

标签:竞赛,个点,指向,ARC163D,Sum,SCC,条边,集合
From: https://www.cnblogs.com/g1ove/p/18468385

相关文章

  • Solution - Codeforces 1628D2 Game on Sum (Hard Version)
    首先来考虑Easy。注意到的是最后输出的答案要求是模意义下的,这说明对于实数二分的做法都已经用不了了。注意到\(n,m\le3000\)的数据范围,于是一个想法就是考虑DP之类的算法。考虑到B选了\(+/-\)实际上就代表着下一轮的\(m\)是否会\(-1\),于是可以设状态为\(f_{i......
  • 基于Python的自然语言处理系列(26):Get to the Point Summarization
            在本篇文章中,我们将实现经典的"GettothePoint"模型,该模型最初发表于GettothePoint:SummarizationwithPointer-GeneratorNetworks。这是当时最著名的摘要生成模型之一,至今仍有很多人使用其Pointer-Generator架构作为他们模型的一部分。1.模型简介......
  • Walter Russell's 'The Universal One' - Detailed Summary
    1.宇宙统一理论Russell试图提出一个全面的理论来解释宇宙的所有方面。他认为:所有自然现象,无论是物质的、能量的还是精神的,都遵循相同的基本原理。宇宙是一个统一的、有机的整体,其中所有部分都相互关联和相互依存。他的理论试图涵盖从原子结构到星系形成,从生命起源到意......
  • 【原创】ns3 + sumo + ns3gym编译冲突解决方案
    Copyright(c)2024,China,HenanUnivercityofScienceandTechnology河南科技大学,中国在搞ndnSIM当毕业设计,ns3+ndnsim+sumo+ns3-gym编译存在冲突:from../contrib/ndn4ivc/apps/fgfxf-rsu.cc:25:./ns3/sumo-TraCIConstants.h:328:21:error:exp......
  • python——celery异常consumer: Cannot connect to redis://127.0.0.1:6379/1: MISCON
    1.检查Redis日志:查看Redis的日志文件(通常位于/var/log/redis/redis-server.log或者根据你的配置文件中指定的位置),以获取有关错误原因的详细信息。2.检查磁盘空间:确保你的服务器有足够的磁盘空间。使用以下命令检查磁盘使用情况:bashdf-h如果磁盘空间不足,清理一些不必......
  • abc351F Double Sum
    给定数组A[N],对所有1<=i<j<=N,计算max(A[j]-A[i],0)之和。2<=N<=4E5;0<=A[i]<=1E8分析:从左到后依次处理,用平衡树维护左侧A[i],对于A[j],只需要统计值小于A[j]的那些A[i]即可,可以合并求和过程转化为前缀和。#include<bits/stdc++.h>usingi64=longlong;template<typename......
  • 112. Path Sum
    GiventherootofabinarytreeandanintegertargetSum,returntrueifthetreehasaroot-to-leafpathsuchthataddingupallthevaluesalongthepathequalstargetSum.Aleafisanodewithnochildren.Example1:Input:root=[5,4,8,11,null,13,......
  • LeetCode 209 Minimum Size Subarray Sum 题目解析和python代码
    题目:Givenanarrayofpositiveintegersnumsandapositiveintegertarget,returntheminimallengthofasubarraywhosesumisgreaterthanorequaltotarget.Ifthereisnosuchsubarray,return0instead.Example1:Input:target=7,nums=[2,3,......
  • ubuntu更新报错Hash Sum mismatch
    查了一圈,应该是FW的问题,/etc/apt/sources.list更换成清华的源就可以了(阿里不行):debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/jammymainrestricteduniversemultiversedeb-srchttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/jammymainrestricteduniversem......
  • 2017中国大学生程序设计竞赛 - 女生专场(SDKD 2024 Summer Training Contest K2)
    A-AutomaticJudge题意\(n\)个问题,\(m\)条记录,每条记录有题号、时间、状态,第一次\(AC\)的时候计入罚时,其他没发罚\(20\)分钟。求队伍过题数和罚时。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve()......