2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest
A - Arranging Wine
题目描述:有\(R\)个红箱和\(W\)个白箱,将这些箱子分成若干堆,使得每一堆只有一种颜色,然后将这些堆排成一排,使得相邻的堆的颜色不一样,并且每堆红箱的个数不能超过\(d\),问有多少种方案。
solution
不会。
B - Barcode
题目描述:有一排\(n\)个球,现在要给这\(n\)个球涂成红色或蓝色,使得红色球的个数等于蓝色球的个数,或者没有两个连续的蓝球,问有多少种方案。
solution
第二个条件的方案可以\(dp\)算出,而第一个条件的方案是\(C_{n}^{n/2}\),最终答案为两种条件的方案相加减去重复的\(\frac{n}{2}+1\)。
\(C_{n}^{n/2}\)要用模意义下的组合数来求。
时间复杂度:\(O(n)\)
C - Cu Chi Tunnels
题目描述:给出\(n\)个点的度,构造一棵树使得每个点的度满足所给的点,而且从根到每个点的路径的点编号递增。问能否构造这棵树。
solution
显然\(1\)是根,除了\(1\)外每个点的度减一就是儿子数。编号从大到小构造儿子,当儿子数不够时,无解,否则有解。
时间复杂度:\(O(n)\)
D - Dropping Ball
题目描述:给出一个\(m \times n\)的网格图,每个格子是''或者'/'。有两种操作:1、问从第一行第\(k\)列上方放一个球,问这个球能不能从最后一行掉出去,如果能,则输出从那一列掉出去。 2、修改某一个格子的符号,从''变成'/',或者相反。操作总数为\(q\)。
solution
当\(m \leq 1000\)时,每次询问直接暴力模拟。
当\(m > 1000\)时,\(n < 100\)。所以可以用线段树维护转移表。区间\([L, R]\)的点为一个转移表\(jump[i]\),表示当一个球到了第\(L\)行第\(i\)列,它会从第\(R\)行第\(jump[i]\)列掉出去。
时间复杂度:\(O(qnlogm)\)
E - Engaging with Loyal Customers
题目描述:有\(n\)个人,\(m\)份礼物,每个人对每份礼物有一个好感值,问如何分配礼物(一个人只能有一份礼物)使得每个人的好感值的和最大。
solution
当礼物较少时补足礼物,使得问题变成一个完美匹配的问题,然后用KM
解决。
时间复杂度:远小于\(O(n^3)\)
F - Famous Pagoda
题目描述:有一个\(n\)个元素的序列\(a_i\),将其分成\(m\)段,给定一个数\(k=1 or 2\),每一段的值为\(min_{v \in \mathbb{Z}} \sum_{s=i}^{j} \left | a_s-v \right | ^k\),输出每一段的值的总和的最小值。
solution
\(f[i][j]\)表示前\(i\)个数分成\(j\)段的最小值,显然(信仰)当\(i\)一定,\(j\)递增,决策\(k\)也递增,所以直接\(n^2\)dp
。
时间复杂度:\(O(n^2)\)
G - Game of Divisibility
题目描述:有\(n\)个数\(a_i\)和一个数\(k\),现在有两个人轮流从\(n\)个数中取数,每次取一个,直到所有的数取完。最终谁取的数的和是\(k\)的倍数,谁就获胜,否则平手。输出在最优策略下的最终结果。
solution
不会
H - Height Preservation
题目描述:有一个\(m \times n\)的网格图,每个格子有一个数\(h_{ij}\),现在给每个格子取一个数\(s_{ij}\),满足在每一行\(i\),若\(h_{ij}=h_{ik}\),则\(s_{ij}=s_{ik}\), 若\(h_{ij}>h_{ik}\),则\(s_{ij}>s_{ik}\),以及在每一列也同样满足类似行满足的条件,问\(s\)不同数字最少有多少个。
solution
将相等的点缩点,不相等的点连边,然后求最长路。
时间复杂度:\(O(n)\)
I - ICPC Awards
题目描述:按照排名顺序给出\(n\)支队伍的学校名与队名,然后每间学校只保留排名最前的队伍,最后输出前\(12\)支队伍。
solution
模拟
J - Joining Networks
题目描述:一个有\(n\)台电脑的网络构成一棵树,两台电脑的传输花费为两台电脑的距离的平方,一个网络的传输花费为所有无序电脑对的传输花费总和。现有两个两个网络,添加一条边使得这两个网络连通且连通后的网络的传输花费最少,输出最小值。
solution
不会。
K - K-Rotating
题目描述:有\(n\)个老师,\(n\)个班,开始时第\(i\)个老师交第\(i\)个班,接下来有\(m\)个修改操作,每次操作选择第\(x\)个星期,在第\(x\)星期的开始,选择\(k\)个老师\(p_1, p_2, ..., p_k\),然后老师\(p_i\)转为教老师\(p_{i+1}\)教的班,\(p_n\)教\(p_1\)教的班。在这修改操作期间还有一些询问操作,问第\(k\)个老师在第\(x\)个星期的星期二教哪一个班。
solution
分块,暴力维护每一块的置换,暴力修改,暴力询问。
时间复杂度:\(O(q \sqrt{m})\)
L - Land Inheritance
题目描述:给出一个多边形以及一条直线,将多边形沿直线对折,求重叠部分的面积。
solution
听说是一个模板:面积交的面积。
时间复杂度:\(O(n)\)