Codeforces Round 1046 (Div. 2)

链接:https://codeforces.com/contest/2136

A. In the Dream

算法:

    找规律,模拟。

思路:

    可以发现要想让结果成立,某个人不能同时赢三场,控制 \(1:2\) ,所以 \(max / min\) < 3 即可。

关键代码:

void solve()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;

    c -= a, d -= b;

    if (c < 0 || d < 0)
    {
        cout << "NO" << endl;
        return;
    }

    if (a < b)
        swap(a, b);
    if (c < d)
        swap(c, d);

    if ((a + b) / (b + 1) >= 3 || (c + d) / (d + 1) >= 3)
        cout << "NO" << endl;
    else
        cout << "YES" << endl;
}

B. Like the Bitset

算法:

    构造、贪心。

思路:

    只要不出现连续的 \(k\) 个 \(1\) 就存在答案,直接在 \(1\) 上面放最小的几个数字即可。

关键代码:

void solve()
{
    int n, k;
    string s;
    cin >> n >> k >> s;

    s = ' ' + s;

    ll cnt = 0;
    for (int i = 1; i <= n; ++i)
    {
        if (s[i] == '1')
            ++cnt;
        else
            cnt = 0;

        if (cnt >= k)
        {
            cout << "NO" << endl;
            return;
        }
    }

    cout << "YES" << endl;

    ll num = 1;
    vector<int> p(n + 1, 0);
    for (int i = 1; i <= n; ++i)
        if (s[i] == '1')
            p[i] = num++;

    for (int i = 1; i <= n; ++i)
        if (s[i] == '0')
            p[i] = num++;

    for (int i = 1; i <= n; ++i)
        cout << p[i] << ' ';

    cout << endl;
}

C. Against the Difference

算法:

    \(dp\)。

思路:

    定义 \(dp[i]\): 使用前 \(i\) 个元素构造整洁子序列的最大长度。

    使用 \(p\) 数组记录每个元素出现的位置,在当前 \(i\) 如果 \(p[a[i]]\) 的大小大于 \(a[i]\),就可以状态转移:

\(dp[i] = max(dp[i], x + dp[p[x][p[x].size() – x] – 1]);\)

关键代码:

void solve()
{
    int n;
    cin >> n;

    vector<vector<int>> p(n + 1);
    vector<ll> dp(n + 1, 0);
    for (int i = 1; i <= n; ++i)
    {
        ll x;
        cin >> x;

        p[x].push_back(i);
        dp[i] = dp[i - 1];

        if (p[x].size() >= x)
            dp[i] = max(dp[i], x + dp[p[x][p[x].size() - x] - 1]);
    }

    cout << dp[n] << endl;
}

D. For the Champion

    交互题就先不补了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