zoukankan      html  css  js  c++  java
  • 「总结」杂题选讲

    Bitwise Xor
    我们可以发现一个序列中的最小的异或值是两个大小相邻的数的(xor)(min)
    那么我们对序列排序。
    只需要计算相邻的(xor)是大于等于(k)的方案。
    (dp[i])是以(i)结尾最小(xor)大于(K)的方案。
    然后我们可以类似于用树状数组来搞最长升降转移。
    这次用(trie)来转移。

    MOD Problem
    大水题

    [egin{aligned} ans&=sumlimits_{i=1}^{n}n mod I\ &=sumlimits_{i=1}^{n}n-ilfloorfrac{n}{i} floor\ &=n^2-sumlimits_{i=1}^{n}isumlimits_{j|i}^{n}I\ &=n^2-sumlimits_{j=1}^{n}sumlimits_{i|j}i\ &=n^2-sumlimits_{j=1}^{n}sigma(i)\ end{aligned} ]

    然后线筛。

    平方串
    (dy)讲过的原题。
    貌似是。。
    还是用插点法,枚举长度(len),每(len)个插一个点。
    发现每次两个串必然是越过两个插入的点的。
    然后就找两个点的(lcp)(lcs)就可以了。
    这样能够确定经过相邻两个特殊点的平方串左右端点的范围。
    然后用类似(hash)的方法来统计答案就行了。

    Conjugate
    联赛原题吧。
    分别考虑每一堆和第一堆做贡献。
    使得某一堆在第一堆之前做贡献,可以发现此时其他堆是无效的。
    那么最终的答案就是:

    [ans=1+sumlimits_{i=2}^{n}frac{a_i}{a_1+a_i} ]

    湖人
    感觉还是原题。
    想不起来是哪里看到的了。
    非别考虑每一个点自己终结自己的期望。
    那么答案是:

    [ans=sumlimits_{i=1}^{n}frac{1}{d(i)} ]

    可以用一个(min\_25)筛来做。
    虽然我还没想懂怎么做。

    Game with Marbles
    先求出摸到一个蓝球之前摸到绿球的期望个数。
    如果摸到了红的可以扔掉重新膜,所以认为红球其实是不存在的。
    那么有:

    [E=frac{G}{B+G}(E+1) ]

    所以:

    [E=frac{G}{B} ]

    一个蓝球对应这么多绿球,那总共的绿球就是(frac{KG}{B})个咯。
    对红再单独计算。
    可以计算每一个红球。如果这个球没,没有被摸到,概率就是(frac{B}{B+1})
    所以一个球的贡献就是(1-left(frac{B}{B+1} ight)^K)

    游戏
    这个就是贝叶斯公式了。
    我们把每一个点左右两端确定的情况作为这个点期望的取决标准。
    用线段树和两个矩阵来维护这些区间。
    每个点的矩阵维护贝叶斯公式划出的分母和。

    AGC035D
    发现其实是消除掉一个数给两边加上。
    那么每一个权值都要乘一个系数上去。
    做个区间(dp)
    (dp[l][r][x][y])表示做右端点的系数为(x,y),区间([l+1,r-1])已经被消除的最小答案。
    枚举中间点合并区间。

    [dp[l][r][x][y]=minlimits_{mid=l}^{r}dp[l][mid][x][x+y]+dp[mid][r][x+y][y]-(x+y)A_{mid} ]

    operation
    联赛原题。
    由于除以二的操作并不会进行很多次。
    所以我们可以直接按度数轻重点划分。

    概率论
    听过的,写在某个生成函数里面了。
    https://www.cnblogs.com/Lrefrain/p/12274363.html
    这篇的最后一个。

    Jiry Matchings
    经典的方法
    如何用(FFT)快速求出重链划分情况下的所有贡献。
    其实就是从叶子对所有轻儿子分治(FFT),然后再从一条重链上分治(FFT),把一条重链的贡献分治(FFT)出来。
    这个时候链顶成为别人的轻儿子,再对这个操作递归即可。

    小星星
    做过的题。
    https://www.cnblogs.com/Lrefrain/p/11644600.html
    子集反演嘛。

    Ribbons on Tree
    考虑容斥。
    我们如果去掉一些边集,就相当于一个连通块划分,同时从连通块中选择一个代表点的方案。
    这是(prufer)序列的结论,详情见数树那个题
    这个东西如果用题解写的方法就太麻烦了。
    我们可以直接把第二维度压掉
    直接设(dp[x][0/1])表示第(x)的点的子树中(x)所在连通块是否存在代表点的方案数。

  • 相关阅读:
    mysql常用时间列表的查询——七天内、本月、本周、某天
    js取数组获取最大值的四种方式
    Mysql按周,按月,按日,按小时分组统计数据
    Mysql中的sum函数为null时的解决办法
    Maven 中 dependencyManagement 标签使用
    嵌入式printf函数运用基于ti 16位MCU
    md5实现对用户名与密码的保护
    c# md5 算法实现
    define a struct
    file.open异常处理
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12656405.html
Copyright © 2011-2022 走看看