摘要:
【并查集是什么】 并查集是用来表示一些不相交集合的算法。 它可以很快地处理两个点之间是否在一个连通块中。 【并查集的特点】 动态合并集合; 合并之后就不能拆开了。 并查集开始前,先按顺序把初始集合编号。 (初始也不一定每个都是单个元素) 【并查集的实现】 数据结构分类:抽象结构、存储结构。 抽象结构 阅读全文
摘要:
A 先判断初始行不行,再模拟加入。 B 题意:数轴上给定一些线段,和点 \(t\)。问能否删去一些线段,使得 \(t\) 变成唯一的覆盖次数最多的点。 差分 + 贪心。 C 有 \(n\) 杯水,\(n\) 个人。每杯水有水量上限,每个人有喝水上限。初始第 \(i\) 个人对着第 \(i\) 个杯子 阅读全文
摘要:
A 分类讨论。 B 二分。 C 题意:给定一个字符串 \(s\)。记 \(s_i\) 为将 \(s\) 删去 \(i\) 个字符,使得剩余字符串字典序最小得到的字符串。令 \(S=s_0+s_1+\dots+s_{sz-1}\)。现在要询问 \(S[pos]\) 是哪个字符。 通过一些取模,加减可以 阅读全文
摘要:
A:氵 B:排序对两个偶数没影响,对两个奇数没影响。唯一的影响是可能原本偶数在后面,调到前面贡献变多。所以把所有偶数弄到前面就行。 C:\(dp[i]\) 表示前 \(i\) 个字符以第 \(i\) 个字符结尾,有多少个子串符合条件。 若 \(s[i]=?\),\(dp[i]=dp[i-1]+1\) 阅读全文
摘要:
A 氵 B 如果 11 后出现了 00 就不行。 C 枚举走几段。 横竖可以分开算。 一定是:除了费用最小的都是走长度 \(1\),费用最小的包揽剩下的。 D \(c\cdot lcm(a,b)-d\cdot gcd(a,b)=x\) \(c\cdot \dfrac{a}{gcd(a,b)}\cdo 阅读全文
摘要:
传送门 A: 一个组 \(2^n+2^1+\dots+2^{\frac{n}{2}-1}\),另一个组剩下的。 B: 考虑不停循环。 如果不同的数字超过 \(k\),无解。 否则先把原序列去重,然后把末尾补一些数补成 \(k\) 个,再把这个新序列循环 \(n\) 次。 C: 先把字符们排序。 肯定 阅读全文
摘要:
A 用计算器式显示数字,可以显示 \(n\) 段。可以显示的最大数字是多少? 如果用了一个需要至少四段的数字,一定不如把这个替换成两个 \(1\) 好。 如果一共可以用偶数个,一定是全部 \(1\)。 如果一共可以用奇数个,一定是开头一个 \(7\),之后全是 \(1\)。 B 给定一个 \(01\ 阅读全文
摘要:
A 题意:你在数轴原点。有一个宝箱在 \(x\),钥匙在 \(y\)。每移动一单位,耗费 \(1\) 时间。你可以到了 \(x\) 然后抱着宝箱走,但是抱着宝箱走的总路程不能超过 \(k\) 单位。如果某时刻你、钥匙、宝箱在同一个单位上,就能开宝箱。问:最快要多久开宝箱? 要么是拿钥匙,向宝箱走;要 阅读全文
摘要:
只做出 A,身败名裂 A 显然不管怎么排,13,31 总有一个会出现,看看哪个出现。 B 给定两个 01 串,每次可以挑一个串的一个子串,要求两端相同,然后把这个子串全部变得和两端相同。 问经过若干次操作,能否使两个串相同。 重要性质:如果能变相同,存在一种方案,任意两次操作的子串都不相交。 证明: 阅读全文
摘要:
A 让 \(c\) 保存数组中所有最大的数,如果所有数都相等则 \(-1\)。 B 只需要记录每个序列的最小值和次小值,然后对次小值求前后缀和。 C 枚举最大值 \(mx\),然后遍历 \(i:n\sim 1\)。对于 \(i\),取最大数 \(x\) 满足 \(x\) 未选且 \(i\times 阅读全文