ACGO欢乐赛34
T1
方法一:使用数组统计
观察到 1≤Ai≤1051 \leq A_i \leq 10^51≤Ai ≤105,所以可以开一个长度为 10510^5105的数组进行统计。
方法二:使用set统计
方法三:使用map统计
T2
直接按照题目要求模拟即可
T3
根据分析,最小值的最大值,可以联想到二分算法。需要考虑的有序性,在题目中寻找。
我们发现, d1+d2+d3d_1+d_2+d_3d1 +d2 +d3 的结果是一定的,为 n−3n-3n−3 。
考虑枚举三者之中最小的间隔,但是不确定元素不止有间隔本身大小,还有间隔之间的差值,这个思路舍弃。
现在考虑二分枚举三个间隔之间的最小的那个差值。
证明:
设 d1,d2,d3d_1,d_2,d_3d1 ,d2 ,d3 三个间隔从小到大。
枚举三者之间最小差值为 xxx ,那么第二个差值也是不小于 xxx ,否则当前假设 xxx 不成立。
设 d1=ld_1 = ld1 =l ,则如果要满足假设必须满足 d2d_2d2 最小也是 l+xl+xl+x ,同理 d3d_3d3 最小也是 l+2∗xl+2*xl+2∗x 。此外,对于 d3d3d3 还可以通过 n−3−l−(l+x)n-3-l-(l+x)n−3−l−(l+x) ,即为 n−3−2∗l−xn-3-2*l-xn−3−2∗l−x 。
如果根据总长度算出来的理论高度,不小于满足最小间隔差值是 xxx 要求的最小高度,即为 n−3−2∗l−x≥l+2∗xn-3-2*l-x \ge l+2*xn−3−2∗l−x≥l+2∗x 化简得到 n−3≥3∗l+3∗xn-3\ge 3*l+3*xn−3≥3∗l+3∗x
看似存在两个不确定元素,间隔本身大小,还有间隔之间的差值,但是要求取最小值的最大值,也就是说 xxx 要最大,满足题目的前提下是 l=0l = 0l=0 。即 n−3≥3∗xn-3\ge 3*xn−3≥3∗x 。
当然这题你也可以用结论写,结论自己摸索哈。
T4
埃氏筛法,时间复杂度O(nloglogn)O(nloglogn)O(nloglogn)
T5
利用两个map维护即可。
你也可以不用map,开两个数组,映射到对应的ASCII即可。
T6
直接输出即可