1.15~1.21 一周总结

考试-直接复制的联考经验和总结

1.16 BJ 联考

三道简单题,一个唐氏儿😅😅😅😓😓😓🐨🐨🐨

image

T1

\(n\le 60,H,W\le 10^9\)

显然二分答案。然后我以为这是 4-SAT 🤡

发现只要认为可以在端点相交,两个点如果相交,那么限制一定形如:这个点选择 \(a\) 形态,那个点一定选择 \(b\) 形态。

最后,看看每个点的四个选择是否有一个只有他自己在一个强连通分量(别的三个不和它一起),如果每个都是这样就满足条件。

上面可能是假的。

保证正确的:

拆成这样。考虑每一块小的,会有一些 2-sat 限制。那个类似于 4-sat 限制的东西可以被拆为: 14 必须有且仅有选一个,23 一样。

\(O(n^2\log V)\),常数极大。

T2

\(n\le 10^5,T\le 15\)

就是比较排列的逆序对为奇数和偶数的方案数。发现求行列式即可。

发现答案为 \(0\)\(1/-1\)。使用快速行列式,即考虑使用可并堆,每次把当前左端点最左的一堆点的右端点最小的拉出来,修改剩下点的右端点。这可以可并堆实现。可能涉及模拟交换行。并查集。

\(O(Tn\log n)\)

T3

这里剩下的是区间剩下的。

就是任意长度为 \(k\) 的连续区间线性相关的序列个数。

考虑求存在 \(k\) 长连续区间线性无关的序列数。

首先发现 \(k>\lceil \log_2 m\rceil\) 的话任意 \(k\) 长度区间均线性相关。这样我们把 \(k\) 缩小到了 \(O(\log)\) 级别。

采用 dp,设 \(f(i,j)\) 为考虑到 \(i\) 位,\(j\) 是后缀极长线性无关子串长。

转移分两种。如果和上面的东西线性无关 \(f(i+1,j+1)+f(i,j)\times (m-2^j+1)\to f(i+1,j+1)\)

否则枚举 \(l<j\)\(l\) 是新的数和 \(l\) 长后缀线性无关,\(l+1\) 就线性相关了。就是 \(f(i+1,l+1)+f(i,j)\times 2^l\to f(i+1,l+1)\)

这一过程是线性变换,可以使用矩阵乘法优化 dp。

注意答案的统计。需要 \(\sum f(i,k)\times m^{n-i}\),把它认为是 \(m\) 为自变量的多项式,秦九韶算法即可把他搞成线性变换,压进矩阵乘法里。

时间复杂度 \(O(\log^3 m\log n)\)

今天做题做的太小丑了。

1.17 Hez Difficult round

Difficult round。

T1T2 没看懂。

T1 是神秘构造,T2 是神迷题。

来看看可做题 T3。

\(n\le 5\times 10^5,q,V\le 10^5\)

发现就是 \(b_i=(i-1)(n-i)\),求 \(\sum b_is_i\) 最大,可以重排 \(s_i\)

这个点积的形式不好维护,换个形式:

先给 \(b\) 从大到小排序。

\(d(i)=\sum_{j=1}^i b_j,c_i=\sum [s_j\ge i]\)。那么

\[Ans=\sum_{i=1}^V d(c_i) \]

发现询问等价于 \(c_i\) 区间加减。

不难发现 \(d\) 的奇数和偶数构成不同的三次函数。从而采取线段树维护序列 \(d(c_i)\),发现区间的 \(d(c_i+x)\) 是关于 \(x\) 的三次函数。维护区间 \(d(c_i+j),j\in[0,7]\cap \Z\),更新标记的时候插值更新即可。

\(O(q\log n)\)

T1 看懂了,是神秘构造。

1.18 BJ 联考 🤡🤡🤡🤡🤡

三道题都被神秘做法艹了。只能说不会造数据可以不造😓😓😓

T1

