zoukankan      html  css  js  c++  java
  • 「解题报告」AtCoder Regular Contest117

    A. God Sequence

    先把正的负的 (1dots a-1,1dots b-1) 填上,如果正数多那么最后一个负数放两者和的相反数,负的多类似

    B.ARC Wrecker

    考虑没两种高度的差值来决定方案数

    那么排序去重之后将两两的差 (+1) 乘起来即可

    C.Tricolor Pyramid

    给白色红色蓝色分别赋 (1,2,3) 的权值,那么不难发现合成出来的数和底下两个的权值和模 (3)(0)

    那么就是每个点到金字塔顶的方案数乘权值的和(还要通过 (n) 的奇偶性来判断正负)

    ((1,1))((n,x)) 的方案数的组合意义就是可以选择 (x-1) 个地方向右走一步,那么方案数是 (inom {n-1}{x-1})

    考虑到我们只关注其模 (3) 的余数,那么直接记录每个阶乘有多少因子 (3) 和模 (3) 的余数即可

    D.Miracle Tree

    按照欧拉序的思路不难发现直接遍历这个树,每次回溯的时候给计数器加一的话,遍历到的最后一个点是 (2(n-1))

    但是不难关注到我们并不需要在遍历完整个树之后再在回溯时改变计数器

    所以计数器的最终值就是 (2(n-1)-) 一个链的长度

    为了得到最小值,那么可以先整出来直径,以直径的一个端点为根再次进行 (dfs)

    (dfs) 的过程中注意对长度大的链最后访问,这个可以按照长链剖分的方式预处理出来重儿子最后访问

    当然也可以每次排个序,复杂度也合法

    E.Zero-Sum Ranges 2

    先求前缀和,那么 (k) 的个数就是前缀和相同的对数(这里特别注意要把 (s_0) 也算上)

    我们考虑按照绝对值从小到大加入 (s_i),这时候不难发现序列的形态是若干个连续段

    同时有一些空缺,而这些空缺的两端都是单调的段,空缺里面的元素比两边的值大

    定义 (dp[i][j][k]) 表示 (i) 个元素,(j) 对相同的前缀和,(k) 个空缺

    转移考虑加入 (s_i) 的个数,设其为 (x) 则会转移给 (dp[i+x][j+inom x2][x-k-2]),系数为 (inom {x-1}{k+1})

    最后一维的值考虑只放入一个 (s_i) 的空缺就被结束了,系数也是类似隔板的东西

    统计答案的时候对 ( m{dp[i][j][k] imes dp[(2n+1)-i][k-j][k-1]}) 求和,可以理解为大于 (0) 的前缀和 和 小于 (0) 的前缀和

    实现的话组合数可以直接杨辉三角,由 (python3,inom{60}{30}) 只有 (1e17) 左右

    F没看,就摸掉了

  • 相关阅读:
    学习Linux二(创建、删除文件和文件夹命令)
    合理的需求
    两种事件触发的jquery导航菜单
    JS中this关键字
    Hibernate的session问题
    JQUERY图片特效
    学习Linux一(安装VMware和Ubuntu)
    A标签跳转问题
    WEBSERVICE简介
    IE下设置Cursor的一点记录
  • 原文地址:https://www.cnblogs.com/yspm/p/14675430.html
Copyright © 2011-2022 走看看