AtCoder ABC 234 复盘
A Weird Function
模拟。只是洛谷翻译存在问题。
B Longest Segment
模拟。$O(n^2)$ 枚举每一对点,然后用求两点距离的公式 $\sqrt{{(x_1-x_2)}^2+{(y_1-y_2)}^2}$ 更新最大值即可。
P.S. 其实你也可以 $O(n\log n)$ 的排序,然后计算最远的一对点的距离。但是在这道题上没有必要,怎么简单怎么来。[doge]
C Happy New Year!
分析样例 1,3 在二进制下应表示为 $(11)_2$,而样例输出为 22。再举一例,当 $K=114$ 时,$(114)_{10}=(1110010)_2$,而第 $114$ 大的符合要求的数应为 2220020。于是我们可以得到,答案为将 $K$ 在二进制下的表示 $S$ 中的 1 替换为 2 的结果。
D Prefix K-th Max
- 
将前 $K$ 个数加入大根堆 $q$。 
- 
输出堆顶 $x$。 
- 
将第 $K+1\sim N$ 个数与堆顶进行比较:如果 $P_i<x$,则将堆顶 $x$ 弹出,并将 $P_i$ 插入堆 $q$ 中。 
- 
每次输出堆顶。 
E Arithmetic Number
有些类似于 C 题,DFS 构造“算术数”。具体操作如下:
枚举起始(最高位)数字,然后枚举公差,再一位一位
一位一位地增加位数,如果这个数合法,则stoll()后加入set中;否则,break。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号