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
题目描述:求
的前(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))