下笔春蚕食叶声。

Codeforces Round #549 (Div. 1)

Link

考完期末的晚上打的vp
只 做 出 A

A

如果给定了 \(l\),设停了 \(c\) 次,那么 \(c\) 是最小的满足 \(nk|cl\) 的正整数
\(cl=lcm(nk,cl)\)
\(cl=\frac {nkl} {gcd(nk,l)}\)
\(c=\frac {nk} {gcd(nk,l)}\)

然后考虑 \(l\) 的取值。必然是 \(\pm a\pm b+ik\)\(i\) 是任意值,且满足 \(l \le n\)
直接全扫一遍就好了
记 得 开 long long

B

不妨设 \(p_i\) 为颜色
然后每个点和排列中后置颜色的最早点连边
然后要判区间 \([l,r]\) 中的所有边是否能够产生一条长度为 \(n-1\) 的路径
画个图发现是个倒过来的树
考虑每个点向后跳 \(n-1\) 个是 \(pre_i\),即在树上的 \(n-1\) 级祖先(是这么说吗
询问 [l,r]就考虑 pre[l~r]的最小值是否\(\le r\) st表即可。
哦,我们发现,\(pre[i]\ge i\) 然后我们直接后缀就行,不用st表
很 套 路 但 竟 然 没 想 到 是 树???

C

考虑移项 \(y=x^2+bx+c\Rightarrow y-x^2=bx+c\)
那么可以将每个点变为 \((x,y-x^2)\) 抛物线就会转化为直线。
如果一个点 \((x,y)\) 在一个抛物线上方,那么 \(y>x^2+bx+c\),即 \(y-x^2>bx+c\) 即在直线上方
容易想到,答案是上凸包的段数
特判 \(x\) 相等的点,他们不形成抛物线。如果有多个点在同一条抛物线上,只能计算一次。(也就是凸包中的 \(\le 0\),防止直线)
为什么又 想 不 到 移 项 啊

D

容易想到dp \(f_i\) 转移到 \(f_{i+1}\) 的情况,在后面加一位
然后这个题目有一个性质,就是排名 \(\bmod 11\) 的余数相同的数在后面加一位 \(c\),加出来的数的排名 \(\bmod 11\) 的值是一样的
感性理解就是 11 个数一组。开头是 \(1,2,3,4,5,6,7,8,9,10,20\) 能拓展出 55 个数 \(55\bmod 11=0\)
证明:
\(k\) 名,加一位 \(c\)

\[k'=9 + \sum_{i=1}^{k-1} i + c+1 \]

(前9个不是由拓展得来)
\(\bmod 11\) 意义下就是

\[k'=9 + \frac {(k-1)*k} {2} + c+1 \bmod 11 \]

那么就可以将dp状态设为 \(f_{i,j}\) 就是字符串第 \(i\) 位为最后一位,排名 \(\bmod 11\)\(j\) 的子串个数。

posted @ 2022-01-20 19:58  ACwisher  阅读(33)  评论(0编辑  收藏  举报