CF edu 173 刷题笔记
\(\texttt{A}\)
简单数学题。
图形画出来是一个满二叉树,所以数层数就好了,能除以多少个 \(4\) 就有多少层,然后答案就是 \(2\) 的这个次幂。
\(\texttt{B}\)
考察整除的性质。
由于只需考虑 \(1\sim 9\) 中的奇数,所以一个一个来看。
\(1\) 肯定能被整除。
被 \(3\) 整除的条件是所有数位上的数相加是 \(3\) 的倍数,给定的数的数位和为 \(d\cdot n!\),显然在 \(n\ge 3\) 时一定包含因子 \(3\),即此时一定能被 \(3\) 整除。除此之外能整除的条件就是 \(d\) 为 \(3\) 的倍数。
被 \(5\) 整除的数需要末尾为 \(0\) 或 \(5\),所以只有当 \(d = 5\) 时才行。
被 \(7\) 整除的数需要将原数三位截断后奇偶段做差后也为 \(7\) 的倍数。当 \(n\ge 3\) 时这个差都是 \(0\),一定整除;否则就只有 \(d = 7\) 时行。
被 \(9\) 整除的条件和 \(3\) 相似,所有数位上的数相加是 \(9\) 的倍数,显然在 \(n\ge 6\) 时一定包含因子 \(9\),即此时一定能被 \(9\) 整除。除此之外能整除的条件就是 \(d\) 为 \(9\) 或 \(n\ge 3\) 且 \(d\) 是 \(3\) 的倍数。
if 语句写一下就行了。
\(\texttt{C}\)
(在大佬 Hagasei 的悉心指导下会做了)
\(\texttt{tip:}\)
他曾说:“对于序列上的数区间问题,无非就固定一个端点和分治,放在 \(\texttt{C}\) 题多半都是固定端点。”
同时还要注意题目条件的特殊性。
看到序列中除了一个位置 \(a_i\in[-10^9, 10^9]\),其他都是 \(1\) 或 \(-1\),那么不妨先考虑全为 \(1\) 或 \(-1\) 的情况。
题目要求所有的区间和的值域,在这样的序列上,假设我们已经找到了一个区间 \([l, r]\),那么将左端点或右端点移动一格,取值都只会变化 \(+1\) 或 \(-1\),所以这个值域一定是一个连续的整数段,也就是说中间是不可能出现断层的。既然如此,我们就找出上下界,说白了对原序列各求一遍最大子段和和最小子段和即可。
接着考虑有一个特殊值的情况。
这时候不妨分类讨论子段和的包含对象。分为两类:包含此特殊值的和不包含她的,最后答案取并集即可。不包含的上面已经考虑过了,所以现在只用考虑包含她的,也可以分为两部分,分别是在她左边和在她右边。和上面的分析相同,我们也要找包含她的最大/最小子段和,又有:
最大子段和 \(=\) 左边最大后缀和 \(+\) 右边最大前缀和;
最小子段和 \(=\) 左边最小后缀和 \(+\) 右边最小前缀和。
这样一来这道题就解决了。
\(\texttt{D}\)
一道神奇的题目。
看到题的一瞬间就想到令 \(A = \lambda G,b = \mu G,A < B\),那么即求最大的 \(\mu - \lambda\) 且 \(\lambda \perp \mu\)。
暴力地思考,找到 \(\lambda,\mu\) 的取值范围,然后猜想取最大值时 \(\lambda\) 距离左端点不会太远,暴力枚举 \(100\) 次,结果就这样过了……
(实际上复杂度是对的,直接暴力做也能过)

浙公网安备 33010602011771号