补题 Vika and Price Tags
补题 Vika and Price Tags
题面翻译
你有两个长度均为 $n(1 \le n \le 10^5)$ 的序列 $a,b(0 \le a_i,b_i \le 10^9)$,每一次操作令所有 $a_i = b_i,b_i = |a_i - b_i|$。问若干次操作后,是否能让所有的 $a_i$ 值都为 $0$。多测。
题目描述
Vika came to her favorite cosmetics store “Golden Pear”. She noticed that the prices of $ n $ items have changed since her last visit.
She decided to analyze how much the prices have changed and calculated the difference between the old and new prices for each of the $ n $ items.
Vika enjoyed calculating the price differences and decided to continue this process.
Let the old prices be represented as an array of non-negative integers $ a $ , and the new prices as an array of non-negative integers $ b $ . Both arrays have the same length $ n $ .
In one operation, Vika constructs a new array $ c $ according to the following principle: $ c_i = |a_i - b_i| $ . Then, array $ c $ renamed into array $ b $ , and array $ b $ renamed into array $ a $ at the same time, after which Vika repeats the operation with them.
For example, if $ a = [1, 2, 3, 4, 5, 6, 7] $ ; $ b = [7, 6, 5, 4, 3, 2, 1] $ , then $ c = [6, 4, 2, 0, 2, 4, 6] $ . Then, $ a = [7, 6, 5, 4, 3, 2, 1] $ ; $ b = [6, 4, 2, 0, 2, 4, 6] $ .
Vika decided to call a pair of arrays $ a $ , $ b $ dull if after some number of such operations all elements of array $ a $ become zeros.
Output “YES” if the original pair of arrays is dull, and “NO” otherwise.
输入格式
Each test consists of multiple test cases. The first line contains a single integer $ t $ ( $ 1 \le t \le 10^4 $ ) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer $ n $ ( $ 1 \le n \le 10^5 $ ) — the number of items whose prices have changed.
The second line contains $ n $ integers $ a_1, a_2, \ldots, a_n $ ( $ 0 \le a_i \le 10^9 $ ) — the old prices of the items.
The third line contains $ n $ integers $ b_1, b_2, \ldots, b_n $ ( $ 0 \le b_i \le 10^9 $ ) — the new prices of the items.
It is guaranteed that the sum of $ n $ over all test cases does not exceed $ 10^5 $ .
输出格式
For each test case, output “YES” if the pair of price arrays is dull, and “NO” otherwise.
You can output each letter in any case (lowercase or uppercase). For example, the strings “yEs”, “yes”, “Yes”, and “YES” will be accepted as a positive answer.
样例 #1
样例输入 #1
1 | 9 |
样例输出 #1
1 | YES |
提示
In the first test case, the array $ a $ is initially zero.
In the second test case, after the first operation $ a = [1, 2, 3], b = [0, 0, 0] $ . After the second operation $ a = [0, 0, 0], b = [1, 2, 3] $ .
In the third test case, it can be shown that the array $ a $ will never become zero.
题解
题目解析
这道题还是一个思维题, 主要是考到了找规律:
1 | 我们举一个例子,例如 6 3 这一组数据: |
所以我们想要最后得到同时等于 $0$ , 仅需要讨论他们 $a,b$ 的奇偶性就可以了. 在看别人的代码是,我也发现了一种压缩状态的方法: 二进制压缩
, 也同时发现了一个内置函数: __builtin_popcount()
来统计二进制位数上有几个 $1$ .
AC代码
1 |
|