首页 > 其他分享 >CF715C Digit Tree

CF715C Digit Tree

时间:2022-11-04 16:56:23浏览次数:55  
标签:10 Digit lc dep Tree times godn CF715C goup

妙,套,但是毒瘤。
考虑 \(gcd(M,10)=1\) 有什么用。

即 \(10\) 可以求 \(\% M\) 意义的逆元。

这启示我们用 \(\%M\) 来做。

发现数据范围特别大,记二维东西是不可能的。

所以考虑现在我们可以预处理出那些值。发现对于点\(u\),它到最上面和最上面到它得到的数字可以求出来,记为\(goup[u], ~godn[u]\)。

知道这个之后,即可求出任意段得到的数字。

运用一下套路,考虑对于一个\(lc\),以其作为\(lca\)的任意点对\(u,v\)

则,\(u\to lc\to v\) 走过的点就是可能的答案之一。

显然按照类似求路径长度的套路可以直接求出来。

考虑主动地去做这个东西,则需要一段 \(u\to lc\) 与 \(lc\to v\) 配对。记前者为 \(up(u, lc)\) ,后者 \(dn(lc, v)\) ,要求:

\[up(u,lc)\times 10^{dep[v]-dep[lc]}+dn(lc,v) \equiv 0~~(mod ~M) \]

这样可行的原因即上文提到的神必条件。

并不知道如何做。于是展开:

\[up(u,lc)=\frac{goup[u]-goup[lc]}{10^{dep[lc]}}\\ dn(lc,v)=godn[v]-godn[lc]\times 10^{dep[v]-dep[lc]}\\\\ up(u,lc)\times 10^{dep[v]-dep[lc]}+dn(lc,v)\\ =\frac{(goup[u]-goup[lc])\times 10^{dep[v]}}{10^{2*dep[lc]}}+godn[v]-godn[lc]\times 10^{dep[v]-dep[lc]}\\ =\frac{(goup[u]-goup[lc])\times 10^{dep[v]}}{10^{2*dep[lc]}}+\frac{godn[v]\times 10^{dep[lc]}-godn[lc]\times 10^{dep[v]}}{10^{dep[lc]}}\\ \]

现在,根据上式,我们可以求出对于 \(godn[v]\) 对应的 \(goup[u]\) :

\[goup[u]=godn[lc]\times 10^{dep[lc]}-\frac{godn[v]\times 10^{2\times dep[lc]}}{10^{dep[v]}}+goup[lc] \]

将所有\(v\)的这东西求出来,装进map,然后遍历另外一边(注意两边都做一次)。

现在,我们已经知道了\(O(n^2\log_2n)\)的做法,但是这样是过不了的。

不过其实这个套路还有一部分,dsu on tree。可以做到\(O(nlog_2^2n)\)

代码写完了放。

标签:10,Digit,lc,dep,Tree,times,godn,CF715C,goup
From: https://www.cnblogs.com/gyyyyy/p/16858347.html

相关文章

  • el-tree只展示前三个节点数据
    后端也返回了第四等级,但是不想让他展示,可以这样解决只展示前三等级//获取room树getRoomTreeList(){getRoomTree().then((res)=>{//只获取到......
  • 二次封装 Vue-Treeselect 组件
    场景开发中多个地方都需要用到vue-treeselect组件,于是想二次封装成SelectTree组件便于使用。需求1:自定义选项样式插槽option-labelSelectTree组件预留插槽`diy-......
  • LeetCode_Stack_589. N-ary Tree Preorder Traversal N 叉树的前序遍历【栈,迭代】【简
    目录​​一,题目描述​​​​英文描述​​​​中文描述​​​​示例与说明​​​​二,解题思路​​​​三,AC代码​​​​C++​​​​Java​​​​四,解题过程​​​​第一博​......
  • CodeForces 1540B Tree Array
    CF传送门洛谷传送门很强的一个题。发现根的选择很重要,于是考虑先枚举根。考虑枚举两个点对\(i,j\(i<j)\),如果\(j\)比\(i\)先被标记,那么\(i,j\)就贡献了一个逆......
  • ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
    目录建表数据存储主键和索引在查询中的表现主键的选择选择与排序键不同的主键索引和分区在查询中的应用部分单调主键的使用跳数索引可用的索引类型并发数据访问列和表的TT......
  • CF735E Ostap and Tree
    看到这题,有一个naive的DP做法,\(f[u][i][j]\)表示\(u\)节点的子树内近的黑点距离为\(i\),距离最远的非合法点距离为\(j\),然后转移一下,貌似是能过的。但我们可以再......
  • Error: error:0308010C:digital envelope routines::unsupported
    原因:node.js版本问题,nodev17+版本中的OpenSSL3.0对允许算法和密钥大小增加了严格的限制。 解决办法:方法一(本人测试无效):Windows,命令行输入如下内容setNODE_OPTION......
  • CF1405D Tree Tag(树的直径/博弈)
    #include<bits/stdc++.h>#defineN300005usingnamespacestd;intn,a,b,da,db;inthead[N],ver[2*N],Next[2*N],tot=0;intp1,p2,mxd=0;intdep......
  • C# 窗体传值,TreeView To TreeView
      usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.T......
  • JAVA++:HashMap无序?TreeMap有序?
    书上说HashMap是无序的,TreeMap是有序的(有序无序是针对key的),但是实际去敲的时候发现不是这样,有时HashMap是有序的,有时TreeMap是无序的。于是就做了以下测试来探究:......