摘要:
基础思路 先来看点显然的。 我们设 $A$ 的个数为 $a$,$B$ 的个数为 $b$。 经过一次变换,$A\rightarrow B,B\rightarrow BA$, 只有 $B$ 会变出 $A$,那么就有 $a\leftarrow b$。 $A,B$ 都会变出 $B$,那么就有 $b\left 阅读全文
摘要:
加上头文件 #include <numeric> 加上头文件 #include <functional> 废话不多说,直接上代码: 数组求和 加和 sum = 0; for(int i = 0;i < n;++i) sum += a[i]; printf("%d", sum); 等价于 printf 阅读全文
摘要:
应 zzj 要求。 思路 1:暴力 没什么好说的吧…… 分离出每一位,去掉 $9$,再转化成 $9$ 进制即可。 核心代码: int f(int x) { int a[10], c = 0, r = 0; while(x) a[++c] = x % 10, x /= 10; for(int i = 阅读全文
摘要:
前置芝士: 简单的位运算知识:x & 1 == 1 则 x 是奇数,否则是偶数。 小奥奇偶性: A B A+B 奇数 奇数 偶数 奇数 偶数 奇数 偶数 偶数 偶数 思路 分类讨论: 都是偶数:NO 任意操作后数列的每个数都仍然是偶数,和也是偶数。 都是奇数:这个不好判断。 奇数个奇数加起来是奇数, 阅读全文
摘要:
权值树状数组是啥? 这是一种当半个平衡树使的树状数组,值域小或不强制在线(两者只需满足其一)时可以用。 平衡树的一系列操作时间复杂度均为 $O(\log n)$ ($n$ 是值域)。 (如果值域大,可以把操作离线下来然后离散化) 然鹅要开权值数组,所以空间复杂度 $O(n)$。 怎么搞? 以平衡树板 阅读全文
摘要:
A 前缀和上课讲过了,说一下 $dp$。 思路很简单,$dp_i$ 为以 $i$ 结尾的最大子段和。 分类讨论前面的数取不取,则有 $dp_i=\max(a_i,a_i+dp_{i-1})$。 那么答案就是 $\max dp_i$。 #include <iostream> using namespa 阅读全文
摘要:
是这样的:我想要学亿学类似 pb_ds 那样的东西,然后: 你会发现 bdfs 几乎啥也搜不出来 所以,就有了这篇文章。 algorithm aligned_buffer.h alloc_traits.h array_allocator.h atomicity.h bitmap_allocator. 阅读全文
摘要:
题意 给两个长度为 $n$ 的数组 $A,B$。 现在可以从 $A$ 中选 $k$ 个数,把 $a_i$ 改为 $a_i+1$。 然后可以把 $A$ 任意打乱,问操作后 $A$ 是否可以变成 $B$。 思路 显然,如果可以把 $A$ 变为 $B$, 那么在选取 $k$ 个数加一后,$A$ 与 $B$ 阅读全文
摘要:
题意 给定 $u,v$,求 $\dfrac xu+\dfrac yv=\dfrac{x+y}{u+v}$ 的任意一组整数解。 思路 先化简方程。两边同乘 $uv(u+v)$:$$ xv(u+v)+yu(u+v)=uv(x+y) $$ 拆括号:$$ xvu+xv^2+yu^2+yuv=uvx+uvy 阅读全文
摘要:
有向图的传递闭包。(虽然不是正解) 复杂度:$O(\dfrac{n^3}w)$ 题意 给定一张有向图,$q$ 次询问。 每次询问两个点 $u,v$,问存不存在 $u\rightarrow v$ 的路径。 思路 很明显的传递闭包,转换成边权 $1/0$ 的完全图。 然后把 Floyd 的取 $\min 阅读全文