ABC151

题目

打着玩的。

A.Next Alphabet

Time:\(0:38\)
Dif:\(\color{Gray}{13}\)

Skip.

B.Achieve the Goal

Time:\(3:12\)
Dif:\(\color{Gray}{40}\)

Skip.

C.Welcome to AtCoder

Time:\(6:35\)
Dif:\(\color{Gray}{333}\)

Skip.

D.Maze Master

Time:\(16:07\)
Dif:\(\color{Green}{959}\)

Description

给一个迷宫,求一组起点和终点使得他们之间的路径长度最大。输出长度。
\(1\leq H,W\leq20\)

Solution

暴力枚举起点然后做BFS即可。

E.Max-Min Sums

Time:\(28:25\)
Dif:\(\color{Turquoise}{1344}\)

Description

给一个数列 \(a\),在其中任选一个 \(k\) 个数的子序列 \(S\),定义 \(f(S)=\max_{i\in S} a_i-\min_{i\in S} a_i\),求 \(\sum f(S)\bmod 10^9+7\)
\(1\leq n\leq10^5\)

Solution

\(a\) 数组排序,则从大到小第 \(i\) 个数成为子序列中最大值的次数为 \(\dbinom{n-i-1}{k-1}\),同理从小到大第 \(i\) 个数成为最小值的次数为 \(\dbinom{n-i-1}{k-1}\),乘一乘减一减就好了。
Code

F.Enclose All

Time:\(36:41\)
Dif:\(\color{Blue}{1671}\)

Description

平面内有 \(n\) 个点 \((x_i,y_i)\),求一个半径最小的圆覆盖所有点。输出半径。
\(2\leq n\leq50,-1000\leq x_i,y_i\leq1000\)

Solution1

模拟退火。没了。
Code

Solution2

考虑到这个圆弧不可能只覆盖一个点,不然肯定能更优。
所以分类讨论。

  1. 圆周上只有两个点。为了半径最小,圆心就是两个点连线的中点。判断一下其他点是否成立。
  2. 圆周上有三个点及以上。枚举三个点,那这个圆就已知了。判断其他点是否在圆内即可。

时间复杂度 \(O(n^4)\)

posted @ 2022-05-10 19:34  1358id  阅读(20)  评论(0编辑  收藏  举报