首页 > 其他分享 >[ABC306G] Return to 1

[ABC306G] Return to 1

时间:2023-06-29 09:04:58浏览次数:43  
标签:小环 10 方程 Return gcd ABC306G 大环 正整数

[ABC306G] Return to 1

题意

给一张有向图,问有没有方案在从 \(1\) 号点出发,在图上刚好走 \(10^{10^{100}}\) 步之后重新回到 \(1\) 号,无重边,无自环。

题解

显然这个题目肯定和环有关,我们设第 \(i\) 个经过 \(1\) 的环的长度为 \(x_i\) ,经过的次数为 \(a_i\) ,显然我们要求的是一下方程有无解。

\[\sum a_ix_i = 10^{10^{100}} \]

根据裴蜀定理这个方程有解当且仅当

\[gcd(x_1,x_2,x_3...)|10^{10^{100}} \]

但是有解不一定有用,还要有非负整数解才行,下面有一个结论是我以前不知道的。

\[ax+by=c(a,b,c\in \mathbb{Z},gcd(a,b)=1) \]

这个方程有正整数的充分不必要条件是 \(c>ab\) 证明不会证,可以拓展到多个。
这道题的 \(c\) 足够大,所以可以保证解是正整数,所以我们要保证 \(gcd(x_1,x_2,x_3...)\) 的因数只有 \(2,5\) 。
但这样还没完,我们会发现有些不包含 \(1\) 的环也是可以走很多次的,这也能对答案做贡献。
我们将不包含 \(1\) 的环称为小环,包含 \(1\) 的环称为大环,由于小环不包含 \(1\) 显然只能依附于大环之上。
而我们走过一次小环所在的大环之后,这个小环就可以随意走了。
而这个方程又一定会有正整数解,所以每一个大环都至少会走一次,所以小环也是可以随便走的,小环就和大环等价了。
到最后我们只需要将图中所有一定不会走到的点删掉,然后对所有的环长求一个 \(gcd\) 即可。 code

...

感觉裴蜀定理与这样的方程是好想的,小环与大环的关系其实也是水到渠成的,有正整数解这个结论可以记一记。

标签:小环,10,方程,Return,gcd,ABC306G,大环,正整数
From: https://www.cnblogs.com/snow-panther/p/17513071.html

相关文章

  • javascript:return confirm('您确定要删除吗?')
    javascript:returnconfirm('您确定要删除吗?')οnclick="javascript:returnconfirm('您确定要删除吗?')" 用在<a>和<input>标签里都可以 例如:<ahref="?id=XXX"οnclick="javascript:returnconfirm('您确定要删除该条数据吗?')"......
  • mockito5.4.0单元测试(11) --do when家族的方法们:doReturn()|doThrow()| doAnswer()|
    mockito官方文档地址:https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#do_family_methods_stubs//mock一个对象HashMapmockMap=mock(HashMap.class);  doCallRealMethod方法示例://当mock对象调用put和size方法时,都调用真实的方......
  • mockito5.4.0单元测试(9) --调用同一个方法和参数依次返回不同的值thenReturn和thenTh
    mockito官方文档地址:https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#exact_verification//mock一个对象ListsingleMock=mock(List.class);when(singleMock.get(20)).thenThrow(newRuntimeException())//mock第一次调用......
  • 【题解】AtCoder-ABC306G Return to 1
    这也太强了!容易想到的是用若干环拼出这个\(10^{10^{100}}\),也就是这些环的\(\gcd\mid10\)。之后就不会了。先正图反图两次DFS,只留下\(1\)所在强连通分量里的边,对正图跑DFS生成树,定义其深度从\(0\)开始,然后有一个结论是:对于任何正整数\(a\),图中存在一个包含\(1\)......
  • 在finally中出现return会发生什么?
    目录看点:面试题:看点:当Java程序执行try块、catch块时遇到了return或throw语句,这两个语句都会导致该方法立即结束,但是系统执行这两个语句并不会结束该方法,而是去寻找该异常处理流程中是否包含finally块,如果没有finally块,程序立即执行return或throw语句,方法终止;如果有finally块,系......
  • 基于Easy-Poi 的自定义 ArgumentResolver 和 ReturnValueHandler
    开发中常用到Excel的导入导出,为了方便快速的使用,让使用者使用Excel像使用JSON一样便捷(@RequestBody@ResponsBody)所以,是否可以自定义编写类似功能的注解 @RequestExcel 和@ResponseExcel  一、实现思路:根据Mvc的参数转换和返回值处理机制实现,excel相关工具......
  • ABC306G 与 CF1835D 的思考
    两道题似乎都涉及了一个经典模型:在一张有向图上,给定起点\(s\)和终点\(t\),询问\(s\)到\(t\)与\(t\)到\(s\)是否均存在一条长度\(=L\)的路径(\(L\)是一个\(\gen^3\)的数)。首先\(s\)与\(t\)必须在同一个SCC内(考场上没看到互相可达直接以为不可做)。考虑取......
  • AtCoder Beginner Contest 306 G Return to 1
    洛谷传送门AtCoder传送门考虑若干个能被\(1\)到达且能到达\(1\)的环,设它们的环长分别为\(a_1,a_2,...,a_k\)。那么我们现在要每个环走若干遍,使得步数不含除\(2\)或\(5\)以外的质因子。设第\(i\)个环走\(x_i\)遍,那么其实就是要求\(\sum\limits_{i=1}^ka_i......
  • java开发C语言编译器:jvm的return指令以及局部变量的操作
    jvm运行字节码时,代码的运行必须围绕两种数据结构,一种是堆栈,一种是队列,如果jvm执行某条指令时,该指令需要对数据进行操作,那么被操作的数据在指令执行前,必须要压倒堆栈上。如果堆栈上的数据需要暂时保持起来时,它就会被加载到局部变量队列上。java代码中,每个方法里面的局部变量包括函数......
  • java开发C语言编译器: return 语句的解释和执行
    在C语言程序中,很多函数并不是执行全部语句后,才从最底部返回的,大多数情况下,当某些条件成立时就可以通过return语句立即返回,而无需执行接下来的代码,本节,我们继续增强java开发的C语言解释器功能,使其能够处理return语句,完成本节代码后,我们的C语言解释器能够正常解析和执行下面的代码:in......