PDD 5.11笔试

A
#include <bits/stdc++.h>
using namespace std;

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        vector<string> s(n + 1);
        vector<int> sz(n + 1, 0);
        for (int i = 1; i <= n; i++) cin >> s[i], sz[i] = s[i].size();
        int ans = 1, cnt = 1;
        for (int i = 2; i <= n; i++) {
            if (sz[i] > sz[i - 1]) {
                cnt++;
            } else if (sz[i] == sz[i - 1]) {
                if (s[i] >= s[i - 1]) cnt++;
                else {
                    ans = max(ans, cnt);
                    cnt = 1;
                }
            } else {
                ans = max(ans, cnt);
                cnt = 1;
            }
        }
        ans = max(ans, cnt);
        cout << ans << "\n";
    }
}
// 64 位输出请用 printf("%lld")
B
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    string s;
    cin >> s;
    int ans = 0, bj = 0;
    int now = 0, l = 0, r = 0;
    vector<pair<char, int>> v;
    vector<array<int, 2>> va;
    for (auto c : s) {
        now++;
        if (!v.empty()) {
            if (c == '(') {
                if (bj) {
                    while (!va.empty() && l < va.back()[0]) va.pop_back();
                    va.push_back({l, r});
                    bj = 0;
                }
                v.emplace_back(c, now);
            } else {
                if (v.back().first == '(') {
                    bj = 1;
                    l = v.back().second;
                    r = now;
                    v.pop_back();
                } else {
                    if (bj) {
                        while (!va.empty() && l < va.back()[0]) va.pop_back();
                        va.push_back({l, r});
                        bj = 0;
                    }
                    v.emplace_back(c, now);
                }
            }
        } else {
            if (bj) {
                while (!va.empty() && l < va.back()[0]) va.pop_back();
                va.push_back({l, r});
                bj = 0;
            }
            v.emplace_back(c, now);
        }
    }
    if (bj) {
        while (!va.empty() && l < va.back()[0]) va.pop_back();
        va.push_back({l, r});
        bj = 0;
    }
    ans = v.size();
    for (int i = 1; i < va.size(); i++) {
        if (va[i][0] != (va[i - 1][1] + 1)) {
            ans++;
        }
    }
    if(va.size()) ans++;
    cout << ans;
}
// 64 位输出请用 printf("%lld")
C
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int a[N], b[N];
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= m; i++) cin >> a[i];
    vector<vector<array<int, 2>>> v1, v2;
    for (int i = 1; i <= n; i++) {
        int k; cin >> k;
        vector<array<int, 2>> t;
        for (int i = 1; i <= k; i++) {
            int x, y; cin >> x >> y;
            t.push_back({x, y});
        }
        v1.push_back(t);

        cin >> k;
        t.clear();
        for (int i = 1; i <= k; i++) {
            int x, y; cin >> x >> y;
            t.push_back({x, y});
        }
        v2.push_back(t);
    }
    while (true) {
        bool tj = 1;
        for (int i = 0; i < n; i++) if(!b[i]) {
            bool ok = 1;
            for (auto [x, y] : v2[i]) {
                if (a[x] < y) ok = 0;
            }
            if (ok) {
                b[i] = 1;
                for (auto [x, y] : v1[i]) {
                    a[x] += y;
                }
                tj = 0;
            }
        }
        if (tj) break;
    }
    vector<int> ans;
    for (int i = 0; i < n; i++) if(!b[i]) ans.push_back(i + 1);
    cout << ans.size() << "\n";
    for (auto c : ans) {
        cout << c << " ";
    }
}
// 64 位输出请用 printf("%lld")
D 不会
全部评论
感谢 从你的代码中找到了我的错误原因
点赞 回复 分享
发布于 05-11 22:28 广东
三道都全过了吗?
点赞 回复 分享
发布于 05-11 22:04 四川

相关推荐

实习了几个月之后晕晕乎乎的来秋招了,完全没复习,果然是大败而归1.讲一下C++的static。当时人有点晕,只说了全局唯一,如果是成员变量就是第一次用到的时候创建,然后一直存在。2.讲讲重载和重写的区别。重载是同一个类中,方法名相同,参数不同。重写是子类对父类方法的重新实现,方法签名必须完全一致。3.讲一下虚函数、虚函数表之类的。经典问题,这里不赘述了,网上一堆高质量回答。4.讲讲C#的ref和out的作用和区别。和C++的引用传参类似,(太久没写C#了),当时说ref主要是给个东西让函数改,out是要输出的。(总之答案应该不只是这么简单,ref:调用前必须初始化(输入+输出),out:方法内部必须赋值(只输出))5.讲讲装箱和拆箱。前者是用引用类型装值类型,后者相反。6.聊聊单例模式。某个类整个程序生命周期内只产生一个实例,全局和唯一。一般写管理器或者全局配置比较常用。7.聊聊TCP和UDP的区别。什么时候用UDP,如何优化UDP。连接、可靠、有序、拥塞控制、流量控制、传输效率之类的(这个问AI应该能总结的很清楚,就不多说了)。实时性&nbsp;&gt;&nbsp;可靠性的时候选择UDP,比如说射击游戏。优化思路:缺什么补什么,加上ACK,重传,排序、拥塞控制、流量控制之类的功能。8.手撕算法给定整数数组&nbsp;nums&nbsp;和整数&nbsp;k,请返回数组中第&nbsp;k&nbsp;个最大的元素。先用最小堆做了,然后面试官说用快速选择也写一遍。有点不熟练,不过勉勉强强写出来了。9.然后问时间复杂度。我这里发狂了,说O(nlogn)。不知道当时在想什么。10.反问。感觉问的东西面试官都说不方便透露。然后就结束了。太久没面试好多知识点生疏了(悲)
投递米哈游等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务