zoukankan      html  css  js  c++  java
  • 2018 Multi-University Training Contest 1

    2018 Multi-University Training Contest 1

    题解

    A - Maximum Multiple

    题目描述:给定一个(n),找到三个正整数(x, y, z),满足(n=x+y+z, x|n, y|n, z|n),求(xyz)最大值

    solution
    这道题竟然卡住了。。。
    不妨设(x leq y leq z),则(z geq frac{n}{3}),所以(z=frac{n}{2}, frac{n}{3}),假如(z=frac{n}{3}),则(x=y=z=frac{n}{3})为这种情况的最优解,假如(z=frac{n}{2}), 则(y geq frac{n}{4}),若(y=frac{n}{3}),则(x=frac{n}{6}), 不够三个都为(frac{n}{3})时优(因为(y)能取(frac{n}{3}),说明(n)(3)的倍数,因此也能取三个都为(frac{n}{3})),若(y=frac{n}{4}),则(x=frac{n}{4})
    综上所述,只有三种情况:1、(n=frac{n}{3}+frac{n}{3}+frac{n}{3}) 2、(n=frac{n}{2}+frac{n}{4}+frac{n}{4}) 3、无解

    时间复杂度:(O(1))

    B - Balanced Sequence

    题目描述:给定(n)个括号序列,求出按一定顺序排列后,连起来的括号序列的最长合法子序列(不是子串)。

    solution
    首先每个括号序列的合法子序列可以先加入答案,然后每个序列就会变成若干个')'接着若干个'(',记')'个数为(a_i),'('个数为(b_i),然后按照一定规则排序。

    (a_i<b_i, a_j geq b_j),则(i)排在(j)的前面
    (a_i geq b_i, a_j<b_j),则(j)排在(i)的前面
    (a_i<b_i, a_j < b_j),则(a)比较小的排前面
    (a_i geq b_i, a_j geq b_j),则(b)比较大的排前面

    最后排完序拼起来算一次答案即可。

    时间复杂度:(O(n))

    C - Triangle Partition

    题目描述:给定平面上(3n)个点(任意三个点不在一条直线上),求出一种分成(n)个不相交的三角形的方案。

    solution
    按极角排序后的顺序依次构三角形即可。

    时间复杂度:(O(nlogn))

    D - Distinct Values

    题目描述:构造一个长度为(n)的序列,满足对于给定的(m)个区间,任意一个区间里的数字两两不同,求字典序最小的序列。

    solution
    将区间按左端点从小到大排序,左端点相同的只保留右端点最大的。
    一开始整个序列都为(1),记录当前填完(R)之前的数,用(set)记录当前可用的数字,做到第(i)个区间时,把前一个区间的左端点到(min(R,i区间左端点-1))的数字放回(set)里面,然后贪心地填(max(R+1, i区间左端点))(i)区间右端点,填一个在(set)里删一个,更新(R)

    时间复杂度:(O(nlogn))

    G - Chiaki Sequence Revisited

    题目描述:求

    [a_n=left{egin{matrix} 1, & n=1,2\ a_{n-a_{n-1}}+a_{n-1-a_{n-2}}, & ngeq 3 end{matrix} ight. ]

    的前(n)项和

    solution
    除了(1)出现了两次之外,其它数字(x)出现的次数为(d, x=2^{d}y),所以可以二分出最后一个数字是多少,然后求和就好了。

    时间复杂度:(O(logn))

    H - RMQ Similar Sequence

    题目描述:给定一个长度为(n)的序列(A),构造出它的笛卡尔树,然后有一个长度为(n)(B)序列,(B)序列的每一位数服从([0, 1])实数均匀分布,构造它的笛卡尔树,若两者相同,则该(B)序列的权值为所有数的和,否则为(0),求权值的期望。

    solution
    答案为(frac{n}{2} frac{A的拓扑序列个数}{n!}),后面(A)的拓扑序列个数有公式算:(frac{n!}{prod size_i}),当时我是按儿子要小于父亲,用积分算出(B)序列的概率,而出现的概率就等于(frac{A的拓扑序列个数}{n!})

    时间复杂度:(O(n))

    I - Lyndon Substring

    题目描述:给定(n)个字符串,有(m)个询问,每次询问两个字符串连起来后的最长(Lyndon word)子串的长度。

    solution
    题解说一个字符串的最长(Lyndon word)子串的长度为最长(Lyndon factorization)(就是求一个字符串的最小循环表示的算法)后最长那个串的长度。因此问题在于如何合并两个(Lyndon factorization),题解说利用单调性((Lyndon factorization)后是单调不上升的)用两个二分即可,但还没想出来。

    K - Time Zone

    题目描述:给北京时间,问某个时区的时间。

    solution
    模拟

    时间复杂度:(O(1))

  • 相关阅读:
    关于匹配的一些问题
    Codeforces Round #396 (Div. 2) A,B,C,D,E
    Codeforces Round #394 (Div. 2) A,B,C,D,E
    HDU 1848 SG函数博弈
    HDU 1536 S-Nim SG博弈
    HDU 2509 Be the Winner nim博弈变形
    HDU 1907 John nim博弈变形
    Codeforces Round #222 (Div. 1) D. Developing Game 线段树有效区间合并
    BZOJ 1031: [JSOI2007]字符加密Cipher 后缀数组
    HDU 5769 Substring 后缀数组
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/9479650.html
Copyright © 2011-2022 走看看