zoukankan      html  css  js  c++  java
  • [CF1490E] Accidental Victory

    [CF1490E] Accidental Victory

    Description

    每个队伍初始时有一些代币,比赛每一轮随机挑两个代币数不为 0 的队伍,然后代币多的队伍获胜,代币少的队伍把代币全部给代币多的(代币数量相同则随机),直到最后只有一个队伍有代币,这个队伍获胜。求哪些队伍有可能获胜。

    Solution

    对于一个队伍,如果他消灭掉所有小于等于他的队伍,此时的代币数量不小于最大值,那么就能赢

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    void solve()
    {
        int n;
        cin >> n;
    
        vector<pair<int, int>> a(n);
        for (int i = 0; i < n; i++)
        {
            int x, y;
            cin >> x;
            y = i + 1;
            a[i] = {x, y};
        }
    
        sort(a.begin(), a.end());
    
        int sum = 0;
        int mx = a[n - 1].first;
        vector<int> b(n);
        vector<int> ans;
        int j = 0;
        for (int i = 0; i < n; i++)
        {
            if (j <= i)
                ++j, sum += a[i].first;
            while (j < n && sum >= a[j].first)
                sum += a[j].first, ++j;
            if (sum >= mx)
                ans.push_back(a[i].second);
        }
        sort(ans.begin(), ans.end());
        cout << ans.size() << endl;
        for (int i = 0; i < ans.size(); i++)
            cout << ans[i] << " ";
        cout << endl;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
    
        int t;
        cin >> t;
        while (t--)
        {
            solve();
        }
    }
    
  • 相关阅读:
    [BZOJ 2820]YY的GCD
    [POI 2007]ZAP-Queries
    [USACO 04OPEN]MooFest
    [HAOI 2011]Problem b
    [COGS 2258][HZOI 2015]复仇的序幕曲
    [UOJ 41]【清华集训2014】矩阵变换
    [POJ 3487]The Stable Marriage Problem
    [POJ 3252]Round Numbers
    [COGS 1799][国家集训队2012]tree(伍一鸣)
    [SDOI 2011]计算器
  • 原文地址:https://www.cnblogs.com/mollnn/p/14433150.html
Copyright © 2011-2022 走看看