zoukankan      html  css  js  c++  java
  • 模拟19 题解

    A. count

    结论题

    一棵树可以被分为d块,

    当且仅当子树节点个数和为d的倍数的节点有$frac{n}{d}$个。

    对于任何一个树,size为d的倍数的节点个数不会超过$frac{n}{d}$个。

    在以上情况下,在每个符合的节点与父亲的路上截断,是一种合法方案。

    故得证。

    B. Dinner

    将圆上的序列划分为k段连续的区间,使区间总和的最大值最小。

    显然的二分答案。

    然而验证需要$O(n^2)$。

    倍增预处理出每个点向后延伸$2^k$段能到达的节点。

    于是对于每次验证,预处理和查询的复杂度都为$O(nlogn)$,

    总复杂度$O(nlog^2n)$,

    应当积累的是倍增的思想,与一些快速幂,映射都常结合使用。

    C. chess

    建图,发现图中存在点权为0和点权1的点。

    定义不同的路线为经过至少一个不同的点权为1的点。

    将点权为0的点缩掉,

    也就是说,如果存在a->b->c,其中b的点权为0,直接由a向c建边。

    之后直接最短路计数即可。

  • 相关阅读:
    C#获取视频文件播放长度
    ViewState跨页传值
    radio点击事件
    js屏蔽鼠标右键
    js获取url参数
    js页面跳转
    android 界面刷新功能
    android RadioButton单选按钮效果
    android TextView实现跑马灯效果(字体滚动)
    android 圆角效果
  • 原文地址:https://www.cnblogs.com/skyh/p/11351586.html
Copyright © 2011-2022 走看看