首页 > 其他分享 >2024牛客多校第10场

2024牛客多校第10场

时间:2024-08-20 18:15:37浏览次数:6  
标签:10 cout int 智商 s0 多校 stk 2024 牛客

10

B std::pair (B)

模拟题,没什么难度,就是有点恶心。题解提到的二叉树做法赛时也想过,但写着不太顺手就放弃了,转而写了个类似括号匹配的解法。

    for(int i = 1; i <= n; i++) {
        string s;
        cin >> c[i] >> s;
        mp[s] = i;
    }
    while(q--) {
        string s0, s;
        cin >> s0;
        bool flag = 1;
        for(int i = 0; i < s0.size(); i++) {
            if(s0[i] == '.') {
                s = s0.substr(0, i);
                flag = 0;
                break;
            }
        }
        if(flag) {
            s0 += ";"; // 字符串后面还有分号。。。
            cout << c[mp[s0]] << endl;
            continue;
        }
        s += ";";
        int x = mp[s], j = 0;
        for(int i = 0; i < s0.size(); i++) {
            if(s0[i] == '.') { // 相当于需要查找的层数
                if(s0[i + 1] == 'f') {
                    j += 5; // pair向里跳一层到first
                }
                else {
                    j += 5;
                    int stk = 0; // 括号匹配
                    for(; j < c[x].size(); j++) {
                        if(c[x][j] == '<') stk++;
                        else if(c[x][j] == '>') stk--;
                        if(stk == 0 && c[x][j] == ',') break;
                    }
                    j++;
                }
            }
        }
        int stk = 0;
        for(; j < c[x].size(); j++) {
            if(c[x][j] == '<') stk++;
            else if(c[x][j] == '>') stk--;
            cout << c[x][j];
            if(c[x][j] == 't' || c[x][j] == 'e' || c[x][j] == '>') {
                if(stk == 0) break;
            }
        }
        cout << endl;
    }

K Doremy's IQ 2 (K)

假设所有题目的难度满足 \(a\leq 0\). 若最终智商降为 \(m\),最优情况下所有 \(a_i > m\)(或许还有一部分 \(a_i = m\))都应作为 \(d=x\)-type,其余题目则用于拉低智商,不计入答案中;\(a\geq 0\) 时与之相似。如此可以 \(O(1)\) 检验任意一个 \(m\) 取值的合法性,考虑二分答案求解。对于 \(a\) 有正有负的情况,为使答案更优,Doremy智商的单调性最多发生一次变化。可从 \(1\) 至 \(n\) 枚举智商第一次递增/递减到的位置,然后二分求其反方向可能存在的最优解。复杂度 \(n\log n\).

    int x = 0, y = 0, z = 0;
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
        if(a[i] < 0) x++;
        else if(a[i] == 0) y++;
        else z++;
    }
    int ans = 0;
    for(int i = 1; i <= x; i++) {
        if(i - 1 < -a[i]) continue;
        int res = 0, l = x + y + 1, r = n;
        while(l <= r) {
            int mid = (l + r) / 2;
            if(a[mid] - a[i] <= n - mid) {
                res = mid - x - y;
                l = mid + 1;
            } else r = mid - 1;
        }
        ans = max(ans, res + x - i + 1);
    }
    for(int i = x + y + 1; i <= n; i++) {
        if(n - i < a[i]) continue;
        int res = 0, l = 1, r = x;
        while(l <= r) {
            int mid = (l + r) / 2;
            if(a[i] - a[mid] <= mid - 1) {
                res = x - mid + 1;
                r = mid - 1;
            } else l = mid + 1;
        }
        ans = max(ans, res + i - x - y);
    }
    printf("%d\n", ans + y);

L Tada! (L)

由于 \(n\leq 5\),每次操作可以到达的状态最多只有 \(({5\choose2} + 5)\times 2 = 30\) 种,将每条信息的 \(s\) 作为起始位置,bfs计算其到达各个状态的最小操作次数,\(t\) 次能够到达的所有合法状态取交集即为答案。开始我们认为bfs求出的“最短路”满足 \(d_i\leq t\) 时,即可通过扩大/缩小操作区间凑成 \(t\) 次操作,后来发现遗漏了两个特判:\(n = 1\) 时操作区间无法改变,应严格满足 \(d_i = t\);起点位置需要至少 \(2\) 次操作才能恢复原来状态,因此 \(t = 1\) 时起点位置不合法。特判后即可通过,时间复杂度 \(30mn\cdot 10^n\).

