PingdiGuo_guo 2025-03-23 15:09 采纳率: 50%
浏览 10

C++问题:新二进制求解

C++题目:新二进制 内存限制: 512 Mb时间限制: 1000 ms 题目描述 Bob 最近正在学习二进制,但二进制的每一位上只能是 0 0 或 1 1,这让 Bob 觉得很无趣,于是他研究出了一种新的二进制:每一位上只能是 −1 或 1! Bob 想研究的新二进制数有 n n 位,它可以表示为 b 1 × 2 ^0 + b 2 × 2^ 1 + ⋯ + b n × 2^ n − 1 ,其中 b i​等于 ±1。进一步地,Bob 认为一个区间 [ l , r ] [l,r] 满足 1 ≤ l ≤ r ≤ n 是正的,当且仅当其代表值 b l × 2^ l − 1 + b( l + 1) × 2^ l + ⋯ + b r × 2^( r − 1) > 0,区间 [ l , r ] 是负的则表示代表值 < 0 <0。 请问正区间个数和负区间个数相差多少?换言之,将正区间的个数记为 A,负区间的个数记为 B,求∣A−B∣ 的值。 输入格式 第一行一个整数 T 表示数据组数,对于每组数据: 第一行一个整数 n。 第二行 n 个整数 b 1 ∼ n​。 输出格式 对于每组数据,输出一行一个整数表示答案。 数据范围 对于 30% 的数据, 1 ≤ T ≤ 10 , 1 ≤ n ≤ 50 。 对于 60 % 的数据, 1 ≤ T ≤ 10 , 1 ≤ n ≤ 1000。 对于 100 %的数据, 1 ≤ T ≤ 1 0^ 5 , 1 ≤ n ≤ 10 ^5 , ∑n≤3×10 5 , b i​=1 或 b i​=−1。 样例数据 输入:
4
4 1 -1 1 1
3
-1 -1 -1
2 1 -1
2
1 1
输出:
6 6 1 3
说明: 样例解释:对于第三组数据,区间 [1,1],[1,2],[2,2] 的代表值分别为 1,-1,-2,则A=1,B=2,|A-B|=1。

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-23 15:29
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    ```cpp #include #include #include using namespace std; int main(){ int T; cin >> T; for(int t=0; t> n; vector arr(n); for(int i=0; i> arr[i]; } int ans = 0; int positive = 0, negative = 0; for(int i=0; i 0) positive++; else negative++; } } cout << abs(positive-negative) << endl; } return 0; } ```
    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日