一棵树,如果距离这个点 \(\le k\) 的点都被选了,那么可以获得 \(v_k\) 的收益。\(v\) 递增。选择点 \(u\)\(w_u\) 的代价。

全选直接过了。不是很蹦得住。

设计 dp。基于至少一个点被选中(否则是 \(0\)),设 \(f(i,j)\) 为第 \(i\) 个点,其下面有 \(j\) 层都被选中,带来 \(v_u-w_u\) 的收益。转移要从 \(\forall v\in son(u),f(v,j)\),转移来,其中必须有 \(j\ge i-1\)。考虑对父亲的限制。\(f(fa_u,j)\) 必须满足 \(j\ge i-1\)。这个限制可以被转化为 \(i\le j+1\),那么可以转化为对(父亲)选儿子的限制:总的限制就是 \(\forall v\in son(u),f(v,j)\),有 \(i-1\le j\le i+1\)

T2

\(n\le 10^6,p\le 2\times 10^5\)

首先借助原根和离散对数变成加法。

这里可以利用 bitset 得到 \(O(\dfrac{p^2}w)\) 的做法,注意同一个值不改变背包状态的不要继续,才能保证复杂度。直接过了。

但是存在更优的做法。每次加 \(x\)\(\bmod p\) 再连边会构成若干个环。所以 \(f((i-x)\bmod p)=1\)\(f(i)=0\) 的数量等于 \(f((i-x)\bmod p)=0\)\(f(i)=1\) 的数量。每次使用树状数组维护多项式哈希,再二分找到(这样的)不同的位置即可,均摊复杂度正确。\(O(n\log^2n)\)

T3

\(n,m\le 2\times 10^5\).

使用知名的最大团算法可以达到 \(O(\sqrt m 1.63^{\sqrt m})\) 的复杂度,直接过了。

