标签:
题目:http://codevs.cn/problem/1421/
分析:有向树上的最大-最小博弈
先手与后手的策略不同:
先手A:让对方取得尽量少的前提下,自己取得尽量大
后手B:让自己取得尽量多的前提下,对方取得尽量少
设f[x][0]表示以x的子树的先手最优值,f[x][1]表示以x的子树的后手最优值,注意这里的先手、后手是相对而言的
那么树形DP
1、若x节点的深度为奇数,此时轮到A取数
f[x][0]=a[x]+f[k][1]
f[x][1]=f[k][0]
其中k是x的儿子节点中max(f[k][0])取最大时候的k,若f[k][0]相同,则取f[k][1]最小的
因为x的深度为奇数,所以A是以x为根的子树的先手,B是以x为根的子树的后手;B是以所有x的儿子为根的子树的先手,而A则是以所有x的儿子为根的子树的后手
k的深度是偶数,所以k一定是B取,于是按照B的策略,B要让f[k][0]最多的前提下,让f[k][1]最小,这样得到的k作为B的决策,这就是第一个式子的含义
而B作为x为根节点的子树的后手,它不能取x点的值,所以f[x][1]=f[k][0]
2、若x节点的深度为偶数,此时轮到B取数
f[x][0]=a[x]+f[k][1]
f[x][1]=f[k][0]
其中k是x的儿子节点中min(f[k][1])取最小时候的k,若f[k][1]相同,则取f[k][0]最大的
含义同理
标签:
原文地址:http://www.cnblogs.com/wmrv587/p/4396977.html