zoukankan      html  css  js  c++  java
  • 省选模拟17 题解

    A. 选择

    可以发现问题是$a$ $b$是否在一个边双里。

    因为没有强制在线,所以将难处理的删边转化为加边。

    对于一棵树上的加边操作,只要将两个点之间的路径上的点,添加到同一个边双集合里即可。

    因为边双的特殊性质,加上并查集的操作,这样只考虑树边的做法是正确的。

    具体的实现方法实际上通过并查集+暴力跳父亲就可以实现。

    但是因为考试时弱智了,用的树剖+线段树维护并查集。


    B. 划分序列

    对于权值为正数,合法条件为最小的组数<=k。

    对于权值为负数,合法条件为最大的组数>=k。

    对于权值任意,可以尝试理解一个结论:合法条件为最小组数<=k<=最大组数。

    将前缀和离散化,然后直接通过树状数组即可维护最小的组数和最大的组数。

    所以直接二分答案就可以了。

    C. 生成树求和

    实际上也与原题差不多了。

    生成树一题的做法是,将三种颜色的边,分别视为$1$,$x$,$y$。

    然后代入$n^2$组点值,二维插值可得系数,而所得$x^ay^b$项系数即选择了$a$条颜色二边,$b$条颜色三边,$n-1-a-b$条颜色一边的方案数。

    对于本题,显然可以按位处理。

    一个显然的做法是同样将三种边权看作三种颜色,同样用二维插值解决。

    但是一个更加优秀的做法是,因为本题的特殊性质(最终不关注具体的$a$,$b$),而只关注$a+2b$ $mod$ $3$的结果。

    也就是说我们要得到每个生成树方案的边权的加和。

    因为矩阵树求的是乘积,所以只要将这个边权放在指数上就行了。

    这样求得的多项式也变为了不到$2n$次,用一维插值就可以,总复杂度少一个$n$。

    D. 圆圈游戏

    因为一些特殊的原因,这次的分数又超过了300分。

    因为一些特殊的原因,这是一道原题,题解见省选模拟4

  • 相关阅读:
    Apache服务器安装-apache已经卸载,如何删除注册在系统的服务
    REST&RESTFUL
    SQL注入漏洞产生的原因是什么?怎么防止?XSS呢?
    git的常用命令
    Linux服务器上安装MySql数据库(默认安装,密码为空),首次使用需要修改密码
    iOS-UI控件优化
    iOS isa指针
    iOS Runtime 运行时
    程序员面试总结
    迷宫寻宝(一)(bfs)
  • 原文地址:https://www.cnblogs.com/skyh/p/12257778.html
Copyright © 2011-2022 走看看