题号 | A | B | C | D | E | F | G | H | I | J | K |
---|---|---|---|---|---|---|---|---|---|---|---|
状态 | - | Ø | O | O | - | O | Ø | - | - | Ø | Ø |
O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试
比赛时间
2020-07-13 12:00-17:00
给出$n$个字符串,定义$f(s,t)$为$s$的前缀与$t$的后缀相等的最大长度。统计$\sum\limits _{i=1}^n\sum\limits _{j=1}^nf(s_i,s_j)$。
可以先对所有串的所有后缀哈希,则对于每个串,可以得到第$i$位前缀与$\text{cnt}[i]$个后缀相同,但这个前缀未必是长度最大的,kmp一下$\text{cnt}[\text{nxt}[i]]-=\text{cnt}[i]$即可得到每一位的真正贡献。
问过原点的圆周里过给定点数量的最大值。
$n\le 2000$,想到选各点作为圆上一点$P$则圆心在$OP$的中垂线上,对于中垂线两两求交点看重合次数。map查询$O(n^2\log n)$
签到题,把两个时间都换算成到 $0:0:0$ 的秒数,相减取绝对值。
$n\times m$矩阵$a[i][j]=\gcd(i,j)$求所有$k\times k$子矩阵最大值的和
先对某一维单调队列(对于每行$k$列最大值缩为一格),之后另一维也单调队列。。$O(nm)$,gcd这个暴力要多个$\log n$,有点慢,但卡过去了,其实是应该记忆化
给两个序列 $A$ 和 $B$,求 $A$ 的所有长度为 $|B|$ 的子串中,每一位都对应大于 $B$ 的每一位的个数。
用 $\text{bitset}$ 压位,先预处理出 $S$ ,其中 $S[i][j]=1$ 表示 $A[i]>=B[j]$,并维护 $A$ 的长度为 $|B|$ 的子串 $a$ 的前缀与 $B$ 的后缀的大小关系,考虑从后往前 $\text{dp}$。具体来说就是,$cur[i]=1$ 表示 $a$ 的 $m-i$ 前缀每一位都对应大于等于 $B$ 的 $m-i$ 后缀,从后往前滚动,每次向左移一位,把 $m-1$ 置为 $1$,再与 $S[i]$ 按位与,统计 $cur[0]=1$ 的个数就是答案。
三个半径分别为$r_1,r_2,r_3$的同心圆上分别取一点构成三角形,求面积期望,保留一位小数。(懂了,保留一位小数就是增量乱搞qaq)
暴力积分有点难,涉及到负面积之类的,所以掺杂一点乱搞成分比较好。第一维位置固定,第二维增量乱搞,第三维easy积分。
第一维取点$G$,第二维在$[0,\pi]$间均匀枚举一定量的角度得$E$,第三位积分算圆周到$EG$直线的距离即可得三角形面积。