A.
水题。略。
B. (Aborted)
给你一个 \(n*m\) 的矩阵,你可以用 \(1*2\) 的砖铺满矩阵,但要求砖与砖之间不能有公共边或公共点。求最多能放几块砖。
解
看上去只要这样放就可以:
<>.<>.^
......v
<>.<>..
......^
<>.<>.v
但是你有没有考虑过 \(5*6(ans=7)\) :
<>.^.^
...v.v
<>....
...^.^
<>.v.v
\(6*6(ans=8)\) :
<>.^.^
...v.v
<>....
....<>
^.^...
v.v.<>
\(4*4(ans=4)\) :
<>.^
...v
^.<>
v...
事实证明,这道题是没有多项式级别的算法的,然而原题的数据范围是 \(10^9\) ,然后这道题就被删了,这场比赛就变成了unrated
std Wrong Answer
C.
两个长度相等的01字符串 \(s_1,s_2\) ,定义 \(f(s_1,s_2)\) 为 \(s_1[i]≠s_2[i]\) 的 \(i\) 的个数。现给定两个01字符串 \(s,t(|s|>|t|)\) ,求 \(s\) 有多少个长度等于 \(|t|\) 的子串 \(x\) 满足 \(f(x,t)\) 为偶数。 \((|s|,|t|\le 10^6)\)
解
如果 \(s_1\) 包含1的个数和 \(s_2\) 包含1的个数的奇偶性相同,那么 \(f(s_1,s_2)\) 是偶数,否则是奇数。
前缀和处理。时间复杂度 \(O(n)\) 。
D.
给你一个实数序列 \(a\) ,现在要把 \(a\) 中的所有元素向上或向下取整,使得序列之和为0。保证有解。输出一种方案。
解
先让所有元素全部向下取整,然后把不够的加到不是整数的元素上。
本题卡精度,ceil() floor()
请慎用。最好加上一个eps。