2024 Aug

ABC366

[Problem A] Election 2

\(N\) 个人投票选举,两位候选人 Takahashi 与 Aoki 分别获得 \(T\) 票与 \(A\) 票,请问此时能否确定谁将赢得选举?

\(0\leq T,A,T+A\leq N\leq 99\),且 \(N\) 为奇数。


\(M = \dfrac{N+1}{2}\),则判断 \(T,A\) 是否有一个大于等于 \(M\) 即可。

[Problem B] Vertical Writing

给定 \(N\) 个字符串 \(S_i\),所有字符串用 * 补齐到最长长度,你需要将现在形成的字符矩阵顺时针旋转 \(90\degree\),并删掉旋转后字符矩阵每一行末尾连续的 *,请问旋转结果?

\(N, |S_i|\leq 100\)


直接求出最长长度,然后下标从 \(N\)\(1\) 扫字符串判断这一位填什么就可以了。

最后用 popback 去一下 *

[Problem C] Balls and Bag Query

给定一个袋子,维护 \(Q\) 个操作,分为如下三种:

  • 1 x,表示往袋子中加入一个编号为 \(x\) 的球。
  • 2 x,表示从袋子中丢掉一个编号为 \(x\) 的球,保证有这么一个球。
  • 3,表示询问袋中的球的编号种类数量。

\(Q\leq 2\times 10^5, 1\leq x\leq 10^6\)


经典题,set 维护答案,直接开个变量也可以,map 维护某个球的数量,直接开个桶也可以,毕竟值域不大。

时间复杂度为 \(\mathcal{O}(Q)\)\(\mathcal{O}(Q\log_2 Q)\)


[Problem D] Cuboid Sum Query

给定一个三维数组 \(A_{i,j,k}(1\leq i,j,k\leq N)\),给定 \(Q\) 个询问,每次询问给出 \((lx,rx,ly,ry,lz,rz)\),求所有满足 \(lx\leq x\leq rx, ly\leq y\leq ry, lz\leq z\leq rz\)\(A_{x,y,z}\) 的和。

\(N\leq 100, Q\leq 2\times 10^5, A_{i,j,k}\leq 999\)


经典三维前缀和 + 三维差分。

Show 一下我的代码:

sum[i][j][k]=sum[i-1][j][k]+sum[i][j-1][k]+sum[i][j][k-1]-sum[i-1][j-1][k]-sum[i-1][j][k-1]-sum[i][j-1][k-1]+sum[i-1][j-1][k-1]+a[i][j][k];
int ans=sum[rx][ry][rz]-sum[lx-1][ry][rz]-sum[rx][ly-1][rz]-sum[rx][ry][lz-1]+sum[lx-1][ly-1][rz]+sum[lx-1][ry][lz-1]+sum[rx][ly-1][lz-1]-sum[lx-1][ly-1][lz-1];

Haha,一发过。

[Problem E] Manhattan Multifocal Ellipse

给定平面上 \(n\) 个点 \((x_i,y_i)\),求有多少个点 \((x,y)\) 满足该点距给定 \(n\) 个点的曼哈顿距离和不超过 \(D\)

\(n\leq 2\times 10^5, -10^6\leq x_i,y_i\leq 10^6\)


直接枚举当 \(x=i,y=i\) 时在对应坐标轴上距 \(n\) 个点的距离,然后开个桶存一下,最后答案就是 \(\sum_{0\leq i\leq D} bx_i \sum_{0\leq j\leq D-i} by_j\),前缀和优化即可。

时间复杂度为 \(\mathcal{O}(n\log_2 n + V)\)

[Problem F] Maximum Composition

给定 \(n\) 个一次函数 \(f_i(x) = a_ix + b_i\),求一个长度为 \(k\) 的正整数序列 \(p\),且 \(p\) 中元素两两不同,使得 \(f_{p_1}(f_{p_2}(\cdots f_{p_k}(1)\cdots))\) 最大。

\(k\leq n\leq 2\times 10^5, k\leq 10, 1\leq a_i,b_i\leq 50\)


首先不可能按照 \(1\sim n\) 的顺序转移,这样不能保证两两不同。

能否找到一种顺序呢?答案是可以,我们用贪心可以证明:

\[a_i(a_j + b_j) + b_i > a_j(a_i + b_i) + b_j \]

相当于是:

\[a_ib_j + b_i > a_jb_i + b_j \]

也即:

\[(a_i - 1)b_j > (a_j-1)b_i \]

也就是说你先采用的变换满足 \((a_j-1)b_i\) 尽量小,排序后 DP 即可。

时间复杂度为 \(\mathcal{O}(n\log_2 n + nk)\)

[Problem G] XOR Neighbors

给定一张无重边无自环的 \(n\) 个点 \(m\) 条边无向图,求是否存在一组点权 \(x_i\),满足对每一个点都有:该点的所有邻居(不含自己)的点权的异或为 \(0\)

\(n\leq 60\),你的构造需要满足 \(1\leq x_i < 2^{60}\)


如果不要求 \(x_i > 0\) 则可以用 \(0/1\) 解来构造合法答案,问题是不能取 \(0\)

但是我们发现,最多 \(60\) 个元,但是我们可以有 \(60\) 组方程组,首先按位考虑,我们可以对每一位都钦定某一个元,该元在该位上的值强制为 \(1\),然后解方程组。

处理很简单,把与这个点 \(u\) 相邻的点 \(v\) 的方程组中,这个点 \(u\) 的系数改为 \(0\),然后要求答案为 \(1\)

这个可以用高斯消元求出,如果某一次求出方程组无解则必定无解,否则因为每一个元都被钦定某个位为 \(1\),此时显然满足点权限制。

时间复杂度为 \(n\) 轮高斯消元,时间复杂度为 \(\mathcal{O}(n^3 + \frac{n^4}{\omega})\),前面的搞出方程组,后面是求解,然后你还会发现 \(\omega > n\)

posted @ 2024-08-10 21:59  ydzr00000  阅读(20)  评论(0编辑  收藏  举报