ICPCCamp 2017. Day 1. ftiasch's Contest 5 题解

ICPC camp,题目质量挺高。

link

A \(\color{Gold}\bigstar\)

想了一下按值域从大到小放,相当于每次分裂成两个子问题。

直接做是 \(O(n^3)\) 的,看着不太能优化。

考虑从前往后直接做,设 \(f_{i,j,k}\) 表示填了前 \(i+j\) 个,\([i,i+2]\) 中最大的是 \(i+j\),他的值是 \(k\) 的答案。

然后就继续放数,枚举一下下一个产生影响的最大值,前缀和后缀和转移一下就是 \(O(n^2)\) 的了。

B \(\color{green}\bigstar\)

没啥意思题,分类讨论所有六元非简单环情况,然后爆算。

01 矩阵乘法用 bitset 做,\(O(\frac{n^3}{w})\)

C \(\color{Gold}\bigstar\)

好题啊。

首先直接暴力是分拆数级别的,过不了。

答案需要对 \(2\) 取模,构造了一下对称,发现构造不出。

本质是只要把联通情况解决就行,也就是把所有连通块个数不是 \(1\) 的去掉就行。

假设我选了一个点集 \(S\),设 \(c(S)\) 表示连通块个数,那么:

\[\sum 2^{c(S)} \bmod 4 \]

这样就把个数不是 \(1\) 的全部去掉了,然后只有一个的也自动对 \(2\) 取模,因此答案是这个除以 \(2\)

考虑一下这个的组合意义,相当于每个点染黑白,或者无色,要求不能有一条边左右两个点分别染了黑白。

暴力状压,设 \(\max |a_i-b_i|=L\),复杂度 \(O(n3^L)\)

D \(\color{blue}\bigstar\)

神秘背包,一眼同余最短路一下。

\(L=\text{lcm}\{1,2,3,...,n\}\),然后可以把每个物品的体积和对 \(L\) 取模,然后剩下的部分的和只有 \(nL\),可以暴力,然后相当于是一堆等差数列的并,直接做就行。

还有【数据删除】做法。

E \(\color{green}\bigstar\)

经典题了,把一个点的权值变成到根路径的权值和,然后 \(w_{lca(x,y)}\) 变成两条链的并的和,树剖简单维护就是双 \(\log\)

F \(\color{blue}\bigstar\)

相当于是一个矩阵乘法,但是要求出每个点值。

倍增显然不太行,考虑分块一下,设先把 \(P^1,P^2,...,P^B\) 预处理一下。

遇到新加点就必须把矩阵修改一下,然后正常每 \(B\) 个之后做一次向量乘矩阵,然后答案注意到只需要求单点,因此可以 \(O(n)\)

总复杂度 \(O(n^3B+mn^2+\frac{L}{B}n^2+Ln)\)

随便取个 \(B=n\),复杂度 \(O(n^4+mn^2+Ln)\)

G \(\color{green}\bigstar\)

只能递推,前面一个区间的乘积,但是满足双指针。

最近做过类似的,直接对底栈维护一下,左边栈空了右边就全部过去即可。

复杂度 \(O(nm^3)\)

H \(\color{green}\bigstar\)

oeis

暴力打表的,证明有时间再读论文。

I \(\color{red}\bigstar\)

神秘数据结构维护 dp,还不会。

J \(\color{red}\bigstar\)

计算几何,不会。

K \(\color{blue}\bigstar\)

有点意思。

考虑对于一个集合,怎么选出这个集合。

对于 EC-Final 部分,肯定是选一个前缀,能选就选,也就是选到第一个不选的位置。

然后我们知道了一个一定不选的位置,然后去上面的比赛里面,找一个前缀选,下一层是一个 \(2^c-1\) 的东西,树状数组维护一下即可。

posted @ 2023-10-31 08:56  houzhiyuan  阅读(80)  评论(0编辑  收藏  举报