Day0
开幕式
就听了一大堆发言,就这么过去了。
热身赛
拿到题面,队友果断切了D题和C题,接下来我们就开始看B。
B题是一个博弈,就是有
n
n
n堆石子,每堆
A
i
A_i
Ai个,每个回合可以从1~2堆中取任意多个。然后问
L
i
≤
A
i
≤
R
i
L_i\le A_i\le R_i
Li≤Ai≤Ri的条件下先手必败局面的数目。
于是开始分析,起初以为取2堆的话必须取一样多,然后猜想是3进制的“异或”,对照一下样例发现不对,又重新读题。
后来开始从简单情况一步步分析:
1堆先手胜
2堆先手胜
3堆相等时后手胜,否则先手胜
4堆没推完
莫非,,3堆相等的可以消去?
发现不太行。。。
又去看A
A题是给定1个圆
O
O
O和2个圆外的点
A
,
B
A,B
A,B,求两点之间,一条经过圆周但不进入圆内的路径的长度。
开始又看错题了(以为不一定经过圆周),好在影响不大。
于是根据
A
B
AB
AB是否与圆相交分类:
相交时,最短路径是两条切线+一段圆弧
否则是两条线段。
于是我们做法如下:
记
θ
=
∠
A
O
B
=
arccos
O
A
⃗
∙
O
B
⃗
O
A
∙
O
B
\theta=\angle{AOB}=\arccos{\frac{\vec{OA}\bullet\vec{OB}}{OA\bullet OB}}
θ=∠AOB=arccosOA∙OBOA∙OB
α
=
arccos
r
O
A
,
β
=
arccos
r
O
B
\alpha=\arccos{\frac{r}{OA}},\beta=\arccos{\frac{r}{OB}}
α=arccosOAr,β=arccosOBr
若
θ
≤
α
+
β
\theta\le \alpha+\beta
θ≤α+β
a
n
s
=
r
(
θ
−
α
−
β
+
tan
α
+
tan
β
)
ans=r(\theta-\alpha-\beta+\tan{\alpha}+\tan{\beta})
ans=r(θ−α−β+tanα+tanβ)
否则
记
a
=
O
A
,
b
=
O
B
a=OA,b=OB
a=OA,b=OB
求
f
(
x
)
=
a
2
+
r
2
−
2
a
r
cos
x
+
b
2
+
r
2
−
2
b
r
cos
(
θ
−
x
)
f(x)=\sqrt{a^2+r^2-2ar\cos{x}}+\sqrt{b^2+r^2-2br\cos{(\theta-x)}}
f(x)=a2+r2−2arcosx+b2+r2−2brcos(θ−x)的最小值。
WA了十几发,调了半天没找到bug。。
真:签到五分钟,自闭三小时
Day1
A
签到
C
矩形中有一个特殊点和许多普通点,要构造一个角,角内只有特殊点没有普通点,角内的矩形周长最大。
计算几何,题假了,我们也想了假做法(就是角顶点与特殊点重合,再极角排序),歪打正着233
G
签到
F
从一个无向图中选一个子图,子图边权1,点权-1,子图中的点与外界的点之间的连边权值-1,求最大权值。
每个连通块全删或全留(否则一定不会更优),用带权并查集维护(开始题意理解错了,忽略了子图中点与外界的连边,想了个删叶子的假做法,WA了又回头读题)
E
没看,队友过了
K
一棵有根树,根节点有无数军队,每秒可以移动一个军队到相邻点,求军队访问所有点的最短时间。
我们做法是优先访问深度较浅的子树。除最浅的子树外,其他子树可以选择从前一棵子树(最深军队)回来的军队和根节点的军队。过了,但不会证明。
I
维护一个类似“线性空间”的东西。
即判断
[
x
1
x
2
.
.
.
x
n
y
1
y
1
.
.
.
y
n
]
[
w
1
w
2
.
.
.
w
n
]
=
[
x
y
]
\left[\begin{matrix}x_1&x_2&...&x_n\\y_1&y_1&...&y_n\end{matrix}\right] \left[\begin{matrix}w_1\\w_2\\...\\w_n\end{matrix}\right]=\left[\begin{matrix}x\\y\end{matrix}\right]
[x1y1x2y1......xnyn]⎣⎢⎢⎡w1w2...wn⎦⎥⎥⎤=[xy]
是否有整数解。
不太会。。