2023届深信服C++A卷笔试

第一题:题目描述:
给定一个字符串,里面包含n个数,其中前n-1个数是数组序列,第n个数是需要赢的次数。这里是比较a[0]和a[1],比较大的数字保持不动,小的数字放在数组最后,每次都是比较a[0]和a[1]。求出第一个赢k次的数字

题目输入

3 2 1 10

题目输出

3

思路:太简单了自己看

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


int main() {
    vector<int> a;
    int t, k = 1, mx;
    while (cin >> t) {
        a.emplace_back(t);
    }
    mx = a[0];
    for (int i = 1; i < a.size() - 1; i ++) {
        if (a[i] > mx) {
            k = 1;
            mx = a[i];
        } else k ++;
        if (k >= a.back()) {
            cout << mx;
            return 0;
        }
    }
    cout << mx;
}

第二题:给定一个数组,求出最大排序连续上升序列

题目输入

3 1 2 4 6

题目输出

4

思路:没看懂题写了三四份不同的代码都只过了90%

#include <bits/stdc++.h>
using namespace std;
constexpr int N = 5e3 + 10;

int n, a[N];

int main() {
    cin >> n;
    for (int i = 0; i < n; i ++) {
        cin >> a[i];
    }
    int res = 1;
    for (int v = 1; v <= n; v ++) {
        sort(a, a + v);
        if (a[v - 1] - a[0] == v - 1)
            res = v;
    }

    cout << res;
}

第三题:给定一个n和x,给定一个数组a一个人的伪装度是v,任意值都可以,可以更改为任意数。

n台机器,每台机器的敏感度是a[i],要求按顺序入侵每个装置,能不能入侵的判断是|a[i]-v|<=x即

可。中途可以更改v,求如果能按顺序入侵每台机器,则最少需要更改伪装度几次?

题目输入

5 4 4 9 6 7 8

题目输出

0

思路:记录每一个位置可选的区间,一个个往后面遍历缩小范围,当前区间与缩小后的区间没有交集时需要改变一次伪装度

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

constexpr int N = 1e5 + 10, INF = 1e9 + 7;

int n, x;
int a[N][2];

int main() {
    cin >> n >> x;
    for (int i = 0; i < n; i ++) {
        int t;
        cin >> t;
        a[i][0] = t - x, a[i][1] = t + x;
    }
    int k = 0, ll = -1, lr = INF;
    for (int i = 0; i < n; i ++) {
        auto &[l, r] = a[i];
        if (l > lr || r < ll) {
            k ++;
            ll = l, lr = r;
        } else {
            lr = min(lr, r);
            ll = max(ll, l);
        }
    }
    cout << k;
}

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值