UOJ Long Round #3 记录

A 10pts

直接开一个数组做。

submission

A 60pts

注意到置换环取反后最小值不变,于是只在最小值位置处理,这样每个环只会处理一次。将单个环取反是容易的,求最小值直接暴力。

submission

A 100pts

继续优化判断新环的过程,尝试利用 256b。

手写一个 bitset,这样就能给 \(1408\) 个位置打标记了,时间复杂度就能除掉 \(1408\)

\(\{x\mid x\bmod 214=114\}\) 打标记可以通过。

submission

F 5pts

暴力。

submission

F 45pts

\(y_i=0\),考虑分块,整块离散化维护每一段的贡献,散块暴力。

时间复杂度 \(O(nB+\frac{nq\log B}{B})=O(q\sqrt{n\log n})\)

submission

C 6pts

首先考虑如何判断一个点 \(u\) 深度(根为 \(0\)\(\le x\)\(ask(u,h+x)=0\)

对于 \(h=2\),找到根 \(rt\)\(ask(rt,1)+ask((rt+1)\bmod 3+1,1)\) 即为答案。

submission

C 9.12pts

下称深度为 \(1\) 的两个点分别为 \(x,y\)

考虑找出 \(rt\) 后直接用 \(ask(rt,d)\) 得出深度为 \(d\) 点的答案 \(s_d\),但是无法求出 \(s_0\)

注意到 \(ask(x,1)+ask(y,1)=2s_0+s_2\),故 \(s_0=\frac{ask(x,1)+ask(y,1)-s_2}{2}\)

submission

C 12.48pts

之前做法对 \(rt\) 问的次数太多了。

考虑先用 \(n\log\log n\) 次求出每个点的深度,然后对所有深度为 \(d\) 的点 \(u\)\(ask(u,1)\) 得出 \(s_{d-1}+s_{d+1}\),可以将每个 \(s\) 解出来。

submission

C 28.56pts

考虑 \(\sum ask(u,1)=3ans-s_0-2s_{h-1}\),把 \(s_0,s_{h-1}\)\(rt,x,y\) 求出即可。

submission

D 5pts

暴力。

submission

E 30pts

显然 \(s_x\)\(s_u\) 的祖先,在 fail 树上暴力跳即可,数据随机时跳的次数较小也能过。

submission

B 26pts

注意到 \(i-1,i\) 之间往左和往右的次数是相同的,设其为 \(b_i\)

\(b\) 合法的充要条件为其中非 \(0\) 值成一段区间且 \(a_i+b_i-b_{i+1}\ge0\),对非 \(0\) 区间内位置的答案产生贡献。

不难 dp,但是无脑 dp 复杂度太高了。考虑对答案差分,并同时统计对 \(r+1\) 的贡献(\(l\) 同理)。容易做到 \(O(n\sum a)\)

submission

E 50pts

\(fa_i=i-1\),此时变成一个串了,倍增跳限制即可。

submission

C 36.08pts

先判断 \(de\le 1\),然后判断是不是 \(rt\),这样只需要 \(2n+O(1)\) 次。

但是被卡了 \(1\) 次,根据可能性大力剪枝可以省掉。

submission

C 52.96pts

实际上不需要局限于求出 \(\sum ask(u,1)\),只要能凑出答案就行了。

还是先找出 \(rt,x,y\),然后用 \(rt\) 直接问可以得到 \(1\) 层,\(x,y\) 交叉可以得到相邻 \(2\) 层。

手玩不难得到 \(h\le 8\) 的处理方法,由于单点次数限制无法处理更大范围。可以通过 \(5\le h\le 8\)

submission

C 59.07pts

手玩得到 \(h=3,99\%\)\(h=4,100\%\) 的策略。

submission

C 59.2pts

手玩得到 \(h=3,100\%\) 的策略。

submission

C 71.2pts

之前的策略在大范围下至少也要 \(2n\),并且满二叉树最下面几层的点太多了,考虑让最下面若干层的点只询问 \(1\) 次用来判断深度,然后用顶部的点去凑。

单点次数限制卡的比较死,手玩只玩出来能干掉 \(2\) 层的策略,次数是 \(1.75n+O(1)\)

submission

B 56pts

之前那个属于是硬做了。限制实际上是 \(b_{i+1}\le a_i+b_i\),那么考虑容斥。容斥完变成若干段要求段内 \(b_{i+1}> a_i+b_i\)。由于 \(b_i\le \sum a\),可以直接组合数计算。

还是不难 dp 统计,时间复杂度 \(O(n^2+\sum a)\)

submission

B 69pts

效率瓶颈在于计算组合数。由于需要正反跑两遍,考虑直接把组合数存起来,就能卡过了。

submission

posted @ 2025-12-05 12:44  ax_by_c  阅读(0)  评论(0)    收藏  举报