挖土机周赛 Round 33(语法场)

正在进行… 乐多 开始于: 2024-11-22 19:00 2 小时 主持人: 67

Round 31 起挖土机周赛规则

语法周赛”改名为“挖土机周赛”,将分为三个等级:语法场入门场提高场

考纲

入门场和提高场的考纲设置参考 NOI 大纲 的入门级和提高级对应的考点。

语法场的考纲基于 NOI 大纲有筛选,仅保留语法阶段内容,详细见:挖土机周赛语法场考纲

赛制

采用乐多赛制、灵活时间模式限时两小时。

  • 乐多赛制下,选手可以多次提交一道题目,并获得实时评测结果。
  • 乐多赛制下,多次提交会导致选手的得分被扣除,排行榜将显示用户的最高得分。
  • 乐多赛制下,每道题的最终得分为:s×max(0.95n,0.7)s×max(0.95^n ,0.7)s,ns,n 分别代表本次得分和本次提交前的尝试次数。
  • 乐多排名规则为:按照如上规则折算后的分数从高到低排名。
  • 灵活时间模式下,比赛开放时间期限内你可以任选开始时间,开始之后你需要在最多 2 小时内完成比赛,如果在那之前比赛结束了,那么你也将无法作答。

挖土机学员奖励

每场比赛对挖土机学员发放至少 1000010000 硬币的奖励,分配规则如下(以下名次指挖土机学员中排名):

  • 排名在 1155 名的每人 800800 硬币。
  • 排名在 661515 名的每人 400400 硬币。
  • 1616 名及以后,所有有分数的同学,发放 1010 个幸运奖,每个幸运奖 200200 硬币,共 20002000 硬币。

幸运奖分配规则:按得分为权重(分数越高抽到的概率越大),使用随机数代码直播抽出。

抽奖代码(DevC++ 下、-std=c++14 -O2 运行)

// 最暴力的抽奖代码
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000;
int n, m;
int id[MAXN + 5];    // 编号
int score[MAXN + 5]; // 成绩
string seedS;
mt19937 rnd;
void chou()
{
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += score[i];
    int x = rnd() % sum;
    for (int i = 1; i <= n; i++)
    {
        if (x < score[i])
        {
            cout << id[i] << " ";
            for (int j = i; j <= n - 1; j++)
            {
                id[j] = id[j + 1];
                score[j] = score[j + 1];
            }
            n--;
            break;
        }
        else
            x -= score[i];
    }
}
int main()
{
    cout << "最后一次提交的记录地址:";
    cin >> seedS;
    unsigned seed = 0;
    for (int i = 0; i < seedS.size(); i++)
        seed = seed * 128 + seedS[i];
    rnd.seed(seed);
    cout << "总人数:";
    cin >> n;
    cout << "抽奖人数:";
    cin >> m;
    assert(m <= n);
    cout << "每个人得分:\n";
    for (int i = 1; i <= n; i++)
    {
        id[i] = i;
        cin >> score[i];
    }
    for (int i = 1; i <= n; i++)
        cout << id[i] << ":" << score[i] << "\n";
    for (int i = 1; i <= m; i++)
        chou();
    return 0;
}

线下参赛规则

可以咨询对应教务老师本周能否在校区线下参赛。线下参赛没有额外奖励。

赛后数据下载及补题

我们会在赛后检查代码相似度。

本场比赛采用灵活时间模式,你需要在参加后的指定时间内完成比赛。

状态
正在进行…
规则
乐多
题目
4
开始于
2024-11-22 19:00
结束于
2024-11-24 22:00
持续时间
2 小时
主持人
参赛人数
67