CodeForces 1353 A. Most Unstable Array 简单题

1. 题目描述

1.1. Limit

Time Limit: 1000 ms

Memory Limit: 256 MB

1.2. Problem Description

You are given two integers n n and m m . You have to construct the array a a of length n n consisting of non-negative integers (i.e. integers greater than or equal to zero) such that the sum of elements of this array is exactly m m and the value i = 1 n 1 a i a i + 1 \displaystyle \sum_{i = 1}^{n-1}|a_i - a_{i+1}| is the maximum possible. Recall that x |x| is the absolute value of x x .

n other words, you have to maximize the sum of absolute differences between adjacent (consecutive) elements. For example, if the array a = [ 1 , 3 , 2 , 5 , 5 , 0 ] a=[1,3,2,5,5,0] then the value above for this array is 1 3 + 3 2 + 2 5 + 5 5 + 5 0 = 2 + 1 + 3 + 0 + 5 = 11 |1−3|+|3−2|+|2−5|+|5−5|+|5−0|=2+1+3+0+5=11 . Note that this example doesn’t show the optimal answer but it shows how the required value for some array is calculated.

You have to answer t t independent test cases.


1.3. Input

The first line of the input contains one integer t ( 1 t 1 0 4 ) t(1 \le t \le 10^4) — the number of test cases. Then t t test cases follow.

The only line of the test case contains two integers n n and m m ( 1 n , m 1 0 9 ) (1 \le n,m\le 10^9) — the length of the array and its sum correspondingly.


1.4. Output

For each test case, print the answer — the maximum possible value of i = 1 n 1 a i a i + 1 \displaystyle \sum_{i = 1}^{n-1}|a_i - a_{i+1}| for the array a a consisting of n n non-negative integers with the sum m m .


1.5. Sample Input

5
1 100
2 2
5 5
2 1000000000
1000000000 1000000000

1.6. Sample Output

0
2
10
1000000000
2000000000

1.7. Notes

n n the first test case of the example, the only possible array is [ 100 ] [100] and the answer is obviously 0.

In the second test case of the example, one of the possible arrays is [ 2 , 0 ] [2,0] and the answer is 2 0 = 2 |2−0|=2 .

In the third test case of the example, one of the possible arrays is [ 0 , 2 , 0 , 3 , 0 ] [0,2,0,3,0] and the answer is 0 2 + 2 0 + 0 3 + 3 0 = 10 |0−2|+|2−0|+|0−3|+|3−0|=10 .

1.8. Source

CodeForces 1353 A. Most Unstable Array


2. 解读

找规律。

n = 1 n = 1 时,输出 0 0

n = 2 n = 2 时,输出 m m

n > 2 n > 2 时,输出 2 × m \displaystyle 2 \times m

3. 代码

#include <algorithm>
#include <iostream>
const long long num = 1e2 + 1;
using namespace std;

long long list[num];

int main()
{
    // test case
    long long t;
    long long n, m;
    long long ans = 0;
    // test case
    scanf("%lld", &t);
    // 输入
    while (t--) {
        scanf("%lld %lld", &n, &m);
        if (n == 1) {
            ans = 0;
        } else if (n == 2) {
            ans = m;
        } else {
            ans = 2 * m;
        }
        // 输出
        printf("%lld\n", ans);
    }
}

联系邮箱:[email protected]

Github:https://github.com/CurrenWong

欢迎转载/Star/Fork,有问题欢迎通过邮箱交流。

猜你喜欢

转载自blog.csdn.net/qq_41729780/article/details/106174627
今日推荐