代码不是我写的,也不太想再写一遍,多少有点恶心

标签:10,cout,int,智商,s0,多校,stk,2024,牛客
From: https://www.cnblogs.com/meowqwq/p/18370016

相关文章

  • 2024.8.20(playbook剧本安装nginx、roles)
    一、playbook 剧本安装nginx[root@m0~]#mkdir/etc/ansible/playbook[root@m0~]#vim/etc/ansible/playbook/nginx.yml----hosts:group02remote_user:roottasks:-name:卸载httpdyum:......
  • 题解:P10696 [SNCPC2024] 写都写了,交一发吧
    前置知识位运算按位与的运算规则:二进制下,相同位的两个数字都为\(1\),则为\(1\);若有一个不为\(1\),则为\(0\)。分析由按位与的运算规则可以得到:\(A\&A=A\),而题目中的两次提交可以是相同的,所以两次都只需要取\(n\)个数中最大的数即可。ACcode#include<bits/stdc++.h>us......
  • 题解:P10722 [GESP202406 六级] 二叉树
    思路朴素做法当输入\(a_i\)后,直接将它及它的子树进行变换。而这样时间会超时。预计得分\(40\)pts。正解统计每次变换的节点编号,第\(i\)个节点作为根节点进行子树变换的次数为\(rec_i\)。最后从这棵树的根节点\(1\)开始向下dfs,则每个节点变换的次数为\[rec_i+k_j\]......
  • Nuxt3【过渡】2024最新版 (含页面过渡、布局过渡、全局过渡、局部过渡、动态过渡、禁用
    全局布局过渡layoutTransitionnuxt.config.ts中exportdefaultdefineNuxtConfig({app:{layoutTransition:{name:'layout',mode:'out-in'}},})app.vue中需添加样式.layout-enter-active,.layout-leave-active{transition:all0.4s;......
  • 2024 Summer_Camp 做题总结 下
    CloseVertices思路很明显,这是一道点分治题目,但有两个限制条件,考虑将两个条件排序起来,双指针找第一个条件,树状数组维护第二个条件,但是同一个子树内不能重复统计,所以将答案减去每个子树内的答案。代码#include<iostream>#include<algorithm>#defineintlonglongusingnam......
  • 2024年华为OD目录,D卷&C卷,E卷即将更新!
    序言  本专栏收录的华为OD题目都会持续优化并且持续更新最新题目,一次购买,终生享受。2024年,华为OD机试已经启用了D卷,目前D卷和C卷的题目是一样的。我身边有很多同学通过本专栏已经成功上岸华为的OD员工,有同学成功转正为华为正式员工。根据内部消息,华为OD今年可能会使用E......
  • 【开源分享】2024好用的PHP在线客服系统源码 带搭建教程
    安装教程1.上传源码压缩包到网站目录并解压2.设置网站运行目录public3.设置伪静态,选择thinkphp4.创建数据库,导入数据库:public/service.sql5.修改.env里的数据库配置信息6.启动命令(根目录终端) phpthinkworker:gateway-d更详细的搭建文档需下载压缩包,安装教程.docx......
  • 【开源分享】2024好用的PHP工单管理系统 带搭建教程
    在日益复杂的企业运营环境中,工单管理成为企业提升运维效率、优化服务质量的关键环节。工单管理系统源码以其高效、稳定、灵活的特点,为企业提供了强大的工单管理解决方案。未来,我们将继续优化系统功能,提升用户体验,为企业创造更大的价值。同时,我们也期待更多企业加入我们的行列,共......
  • 牛客周赛 Round 56 C题异或故事
    链接:https://ac.nowcoder.com/acm/contest/88392/C这题考察的知识点是异或。关于异或,我们应该掌握以下知识点:1.两个相同的数异或的结果为0;2.0和任意一个非零的数异或的结果都是那个非零实数本身;3.a^b^c=a^(b^c)=(a^b)^c;4.d=a^b^c-->a=d^b^c;5.a^b^a=b;6.a^b=b^a.7.......
  • 《2024智慧超矫技术白皮书》
    在全球制造业转型升级的大潮中,金属板材矫平行业正在经历一场深刻的技术变革。作为这一领域的领军企业,玛哈特集团发布了《2024智慧超矫技术白皮书》,深入剖析当前行业所面临的挑战与机遇,展示智慧超矫技术在提升生产效率、降低成本和优化产品质量方面的巨大潜力。01行业变迁中的......