Deleted Account
冰封说是 Scope 是 CPS(Continuation-Passing-Style) 出来的 context... 我想想 不像我这个辣鸡,人家现在回复不需要两分钟,两秒就得去忙别的了...
携程本身就是 CPS 吧(实现起来麻烦一点,要 capture 执行状态,整个数据栈包括然后指令的执行状态也得包括)... 这么说是那种... 对爸爸的数据依赖?
Forwarded from Deleted Account
我自己 OI 很菜的,偏偏现在又有事情想做,那么想快速了解一下,只能拜托各位大佬了。。。
Forwarded from Deleted Account
向上递归?回溯的时候判 ==? 可是为什么能够做到并+查呢?
[1,2,3,4,5,...] 这么初始化 是有什么缘由的吗Forwarded from Deleted Account
A={3,5,6} B={1,0,2} 这种情况我求一下并查集 AB,然后在上面进行查询操作
首先树的离散化是这样的,每个节点有爸爸
father(n) = vec[vec[n]]
mkchild(n, m) = vec[m] <- vec[n]
先放数据... 怎么放
首先树的离散化是这样的,每个节点有爸爸
data Tree a = Father a | Children [Tree a]vec
father(n) = vec[vec[n]]
mkchild(n, m) = vec[m] <- vec[n]
先放数据... 怎么放
要知道他们是不是一个家族的
是... 这样判断『查』(in) 的?并 就是组织这样一个搜索树...并查集的本质是维护一个森林,把森林里的树合并。只要是达到这个目的都可以。但是初始化成自己的父节点的话会更容易理解并查集的本质。
合并 搜索树???? 爸爸 是什么 为什么要有爸爸 为什么有了爸爸就会使得效率++...Forwarded from Deleted Account
这样的话递归下去也不难找,第一个公共父节点
data Tree a = Leaf a | Pa a (Tree a)
childFamily :: Tree a -> Tree a -> Bool
childFamily l r = case (l, r) of
(Pa x fx, Pa y fy) -> if fx == fy then True else (childFamily fx fy)
otherwise -> False
可是 怎么去构造树 为什么能够通过这种森林来 并查集Forwarded from Deleted Account
XyyBcj.hs
1.4 KB
噢,果然是会把人急傻的... 不爱看就算了,我目前的水平也就是以自己的视角整理一下代码而已 只是有点奇怪为啥 ask 的递归里没有重写参数... 好像也没有副作用啊 也只能到时候再看了
XyyBcj.hs
1.4 KB
现在才知道是可以 AC 的... 我还以为无尽递归栈溢呢(没强调尾递归),没想到是在 readInts...
/tmp/duangsuse.sock
是这样,目前正在学习为什么就 可以...
这里
+ i == @i => @i=i
+ 否则,总之就是递归下去找 @@i 什么的,然后存下来结果(就是把这个节点直接重写了)
比如这里有一个小离散化的树
root=3
@1=3
@2=2
@3=1
我们去 ask 这个 3
l1: i=3, @i==1/=0, @3=rec 1
l2: i=1, @i==3/=1, @1=rec 3
leven: i=3
lodd: i=1...
这样的话就成环(cycle)了... 怪我的图没画好,可是如果没有环就是:
l1: i=3, @i==1/=0, @3=rec 1
l2: i=1, @i==2/=1, @1=rec 2
l3: i=2 @i==2==2, 2
这就是在找... 爸爸的爸爸的... 等于爸爸或者、爸爸的爸爸就是爸爸自己(root)?只不过是离散化的版本?
原来
ask 是一个递归查找的子程序,它递归寻找一个树状数组的 i == vec//i
并且+ i == @i => @i=i
+ 否则,总之就是递归下去找 @@i 什么的,然后存下来结果(就是把这个节点直接重写了)
比如这里有一个小离散化的树
root=3
@1=3
@2=2
@3=1
我们去 ask 这个 3
(ask vec 3),然后结果是:l1: i=3, @i==1/=0, @3=rec 1
l2: i=1, @i==3/=1, @1=rec 3
leven: i=3
lodd: i=1...
这样的话就成环(cycle)了... 怪我的图没画好,可是如果没有环就是:
l1: i=3, @i==1/=0, @3=rec 1
l2: i=1, @i==2/=1, @1=rec 2
l3: i=2 @i==2==2, 2
这就是在找... 爸爸的爸爸的... 等于爸爸或者、爸爸的爸爸就是爸爸自己(root)?只不过是离散化的版本?
原来
Vec.produce \n -> (n+1) 是这种原因?每个数字对应一个『爸爸』树?childFamily l r = case (l, r) of
(Pa x fx, Pa y fy) -> if fx == fy then True else (childFamily fx fy)
otherwise -> False
/tmp/duangsuse.sock
#Haskell 冰冰又发了新算法 Haskell XyyBcj
准确来说也不『新』了,冰封 2016 年 8 月就在博客上发了离散化求并查集的题解...(汗)
/tmp/duangsuse.sock
准确来说也不『新』了,冰封 2016 年 8 月就在博客上发了离散化求并查集的题解...(汗)
which 是我今天看瞎眼也不知道为什么的题目,早在 3 年前...
唉
唉
/tmp/duangsuse.sock
是这样,目前正在学习为什么就 可以...
This media is not supported in your browser
VIEW IN TELEGRAM
因为我躺床上也想了很久都没有结果(都是一些比较浅层的结论,似乎靠树形图 也没有特别多的效果)
思量着 要上 可视化 拿命分析 只要分析完能力能有提升,哪怕以后都要拿命分析 也在所不辞
思量着 要上 可视化 拿命分析 只要分析完能力能有提升,哪怕以后都要拿命分析 也在所不辞