摘要: 我们来算每个点出现在的集合的个数 设f[i]为i出现的集合个数,g[i]是只选子树i 可以有多少种选法 那就有$g[i]=1+\prod\limits_{j是i的孩子}{g[j]} , f[i]=f[fa[i]]*\prod\limits_{j是i的兄弟}{f[j]}$ 这个兄弟的积可以直接用一个逆 阅读全文
posted @ 2018-11-05 22:00 Ressed 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 首先如果这是一个DAG,我按照拓扑序倒着去选,一定能选到所有入度不为0的点 然后考虑有环的情况 我们拎出来一个强连通分量 先假设它缩点以后是没有入度的 那我最后它里面一定至少剩一个不能选 因为就剩一个的时候肯定没有入度呀 那我显然可以把它看成是一个只有一个点入度为0的DAG 而且那个入度为0的点可以 阅读全文
posted @ 2018-11-05 21:53 Ressed 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 这个东西和最长上升子序列很像 考虑如果已经知道每个位置为开头的LIS长度和个数 f[i],我可以扫一遍 判断这个个数和K的大小,找到第一个长度=len而且个数<K的,这个位置就是要选的 然后K-=个数,len--,再记下来我这次选的是这个位置(以后还要判断当前位置是否在上一个钦定住的范围内),然后接 阅读全文
posted @ 2018-11-05 21:42 Ressed 阅读(146) 评论(0) 推荐(0) 编辑