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

    A. 辣鸡(ljh)

    模拟。

    对于同一块内的答案,直接统计。

    对于不同块内的,

    枚举i和大于i的$j=i+1~n$,

    一个有效的剪枝:

    以$x_1$为第一维排序,当$x_{1j}>x_{2i}+1$时break退出循环。

    然而如果用纵向链状的数据还是会被卡成$O(n^2)$,然而出题人没有卡。

    一个更好的方法是每次按不同条件排序,二分查找真正有效的区间并统计答案。

    总的氢键区间个数与N线性相关(至少我构造不出特殊数据),可以保证复杂度为排序和二分的$O(nlogn)$。

    然而我调不出来。

    B. 模板(ac)

    考场上打了70分算法:

    对于前30分,直接暴力翻父亲。

    然而我忘记了使用给定的桶数组,一分没有。

    对于k>=m的数据,无需考虑桶数组。

    由叶节点向根合并线段树即可。

    然而我的快读打错了,判断负号位置错了,只拿了15分。

    正解:

    以时间(操作时间)为下标的线段树,启发式合并。

    线段树中维护的是当前节点每个操作后的cnt(球的个数)和sum(答案)。

    处理每个节点的重儿子(在本题中为子节点数+操作数最大的儿子),

    对于每个节点,首先dfs轻儿子,并清空线段树。

    然后dfs重儿子,并将线段树继承。

    接着用另一个函数dfs每个轻儿子及轻儿子的子树,把这些信息补充到线段树里。

    线段树的信息完全了,我们的要求是 cnt数恰好为$k(x)$ 或 全部操作结束

    之前的sum值总和,以平衡树找k小值的思想,在线段树上二分查找即可统计该点的答案。

    应当注意的是,每种颜色的球只在它第一次出现,对答案作贡献。

    但第一次更新不意味着第一次出现,可以维护一个数组表示每个颜色第一次出现的位置,可以更新数组时就更新。

    关于复杂度:

    每次对于一个节点,继承它的重儿子的信息。

    因为每个节点到根节点的轻边数不超过$logn$,

    所以每个节点当且仅当它的祖辈被当作轻儿子时被dfs扫描,

    所以每个节点被dfs不超过$logn$次。

    线段树单次操作为$O(nlogn)$,故总复杂度为$O(nlog^2n)$

    C. 大佬(kat)

    最简单的一道题,然而考场上只想到了k=2的做法,打了n<=8的暴搜。

    当时的想法是:

    第一道题只在第一天有效,最后一道题只在最后一天有效,

    然而中间的题会在总共k天有效,显然不能处理每个k道题,最后乘$(n-k+1)$啊。

     

    然而被事实打败了:

    不妨考虑方案数,不管在哪一位,每种状态的方案数都是相同的。

    处理每个k道题,

    以下三式中g(x)均为k道题中最大难度为x的方案种数。

    $ans=frac{sumlimits_{i=1}^{m}g(i)*w[i]}{m^k}*(n-k+1)$

    即化为总权值,除以总方案数,得到期望。

    柿子一:$g[x]=x^k-(x-1)^k$

    则每道题有x种选择,要除掉不合法的状态,即最大难度不是x,

    根据简单的容斥,答案为$x^k-(x-1)^k$。

    以下两式参考Yu-shi

    柿子二(DuanYue):$g[x]=sumlimits_{i=1}^{k}C_k^i(x-1)^{k-i}$

    组合数的理解,比较显然。

    枚举从k中选取几个最大值,其他在最大值一下随便选取,求和为答案。

    柿子三(remarkable):$g(x)=sumlimits_{i=0}^{k-1}x^i(x-1)^{k-1-i}$

    不会直观理解,但是是对的。

    由数学归纳法,

    显然当$x=1$时,$g(x)=1$,是正确答案。

    当$x>1$,$g(x)=g(x-1)*x+x^0*(x-1)^{k-1}$,

    $g(x-1)$为$x-1$时的合法方案,一定包含至少一个最大值,所以第k位可以任意选择。

    $(x-1)^{k-1}$为$x-1$时的非法方案,第k位必须选择最大值。

    且后者一定不包含最大值,所以两者相加是不重不漏的。

  • 相关阅读:
    SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问
    谷歌浏览器扩展程序manifest.json参数详解
    获取天气api
    UVA 10385 Duathlon
    UVA 10668 Expanding Rods
    UVALIVE 3891 The Teacher's Side of Math
    UVA 11149 Power of Matrix
    UVA 10655 Contemplation! Algebra
    UVA 11210 Chinese Mahjong
    UVA 11384 Help is needed for Dexter
  • 原文地址:https://www.cnblogs.com/skyh/p/11270314.html
Copyright © 2011-2022 走看看