The 2024 ICPC Asia East Continent Online Contest (I)

发布于:2025-09-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

The 2024 ICPC Asia East Continent Online Contest (I) - 比赛主页 - 比赛 - QOJ.ac

World Cup - 题目 - QOJ.ac

首先考虑进 16 强的,一定得至少比两个队伍强,所以他的排名需要 >= 3

考虑进 8 强的,因为进8强,一定是进16强的第一队伍和第二队伍比赛

那如果是第一队伍赢了,那就是原来得第二的队伍的这个人加上原来他赢得两个人 1 + 2,再加上第一队伍第一轮赢得 3 个人 1 + 2 + 3,再加上自身 1 + 2 + 3 + 1.就是排名 >= 7

如果是第二队伍赢了,得第二的队伍原来就比两个队伍强,然后加上他赢得得第一的,得第一的又比原来 3 个队伍厉害,就是 2 + 1 + 3 ,再加上自身,依旧是 7 个。

进 4 强的,首先是进 8 强的每一个队伍都是保底比 6 个队伍强的,然后自身又比 6 个队伍强,再加上赢得这一场,就是 6 + 6 + 1, 再加上自己 14

进2 强的,依旧同理 13 + 13 + 1 + 1= 28

冠军的就是 32了。

const int N = 50;
struct node
{
    int id, num;
} a[N];

bool cmp(node a, node b)
{
    return a.num < b.num;
}

void solve()
{
    for (int i = 1; i <= 32; i ++)
    {
        cin >> a[i].num;
        a[i].id = i;
    }
    sort(a + 1, a + 1 + 32, cmp);
    // for (int i = 1; i <= 32; i ++) cout << a[i].num << " ";
    // cout << "\n";
    int u = 0;

    // u 排第几
    for (int i = 1; i <= 32; i ++)
    if (a[i].id == 1) u = i;
    if (u >= 32) cout << 1 << "\n";
    else if (u >= 28) cout << 2 << "\n";
    else if (u >= 14) cout << 4 << "\n";
    else if (u >= 7) cout << 8 << "\n";
    else if (u >= 3) cout << 16 << "\n";
    else cout << 32 << "\n";
}

Find the Easiest Problem - 题目 - QOJ.ac

这个题目用vector 进行储存一下,然后去重一下,找一下解决的最大题目数就行了。


void solve()
{
    int n; cin >> n;
    vector<string> a[33];
    for (int i = 1; i <= n; i ++)
    {
        string team, ac;
        char id;
        cin >> team >> id >> ac;
        if (ac == "accepted")
        a[id - 'A'].push_back(team);
    }
    char ans = '0';
    int mmax = 0;
    for (int i = 0; i < 32; i ++)
    {
        sort(a[i].begin(), a[i].end());
        a[i].erase(unique(a[i].begin(), a[i].end()), a[i].end());
        if (mmax < a[i].size())
        {
            mmax = a[i].size();
            ans = char('A' + i);
        }
    }
    cout << ans << "\n";
}