• AtCoder Beginner Contest 048 题解


    比赛链接:https://atcoder.jp/contests/abc048

    A - AtCoder *** Contest

    题目大意:
    输入三个字符串,输出 'A' + 第二个字符串的首字母 + 'C'。

    示例程序:

    #include <bits/stdc++.h>
    using namespace std;
    string a, b, c;
    int main() {
        cin >> a >> b >> c;
        cout << "A" << b[0] << "C" << endl;
        return 0;
    }
    

    B - Between a and b ...

    题目大意:
    ([a,b]) 中有多少个数能被 (x) 整除。

    解题思路:
    (a = 0),则答案为 (1 + lfloorfrac{b}{x} floor);否则,答案为 (lfloorfrac{b}{x} floor - lfloorfrac{a-1}{x} floor)

    示例程序:

    #include <bits/stdc++.h>
    using namespace std;
    long long a, b, x;
    int main() {
        cin >> a >> b >> x;
        if (a == 0) cout << 1 + b / x << endl;
        else cout << b / x - (a - 1) / x << endl;
        return 0;
    }
    

    C - Boxes and Candies

    题目大意:
    给你 (n) 个数,每次可以选一个数减去 (1),求最少的操作次数,使得任意相邻两个数之和不超过 (x)

    解题思路:
    贪心。从左到右遍历每对数(设为 a_{i-1} 和 a_i),和超过 (x) 则减小 (a_i)(a_{i-1}+a[i]=x)

    示例程序:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 200020;
    int n;
    long long x, a[maxn], ans;
    int main() {
        cin >> n >> x;
        for (int i = 1; i <= n; i ++) cin >> a[i];
        for (int i = 1; i <= n; i ++) {
            int t = a[i-1] + a[i] - x;
            if (t > 0) ans += t, a[i] -= t;
        }
        cout << ans << endl;
        return 0;
    }
    

    D - An Ordinary Game

    题目大意:
    给你一个字符串,这个字符串满足“相邻字符各不相同”的性质,两个人轮流对字符串进行操作,每次操作,可以选择一个字符(首字符和尾字符除外)消掉,要求消掉这个字符后剩下的字符串仍然满足“相邻字符各不相同”的性质,第一个不能操作的人失败。问:先手赢还是后手赢?

    解题思路:
    这是一个博弈游戏。
    最终不能取的字符串必然是如下这样的格式:(ab)(aba)(abab)(ababa)(ababab)、……
    所以:

    • 如果首字符等于尾字符,则字符串长度为奇数的是必败态(对应 (aba)(ababa)、……);
    • 如果首字符不等于尾字符,则字符串长度为偶数的是必败态(对应 (ab)(abab)、……)。

    示例程序:

    #include <bits/stdc++.h>
    using namespace std;
    string s;
    int main() {
        cin >> s;
        int n = s.length();
        puts((n + (s[0] == s[n-1])) % 2 ? "First" : "Second");
        return 0;
    }
    
  • 相关阅读:
    SSLZYC 1763 观光旅游
    SSLZYC 1763 观光旅游
    SSLZYC 1763 观光旅游
    Asp.net web form 动态生成控件的注意事项
    数学建模13种常见方法
    数学建模13种常见方法
    C#并发编程 Promise, Future 和 Callback
    C#并发编程 Promise, Future 和 Callback
    android studio 添加按钮点击事件的三种方法
    android studio 添加按钮点击事件的三种方法
  • 原文地址:https://www.cnblogs.com/quanjun/p/14480836.html
Copyright © 2020-2023  润新知