Codeforces Round #832 (Div. 2) A~C题解

乎语百科 228 0
目录

A

思路:这个题的话我们把负数和整数分别求出来,比较绝对值的大小,用较大的那个减去较小的那个就可以了。

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

#define int long long

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int T;
    cin >> T;
    while (T--)
    {
        int n;
        cin >> n;
        int zheng = 0, fu = 0;
        for (int i = 1; i <= n; i++)
        {
            int x;
            cin >> x;
            if (x > 0)
                zheng += x;
            else
                fu += x;
        }
        fu = abs(fu);
        if (fu > zheng)
            cout << fu - zheng << endl;
        else
            cout << zheng - fu << endl;
    }
    return 0;
}

B

思路:这个题一开始的时候想的是把全部的N放到前面,结果第二个测试点就WA了。其实这个题的正解是把全N和B换位置,但是有的N是不用动的,我们需要判断有几个N是不需要动的,要动的N的下标是从几开始。具体细节放在代码里。

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

void solve()
{
    int n;
    cin >> n;
    if (n == 1)
    {
        cout << 1 << endl;
        cout << 1 << ' ' << 3 << endl;
        return ;
    }
    int k = n - n / 2;
    cout << k << endl;
    int j = 1;
    for (int i = (n / 2 + 1) * 3; i <= 3 * n; i += 3)
    {
        cout << j << ' ' << i << endl;
        j += 3;
    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int T;
    cin >> T;
    while (T--)
    {
        solve();
    }
    return 0;
}

C

思路:这个是个博弈的题,通过观察样例的话我们可以发现,我们想要让对手输的话,我们只需要一直把那个最小的数换给他,他只能把最小的那个数-1然后换出去,所以一直反复的话最小的那个数变成0的时候,那么那个人就输了。Alice是先手没所以只要第一个不是最小的那一个那么Alice就会赢反之Bob就会赢。如果第一个和后面的最小值相等的话还是Bob赢

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e6 + 10;
int a[N];

void solve()
{
     int Min = 0x3f3f3f3f;
     int n;
     cin >> n;
     int sum = 0;
     for (int i = 1; i <= n; i++)
     {
          cin >> a[i];
          if (i >= 2)
               Min = min(a[i], Min);
     }
     if (a[1] > Min)
     {
          cout << "Alice" << endl;
     }
     else
     {
          cout << "Bob" << endl;
     }
}

int main()
{
     ios::sync_with_stdio(false);
     cin.tie(0);
     cout.tie(0);
     int T;
     cin >> T;
     while (T--)
     {
          solve();
     }
     return 0;
}

标签:

留言评论

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~