zoukankan      html  css  js  c++  java
  • 2019牛客暑期多校训练营(第一场)

    2019牛客暑期多校训练营(第一场)

    A.Equivalent Prefixes

    solved by RDC 42min -1, assisted by F0_0H

    题意 给两个序列,求最长前缀使得笛卡尔树相同。

    做法1 二分前缀,建笛卡尔树。

    做法2 递归地计算 ([l,r]) 区间内,最长笛卡尔树相等的前缀。查询两个序列在 ([l,r]) 区间内,最小值的位置,设分别为 (p_1,p_2),若 (p_1 eq p_2),递归到 ([l,max(p1,p2)-1]),否则递归到 ([l,p_1-1]) 若在 ([l,p_1-1]) 上两序列笛卡尔树相同则递归到 ([p_1+1,r])


    B. Integration

    upsolved
    做法

    • 欲求(c_i),使(sum_{i=1}^{n}frac{c_i}{a_i^2+x^2}=frac{1}{prod_{i=1}^{n}(a_i^2+x^2)})
    • 通分后分子相等:(sum_{i=1}^{n}c_iprod_{j!=i}(a_j^2+x^2)=1)
    • (x^2=-a_i^2),代入得到(c_iprod_{j!=i}(a_j^2-a_i^2)=1)
    • (c_i=frac{1}{prod_{j!=i}(a_j^2-a_i^2)})

    C.Euclidean Distance

    solved by RDC 245min, assisted by F0_0H

    题意 求点到高维平面区域最近距离。

    做法

    • 如果点向平面垂足在区域内,那么找到最优解。
    • 否则最优解一定在边界上,即某些维上坐标为 0.
    • 对距离的表达式展开,注意到在 (a_i) 最小的 (k) 维上坐标为 0 是最优的,那么我们需要放逐掉几个维度呢?
    • 二分 (k) 值,寻找最小的 (k) 使得,点向平面的垂足在区域内。
    • 更大的 (k) 不如当前解优,更小的 (k) 表示最优解在边界上。

    D. Parity of Tuples

    upsolved by 题解
    题意 n个m元组(v_1,v_2,...,v_n),其中(v_i=(a_{i,1},a_{i,2},...,a_{i,m}))对于x,求有多少个元组(v_i)满足对于所有j,(a_{i,j} and x)有奇数个1,对(0≤x<2^k)都求其答案
    做法

    • 构造长度为(2^k)的数组(F),考虑元组((a_1,a_2,...,a_m))
    • 对于所有子集S,把(F[igoplus_{iin S}a_i])加上((-1)^{|S|})
    • 对F做FWT,(FWT(F)[x]/2^m)就是答案

    正确性证明 by sdcgvhgj

    • 考虑元组((a_1,a_2,...,a_m))的子集S对(FWT(F)[x])的贡献
    • FWT变换的定义:(FWT(F)[x]=sum_{i=0}^{n}(-1)^{|iigcap x|}F_i)
    • 所以贡献为:((-1)^{|(igoplus_{iin S}a_i)igcap x|}*(-1)^{|S|})
    • (=(-1)^{|igoplus_{iin S}a_iigcap x|}*(-1)^{|S|})(igcap)(igoplus)有分配率
    • (=(-1)^{sum_{iin S}|a_iigcap x|}*(-1)^{|S|}),x和y中1的个数和的奇偶性和x⨁y中1的个数的奇偶性是一样的。
    • (=(-1)^{sum_{iin S}1+|a_iigcap x|})
    • (=prod_{iin S}(-1)^{1+|a_iigcap x|})
    • 所有S对(FWT(F)[x])的贡献之和(=sum_Sprod_{iin S}(-1)^{1+|a_iigcap x|})
    • (=prod_i(1+(-1)^{1+|a_iigcap x|}))
    • (|a_iigcap x|)全为奇数则值为(2^m),否则为0

    E.ABBA

    upsolved by RDC

    题意 有多少个长度为 (2(n+m)) 的AB序列,可以划分成 (n)(AB) 子序列,(m)(BA) 子序列。

    做法

    • 一个序列能成功划分,等价于可以进行如下的贪心匹配,让前 (n)(A) 字符,参与 (AB) 串,后 (m)(A) 字符,参与 (BA) 串的构造,(B) 字符类似。于是只要知道了一个字符的在同类中的 rank 就能知道它该匹配谁。
    • (dp[x][y]) 表示长度为 (x+y) 的,有 (x)(A)(y)(B) 的前缀,不违背以上匹配规则的,方案数。
    • 枚举下一个字符是啥。

    code by rdc


    F.Random Point in Triangle

    solved by sdcgvgj 61min

    题意 三角形内随机选点到与三边形成的三角形的最大值的期望。

    做法 E = S*22/36


    H.XOR

    upsolved by RDC

    题意(n) 个元素,输出异或和为 0 的集合 size 之和。

    做法

    • 插入线性基,记录主元所在的行由哪些元素异或而得(至多维数个)。
    • 记录全为 0 的行,由哪些元素异或而得(至多维数个)。
    • 考虑暴力,我们枚举取哪些全是 0 的行。
    • 考虑优化,按位算贡献即可。

    夕阳红

    • 比赛时写了个 1<<62。
    • 试图绝杀的时候,不会算 (sum_{i=1}^{n} iC_{n}^{i})

    I.Points Division

    upsolved by F0_0H

    题意 二维平面上给定n个点,每个点有两个属性((a[i], b[i])),要求用一条单调递增的折线把平面分成两部分,最大化(上半部分的(a[i])(+) 下半部分的(b[i])和)

    题解

    • 首先对数据离散化
    • (DP[i][j][0]) 表示考虑前(i)行,折线最高点在第(j)列下方一丢丢的最大值
    • (DP[i][j][1]) 表示考虑前(i)行,折线最高点在第(j)列上方一丢丢的最大值
    • (DP[i][j][0] = max(max_{1leq jleq i}DP[i-1][j][0], max_{1leq j leq i-1}DP[i-1][j][1])+sum_{jleq kleq n}a[i][k]+sum_{1leq kleq j-1}b[i][k])
    • (DP[i][j][1] = max(max_{1leq j leq i}DP[i-1][j][0], max_{1leq j leq i}DP[i-1][j][1])+sum_{j+1leq kleq n}a[i][k]+sum_{1leq kleq j}b[i][k])
    • 线段树维护转移

    J.Fraction Comparision

    solved by F0_0H 9 min

    题意 比较两分数大小

    题解 简单签到,随便搞


  • 相关阅读:
    批量管理 页面空间
    WinForm 程序Post GEt web程序方法
    ASP.NETSession详解
    ASP.NET 中实现会话状态的基础
    ASP.NET验证控件详解
    StringHelper类
    PowerDesigne 笔记
    asp.ent 会话标识ID
    常用正则表达式
    HashMap中的keySet
  • 原文地址:https://www.cnblogs.com/FST-stay-night/p/11209554.html
Copyright © 2011-2022 走看看