Problem A
首先解方程
$frac{n}{a} + frac{n}{b} + frac{n}{c} = n$
$frac{1}{a} + frac{1}{b} + frac{1}{c} = 1$
如果$a, b, c$都必须为正整数,那么令$a <= b <= c$
那么$a <= 3$,所以$2 <= a <= 3$
$a = 2$的时候 $b = 3, c = 6,$ 或者$b = 4, c = 4$(显然前者好像比较垃圾,那么舍去)
$a = 3$的时候 $frac{1}{b} + frac{1}{c} <= frac{2}{3}$,所以此时$b = c = 3;$
所以综合一下的话对于这道题,有用的就两组解:
$a = 2, b = 4, c = 4;$
$a = 3, b = 3, c = 3;$
分类讨论下即可。
Problem B
贪心,但是具体怎么证明我也不知道。
Problem C
既然他都说了任意$3$点不共线了,那么直接对横坐标排个序顺序输出就行了。
显然这样的话三角形之间不会相交
Problem D
贪心,对每个位置维护一个集合,存着当前能放的数,然后取个最小值就行了。
具体操作set就行。
Problem E
Problem F
Problem G
Problem H
假设每个元素管辖的区间是对应笛卡尔树中这个元素为根的子树大小。
答案是每个位置管辖的区间的长度的乘积的倒数 $* n / 2$
那么单调栈就行了。
Problem I
Problem J
(cdx强无敌的)
很恶心的递推题,各种细节讨论。
首先求出$r[0/1][i]$表示当前位置是否亮灯,每个点往右不一定回来,
这段过程中把这个点本身以及右边的灯关掉(不管最后我在哪反正关掉就行)至少需要多少步。
以往右举例。如果一个点(包括自己并且)往右都没灯,那么值显然是$0$
如果当前位置没亮灯,那么简单,就相当于往右走一步然后解决右边那个位置状态相反时候的问题(状态相反)
如果当前位置亮着灯,那么得先解决自己位置的问题。
"1" x x x x x x
1 "!x" x x x x x
"0" !x x x x x x
0 "x" x x x x x
这样需要$3$步,并且不影响右边灯的状态。
左边也是差不多类似的情况。
然后求出每个点往右并且回来,这段过程中把右边的灯全都关掉要多少步,以及回到这个位置的时候,
这个位置的灯的状态是什么。
(如果当前位置亮着不用管,这个事情刚刚求的已经做掉了)
那么还要考虑他右边那个位置做的时候回来的位置是亮是灭,如果是亮着的还得用$3$步关掉右边的灯。
灭着的话走$1$步回来就行。
左边也是类似的情况。
最后两个行走方式取个较小值就行了。
这题很卡内存……
Problem K