Codeforces Round 895 (Div. 3)
A. Two Vessels
大致题意
有 A,B 两个水池,用大小为 $c$ 的勺子舀,最少需要几次才能让这两个水池相同
思路
简单题,每次变化 $2c$,不要求平均数,不然精度不好算
AC code
1 |
|
B. The Corridor or There and Back Again
大致题意
有一条射线,射线上有一些点有夹子,夹子会在人经过后 $x$ 秒触发,问从顶点出发,然后折返,问最远可以到哪里
思路
也是简单题,每个夹子就意味着单独的最远可达距离,然后取最小就行了
AC code
1 |
|
C. Non-coprime Split
大致题意
给出 $[l, r]$ 这个区间,目的找到两个值 $a, b$,满足
- $a + b \in [l, r]$
- $gcd(a, b) \neq 1$
思路
第一反应就是偶数,毕竟任意两个偶数很容易达到,而且可以足够小,只要 $[l, r]$ 中存在偶数区间即可。当然,同时 $r \geq 4$,否则肯定没戏
如果还不行怎么办,那此时必然满足 $l = r, r \space mod \space 2 == 1$。这个时候,反正也只有一个数可以选了,强行找因子吧,找不到就算失败
AC code
1 |
|
D. Plus Minus Permutation
大致题意
给定 $n, x, y$,你需要找到一个 $n$ 的排列,满足
$$((p_{1x}+p_{2x}+p_{3x}+ \dots + p_{\left \lfloor \frac{n}{x} \right \rfloor x}) - (p_{1y}+p_{2y}+p_{3y}+ \dots + p_{\left \lfloor \frac{n}{y} \right \rfloor y})$$尽可能大,问最终结果是
思路
计算出 $x$ 单独占了几个,$y$ 单独占了几个,然后把大数给 $x$,小数给 $y$ 即可
AC code
1 |
|
E. Data Structures Fan
大致题意
这题实在不想写题意了,已经把线段树这三个字拍脸上了
思路
维护两个值即可,为 $0$ 的异或和,为 $1$ 的异或和,然后每次改就是交换这两个值
AC code
1 |
|
F. Selling a Menagerie
大致题意
你决定逐个出售动物园里的动物,每个动物都有其价格,出售可以获得对应价格。
每个动物都有其唯一害怕的动物,如果你出售的时候,其害怕的动物还没有被出售,那么你可以获得双倍的价格奖励
给出一个出售顺序,使得最终价值最高
思路
很明显是一个 dag 的拓扑排序问题。可惜的是,这个并不是 dag,是有环的。而每次解开一个环,就要消耗一定代价。
可以直接将原来拓扑用的入度改成代价,即所有指向(害怕)这个节点的价格之和,因为如果这个节点先被拓扑了,那么这些指向它的节点就拿不到双倍的价值了,即损失了他们价格之和的代价
然后搞个优先队列拓扑就好了
AC code
1 |
|
G. Replace With Product
大致题意
给你一个数组,允许你选择其中一段,将其换成这些值的乘积,问数组最大的和是多少。需要给出选择的那一段
思路
由于乘法的增长通常都会远大于求和,我们需要寻找一个临界点,使得 $\prod_{i=1}^n a_i \geq \sum_{i=1}^n a_i$,这样就可以无脑乘起来了
假定数组中只有两个值是 $> 1$ 的,为 $x, y$,那么可以得到
$$ \begin{align*} xy & \geq n+x+y-2 \\ & \geq n+2\sqrt{xy}-2 \\ let \space t & \rightarrow \sqrt{xy} \\ t^2-2t+1 & \geq n - 1 \\ t-1 & \geq \sqrt{n-1} \\ t & \geq \sqrt{n-1}+1 \\ xy & \geq n-1+2\sqrt{n-1}+1 \\ & \geq n+2\sqrt{n-1} \\ & \geq n+n-1+1 \\ & \geq 2n \end{align*} $$所以只要对于 $xy > 2n$ 的情况,则可以无脑选尽可能全部的即可,因为相加一定不如相乘,当然,是尽可能,不是一定全部
那对于那些不满足的,可以得到 $\prod_{i=1}^n a_i < 2n$,这是一个很难达到的,假定有 $x$ 个数值不为 $1$ 的值,那么必然平均值为 $\sqrt[x]{2n}$,当 $x = 100$ 的时候,平均值就一定 $< 2$ 了,就意味着有 $1$ 的存在,那更不可能乘起来达到目标值了,所以此时非 $1$ 的值数量极少,可以暴力求解
AC code
1 |
|