跳转至

2019 Summer Petrozavodsk Camp, Day 8: XIX Open Cup Onsite

排名 当场过题数 至今过题数 总题数
26/? 6 9 12

A

upsolved by

题意

题解

B

solved by TYB

题意

不是签到,但比较standard,略。

题解

略。

C

upsolved by

题意

题解

D

upsolved by YZW

题意

Gomory-Hu Tree 板板题。

题解

敲板板,ACC!

E

solved by JLK

题意

\[ f(n)= \begin{cases} \frac nk & n \mod k = 0 ,\\ n-1 & otherwise. \end{cases} \]

\(n \in [l,r]\)中使得\(f^m(n)=1\)的最大\(m\),以及\(m\)最大时\(n\)的最小值和最大值。

\(2 \le k \le 10^{18},1 \le l \le r \le 10^{18}\)

题解

对于一个确定的\(n\)\(m\)就是\(k\)进制下\(n\)的每个数位之和+位数-2。

首先考虑如何确定最大\(m\)。如果从\(r\)开始枚举,如果要变,肯定是某一位-1,然后比这一位低的位全部变成\(k-1\)

每次变的时候可以计算出代价,如果能增大就变。

\(n\)的最大值和最小值都可以通过这样的方法产生。因为不这样变肯定不是最大的\(m\)

\(O(T\log_k^2 r)\)

F

upsolved by TYB

题意

给一个仅包含小写字母的串\(S\),找出满足下列条件的最长子序列\(T\)

\(1、|T|\)为偶数。

\(2、\forall i\in[1,\frac{|T|}{2}],T_i=T_{i+\frac{|T|}{2}}\)

\(n\le3000\)

题解

枚举分界点,然后\(\mathcal{O}(\frac{n^2}{w})\)算最长公共子序列(见HDU板子)。

G

solved by YZW

题意

球交!

题解

分类讨论:

  • 相离,不交。

  • 包含,全交。

  • 相切,……反正,要么不交,要么全交,要么和下面一样也行。

  • 剩下的情况,诶呀我草,怎么只交了一半,我们来讨论一下。

设球 \(A\) 球心位于 \(O_A = (x_A, y_A, z_A)\),半径 \(r_A\),球 \(B\) 同理。

容易写出球面方程:

\[(x - x_A)^2 + (y - y_A)^2 + (z - z_A)^2 - r_A^2 = 0\]
\[(x - x_B)^2 + (y - y_B)^2 + (z - z_B)^2 - r_B^2 = 0\]

小学生都会的减法:

\[-2(x_A - x_B)x - 2(y_A - y_B)y - 2(z_A - z_B)z + |\vec{OO_A}|^2 - r_A^2 - |\vec{OO_B}|^2 + r_B^2 = 0\]

嘿嘿,这就是球面交圆所在的平面。球交的部分可以被这个平面分成俩……球盖?还是啥的东西。

接下来我们只需要算球盖体积就好,设半径 \(R\),球盖高度 \(r\),这是一个小朋友都会的积分:

\[\int_{R-r}^R \pi(R^2-x^2)\,\mathrm{d}x = \pi R^2r-{1\over 3}\pi R^3+{1\over 3}\pi(R-r)^3\]

没了。

H

solved by TYB

题意

签到。

题解

略。

I

upsolved by

题意

题解

J

upsolved by TYB

题意

给长度为\(n\)的串\(S\)\(q\)次询问区间\([l,r]\)有多少满足下列条件的子串\(T\)

\(|T|\)为偶数,且\(\forall i\in[1,\frac{|T|}{2}],T_i=T_{i+\frac{|T|}{2}}\)

\(n,q\le10^6\)

题解

先把runs求出来,对于一组\((l,r,p)\),我们可以把它分成若干个\((l,r,k)\),表示区间\([l,r]\)中任意长度为\(k\)的区间都有\(1\)的贡献,根据runs的理论,这个数量级也是\(\mathcal{O}(n)\)的,接下来就成了数据结构问题。

考虑拆贡献,把一个\((l,r,k)\)拆成\((l,+\infty,k)\)\((r-k+2,+\infty,k)\),下面讨论一个\((u,+\infty,k)\)对询问\((l,r)\)的贡献。

符合条件的左端点\(x\)有下列条件:

\[r-l+1\ge k\]
\[\max(u,l)\le x\]
\[x\le r-k+1\]

贡献为:\(\max(r-k+2-\max(u,l),0)\),这个难以计算,尝试化一下:

\[ \\ \\ \]
\[\max(r-k+2,\max(u,l))-\max(u,l)\]
\[\max(r-k+2,u)-(\max(l-u,0)-u)(有第一个条件,r-k+2\ge l)\]
\[\max(r-k+2-u,0)-\max(l-u,0)\]

然后就可以树状数组算了。

K

solved by YZW

题意

签到。

题解

想了想,觉得状压时在 \(O(2^{|S|})\) 的时间内枚举集合 \(S\) 的子集是人尽皆知的事情,似乎没啥必要写,略。

L

solved by YZW

题意

有无限行点排成金字塔形状,其中第 \(i\) 行有 \(i\) 个点。

给出 \(l, r\),问第 \(l\) 行至第 \(r\) 行点能形成多少个不同的等边三角形。

\(T\) 组数据,\(1\leq T\leq 3\times 10^5\)\(1\leq l\leq r\leq 10^5\)

题解

容易得到答案为和式:

\[\sum_{i=0}^r \sum_{j=0}^{r-i} \sum_{k=i}^{r-i-j} ([i>0] + [j>0])(k-i)\]

显见答案应为关于 \(l, r\) 的二元多项式,但在 \(2l < r\)\(2l > r\) 时有所不同。

咋看都觉得次数不会很高,算出来前 \(8\times 8\) 项,高斯消元算出来系数就知道二元多项式是啥了。实际上次数好像是 \(4\)

Fuck Python! Too slow to get AC!

\(O(T)\)

记录

TYB开场犯病觉得会F,交了两次,JLK帮忙看,发现假了,也不会修。

YZW过K(0:46)。

YZW在搞L,TYB和JLK讨论H。

YZW交L,用Python先TLE了一次,换C++又WA了。

TYB先写H,过了(1:55)。

YZW过L(2:25)。

JLK大概会了E,开始写。YZW也会了G。

E写完wa了,YZW写G,TYB和JLK发现E还有一些情况,又讨论了一下,又交了一次,又wa了。

YZW过G(3:26),JLK过B(3:27)。

TYB写了一年B,终于过了(4:32)。

然后开摆。

总结

TYB:开场可能有点糊涂,还是应该让队友确认一下做法;B这种有些细节的题,应该仔细想清楚;准备Python的FastIO。

YZW:想清楚再写应该会快不少。

Dirt

E(-2)

L(-2)