zoukankan      html  css  js  c++  java
  • hihoCoder挑战赛25

    官方题解

    A. Rikka with Tree

    • 树dp
    • (dp(i,j))表示子数 (i)得到 (j)个联通块的最小操作次数。
    • 代码

    B. Rikka with Tree II

    • 直观的做法是 (dp(i,j,k))(i) 为根,包含前 (j) 个点,(i) 是否还是儿子节点的方案数,时间复杂度为(O(n^3))
    • n^3 code
    • (O(n^2)) 的做法,(dp(i,j)) 表示操作到第 (i)个点,还有 (j)个位置要填的方案数,根据(i+1)的状态进行转移。

    C. Rikka with Tree III

    • 这里只讲一个点在子树内,另一点在子树外的细节做法。
    • 问题利用(dfs)序,相当于统计一个区间内数的出现状态以及区间外的数的出现情况。
    • 假设(bit\_in)表示区间内部的数的状态,(bit\_out)表示外部数的状态,当前中间节点的权值为(w)
    • 如果较大值在(bit\_out)内,则(bit\_out >> w)可以得到可能的公差(d)
    • 较小值与(w)的公差不能直接右移得到,则(bit\_in)需要存储(N-w_i),此后通过(bit\_in >> (N-w))计算公差(d)
    • 两个集合的公差取交集,最后的答案取并集即可。
    • 代码

    D. Rikka with Lattice

    • ...
  • 相关阅读:
    成长篇之代码灵异事件
    idea快捷键
    java环境配置常用链接
    MySQL分区
    English 动词篇
    仿stl+函数模板
    java 数组复制
    拓扑排序(Topological Sorting)
    2017蓝桥杯第十题(k倍区间)
    翻译NYOJ
  • 原文地址:https://www.cnblogs.com/mcginn/p/6659802.html
Copyright © 2011-2022 走看看