Codeforces Round #671 (Div. 2) 简要题解

C F 671 [ d i v 2 ] \mathrm{CF671[div2]} CF671[div2] 题解

比赛链接

A ∼ C \mathrm{A\sim C} AC

一眼题不多讲,其实 B \mathrm{B} B 做了我好一会

D 1 + D 2 \mathrm{D1+D2} D1+D2

简单题,我已开始以为只能过 D1 的然后把 D2 也给过了。首先我们把 a i a_i ai 从小到大排序,我们要让“谷”最多那么奇数位置我们就从 a n 2 + 1 a_{\frac{n}{2}+1} a2n+1 放到 a n a_n an,偶数位置我们从 a 1 a_1 a1 放到 a n 2 a_\frac{n}{2} a2n 即可。时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)

C o d e \mathrm{Code} Code

E \mathrm{E} E

一个很简单的想法就是把最大的数放在开头,因为什么都能配对。然后每一次找到能与上一次填的数不互质的最小因数即可。感觉正确性并没有保证。

C o d e \mathrm{Code} Code

F \mathrm{F} F

其实这道题目也不是很难,就是细节写起来比较麻烦。我们考虑二分答案 s s s,然后每次检验答案即对一组 ( i , j ) (i,j) (i,j) d i s ( i , j ) ≤ s dis(i,j)\leq s dis(i,j)s 那么就连边,设最后连边结束后联通快个数为 g s gs gs。我们分类讨论:

  • g s = 1 gs=1 gs=1 那么就是合法的

  • g s > 4 gs>4 gs>4 那么一定是不合法的,用抽屉原理能简单证明

  • g s = 2 gs=2 gs=2 那么对于一组 ( i , j ) (i,j) (i,j) 能通过一个点联系起来的情况如图:

  • g s = 3 gs=3 gs=3 那么对于一组 ( i , j , k ) (i,j,k) (i,j,k) 我们首先找到横或纵坐标相同的 ( i , j ) (i,j) (i,j),然后枚举 k k k ,判断方法与上面类似

    扫描二维码关注公众号,回复: 11854851 查看本文章
  • g s = 4 gs=4 gs=4 那么对于一组 ( i , j , k , p ) (i,j,k,p) (i,j,k,p) 我们首先找到横坐标相同的 ( i , j ) (i,j) (i,j),纵坐标相同的 ( k , p ) (k,p) (k,p) 然后判断两线段的交点是否合法即可。

时间复杂度 O ( n 2 ) O(n^2) O(n2)

C o d e \mathrm{Code} Code

猜你喜欢

转载自blog.csdn.net/wangyiyang2/article/details/108741722