否则需要挖掘题目性质。考虑反图 \(E'\)(此时找独立集)。如果 \(a<b<c,(a,b),(b,c)\in E'\),则 \((a,c)\in E'\),这是显然的。那么这是“全序的图”。那么求最大独立集等于最长反链等于最小链覆盖,可以二分图匹配。

考虑优化匹配。把度数大的先暴力匹配,可以发现只剩下 $O(\sqrt m) $ 个;剩下的跑增广路算法,时间复杂度 \(O(n\sqrt m)\)。使用并查集维护当前弧。

1.20 2022 Jiangsu Collegiate Programming Contest

ABCD

A 模拟签到

B

\(1\sim n\) 分成若干个环,每个环相邻两个数的和是质数。环不能是二元的。

\(n\le 10^4\)

一开始看错题了,以为一个环上可以出现多次一个数(跑个 dfs 树上欧拉序),没绷住。

然后考场上胡了个假的网络流,判不了二元环。然后就没想这道题(让 👻 去做,没做出来),去面馆等的时候借了个小朋友的笔三分钟胡出来了。

见数据范围知网络流。

怎么刻画环的性质:每个点,出度和入度都为一。据此,可以进行拆点,但是无法规避二元环。

考虑另外刻画环的方法。注意到相邻的是奇数和偶数,故环是偶长环。不妨把无向边变成有向边,钦定奇数指向偶数,那么环等价于奇数出度为 \(2\),入度为 \(0\);偶数反之。这样直接规避了二元环,因为二元环等价于重边。然后网络流建图跑最大流即可。注意二分图的最大流复杂度是 \(O(n\sqrt m)\),复杂度约为 \(O(n\sqrt{n\pi(n)})\)

C

简单单调队列+调和级数复杂度 dp。

D

给定一个序列和一个数 \(n\),每次询问一个区间,问在区间中找若干对的距离为 \(n\) 的数的最大权值和。其中一对数必须两个不同。\(k<n\le 10^5\)

首先观察到下标模 \(k\) 剩余系中不等价的东西互相没有影响。在下标模 \(k\) 意义下考虑即可。

显然 dp 可行,但时间复杂度太大。考虑优化 dp。看起来这玩意不能加速转移复合,考虑保存转移的状态;莫队刚好可以这么做到。

不删除回滚莫队。只需要考虑极左右的。设 \(f(i,j)\) 是左右 \(i,j\) 空出来的当前 dp 数组。转移 trival。

EFGH

E

给定 \(n,k\) 和长度为 \(n\)\(a,b\) 两个序列,你可以将 \(a\) 重新排列,最小化:

\[\sum_{i=1}^n \lceil \frac {\max(b_i-a_i,0)}k\rceil \]

\(1\le n\le 10^5,1\le a,b,k\le 10^9\)

实际上就是把 \(b_i\) 一次减去 \(k\),保证比某个 \(a_i\) 小。

如果最大的 \(a_i\) 大于当前最大的 \(b_i\),就直接匹配。

否则需要把 \(b_i\leftarrow b_i-k\)。这个过程不会改变 \(b_i\bmod k\),数据结构维护即可。

F

\(n\) 种物品和一个容纳重量为 \(k\) 的背包,每种物品有价值 \(v\) 和重量 \(w\) 两种属性,无限个。
你可以购买至多 \(m\) 次,每次购买一个任意种物品,如果购买了 \(i\) 个,最后重量不能超过 \(k + i\).
一种方案的价值是物品价值之积,求所有方案价值之和 \(\bmod 998244353\).
$n, m, k ≤ 10^5

容易知道,一次操作的生成函数是 \(f(x)=\sum_{i}v_ix^{w_i}\),然后我们枚举购买了多少个物品。

\[\sum_{i=0}^m\sum_{j=0}^{i+k}[x^j]f^i(x)\\ =\sum_{i=0}^m[x^{i+k}]f^i(x)\frac 1 {1-x}\\ =\sum_{i=0}^m[x^k]\frac 1 {1-x} (\frac {f(x)}x)^i\\ =[x^k]\frac 1 {1-x}\sum_{i=0}^m(\frac {f(x)}x)^i\\ =[x^k]\frac 1 {1-x} \frac {1-(\frac {f(x)}x)^{m+1}}{1-\frac {f(x)}x}\\ =[x^{k+m}]\frac 1 {1-x}\frac {f(x)^{m+1}-x^{m+1}}{f(x)-x} \]

对于 \(f(x)-x\) 的部分,如果常数项为 \(0\),我们可以平移求逆(本题保证不为 \(0\))。

G 神秘

IJKH

I 题诈骗题,特判一下即可。还真有人用 SA 的 h 数组过了。

J 题不知道题解在写啥,打表出来发现值非 \(0\) 的值集中在二的次幂周围,且一共只有不到 \(500\) 个,可以直接打表。

K 题简单构造,然后 🤖 降智严重,2h 才过。

L 题

长度为 \(n\) 的只含有 ABC 的字符串.
选择连续的三个位置 ABC,如果 A 在奇数位置就删去 AC,否则删去 B.
最大化操作数.

\(1\le n\le 2\times 10^5\)

我们考虑把原串划分成当作 A……ABC……C 的字符串。

我们发现,删掉 AC 不改变后面的奇偶性,但是会改变这个 B 的奇偶性,所以我们要知道前面有多少个删掉的 B。

然后对于每一段只能删一次 B,而且删完之后这段 AC 就没用了,但是可以改变后面串的奇偶性。

对于能删 AC 或者 B 的,我们可以删 B,因为能使后面的奇偶性可以改变。

时间复杂度 \(O(n)\)

学习

学了点分树板子和二次剩余。

过了旋转卡壳。

写题

补了 NOIP T3。

复习了计算几何,当时想着省选肯定要用,默写了几遍,反正目前没用。

做了两道计数(即使是多项式计数也有不少落后的啊!)。

posted @ 2024-01-22 21:03  British_Union  阅读(16)  评论(0编辑  收藏  举报