小工具知识网

当前位置: 首页 > 行业知识 > 2023第十四届蓝桥杯国赛 C/C++ 大学 B 组 (赛后记录)

行业知识

2023第十四届蓝桥杯国赛 C/C++ 大学 B 组 (赛后记录)

2026-11-02 17:41:57 来源:互联网转载

2023 第十四届蓝桥杯国赛 C / C + + 大学 B 组 2023第十四届蓝桥杯国赛 C/C++ 大学 B 组 2023第十四届蓝桥杯国赛C/C++大学B组

  • 点我查看题目PDF

    前言

    由于是学校期末复习周, 很多算法没有复习, 结果考了一堆板题 (悲

    赛后代码记录

    A题 子 2023

    直接跑暴力就行, 应该没啥问题

    #include #define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)#define de(a) cout '2', '0', '2', '3'};void dfs(int u, int cnt) {    if (cnt == 4) {        res++;        return;    }    if (u = sz(s)) return;    if (s[u] == op[cnt]) dfs(u + 1, cnt + 1);    dfs(u + 1, cnt);}string get(string s) {    string res;    for (auto &c: s) {        if (c == '2' || c == '0' || c == '3')            res += c;    }    return res;}void solve() {    for (int i = 1; i     IOS;    int T = 1;    // cin  T; cin.get();    while (T --) solve();    return 0;}    for (int i = 2; i         if (!vis[i]) primes[cnt++] = i;        for (int j = 0; i * primes[j]             vis[i * primes[j]] = true;            if (i % primes[j] == 0) break;        }    }}void solve() {    get_p();    int res = 0;    for (int i = 0; i  

    F题 删边问题

    没复习缩点, 暴力都很难写, 直接输出 -1 了, 哭***, 等复习板子之后再补, 感觉缩点之后很容易求, 板题 + 1

    G题 AB 路线

    很明显的分层图, 但由于没有复习算法, 压根没想起来有分层图这个玩意, 赛时骗的分, 赛后很快就写出了, 再次悲伤, 代码很板, 板题 + 1

    • 思考 (直接 bfs 是否满足最短路呢)
      #include #define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)#define de(a) cout -1, 0, 1, 0}, dy[] = {0, 1, 0, -1};int bfs(int sx, int sy) {    memset(dist, 0x3f, sizeof dist);    dist[sx][sy][1] = 0;        queue        auto [x, y, c] = q.front();        q.pop();        if (x == n && y == m) return dist[n][m][c];        bool turn = false;  // 是否应该换字母走        if (c == k) turn = true;                for (int i = 0; i > n >> m >> k;    for (int i = 1; i > g[i] + 1;    cout     IOS;    int T = 1;    // cin > T; cin.get();    while (T --) solve();    return 0;}

      H题 抓娃娃

      狠狠的吐槽题面, 那么重要的条件为什么不直接在题面中提出来, 而是隐藏在下一页的数据范围里, 本来想过这个做法, 但被自己推翻了, 结果数据中不存在能推翻这个做法的情况…赛时无奈写的暴力, 狠狠的悲伤

      思路: 由于数据范围中给了一个很重要的条件, 就是查询的区长度间一定大于所有的线段, 也就是说, 只要线段的中点落在查询的区间, 那么他一定是被包含的, 由于计算中点需要除法, 容易出精度问题, 我们把所有的坐标映射成原来的两倍, 那么中点一定也是整数坐标了, 然后跑个前缀和即可

      #include #define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)#define de(a) cout     cin  n  m;    for (int i = 1; i         int l, r; cin > l >> r;        s[l + r]++;  // 中点坐标其实是 (l + r) / 2, 但映射成了 l + r    }        for (int i = 1; i > L >> R;        cout     IOS;    int T = 1;    // cin  T; cin.get();    while (T --) solve();    return 0;}

      I题 拼数字

      不会, 特判了几个暴力跑出来的数据, 其他的都输出的 -1

      • 等待大神题解

        J题 逃跑

        看见有概率果断没写, 输出样例了

        总结

        • 有原题很离谱, 板题也好多, 评价是不如省赛
        • 发挥不太好, 希望有奖 (求求

上一篇:cf怎么选择服务器失败?

下一篇:怎么租用服务器跑软件?