第六届字节跳动青训营第六课 | 豆包MarsCode AI 刷题

100 阅读4分钟

饭馆菜品选择问题

小C来到了一家饭馆,这里共有 n_n_ 道菜,第 i_i_ 道菜的价格为 a_i。其中一些菜中含有蘑菇,s_i 代表第 i_i_ 道菜是否含有蘑菇。如果 s_i = '1',那么第 i_i_ 道菜含有蘑菇,否则没有。

小C希望点 k_k_ 道菜,且希望总价格尽可能低。由于她不喜欢蘑菇,她希望所点的菜中最多只有 m_m_ 道菜含有蘑菇。小C想知道在满足条件的情况下能选出的最小总价格是多少。如果无法按照要求选择菜品,则输出-1


测试样例

样例1:

输入:s = "001", a = [10, 20, 30], m = 1, k = 2
输出:30

样例2:

输入:s = "111", a = [10, 20, 30], m = 1, k = 2
输出:-1

样例3:

输入:s = "0101", a = [5, 15, 10, 20], m = 2, k = 3
输出:30

:::success 模拟

:::

def solution(s: str, a: list, m: int, k: int) -> int:
    # write code here
    if len(s) < k:
        return -1
    no_mushroom = []
    with_mushroom = []
    for i in range(len(s)):
        if s[i] == '1':
            with_mushroom.append(a[i])
        else:
            no_mushroom.append(a[i])
    with_mushroom.sort()
    no_mushroom.sort()
    if len(no_mushroom) < k - m:
        return -1
    w, n = 0, 0
    res, count, mcount = 0, 0, 0
    while count < k:
        if n >= len(no_mushroom) or (w < len(with_mushroom) and with_mushroom[w] < no_mushroom[n] and mcount < m):
            # print(1, with_mushroom[w])
            res += with_mushroom[w]
            count += 1
            mcount += 1
            w += 1
        else:
            # print(0, no_mushroom[n])
            res += no_mushroom[n]
            count += 1
            n += 1
    return res


if __name__ == '__main__':
    print(solution("100111110010000", [3, 4, 9, 12, 16, 4, 3, 9, 1, 11, 7, 7, 4, 4, 11], 1, 4) == 12)

    # print(solution("001", [20, 10, 30], 1, 2) == 30)
    # print(solution("111", [10, 20, 30], 1, 2) == -1)
    # print(solution("0101", [5, 15, 10, 20], 2, 3) == 30)

完美偶数

题目描述如下:

小C定义了一个“完美偶数”。一个正整数 xx 被认为是完美偶数需要满足以下两个条件:

  1. xx 是偶数;
  2. xx 的值在区间 [l,r][l, r] 之间。

现在,小C有一个长度为 nn 的数组 aa,她想知道在这个数组中有多少个完美偶数。

测试样例:

样例1:

输入:**n = 5, l = 3, r = 8, a = [1, 2, 6, 8, 7]** 输出:**2**

样例2:

输入:**n = 4, l = 10, r = 20, a = [12, 15, 18, 9]** 输出:**2**

样例3:

输入:**n = 3, l = 1, r = 10, a = [2, 4, 6]** 输出:**3**

:::success 太水了

:::

def solution(n: int, l: int, r: int, a: list) -> int:
    # write code here
    count = 0
    for x in a:
        if x % 2 == 0 and l <= x <= r:
            count += 1
    return count


if __name__ == '__main__':
    print(solution(5, 3, 8, [1, 2, 6, 8, 7]) == 2)
    print(solution(4, 10, 20, [12, 15, 18, 9]) == 2)
    print(solution(3, 1, 10, [2, 4, 6]) == 3)

Host 管理

  • 流量负载:文件大小越来越大
  • 名称冲突:无法保证主机名称的唯一性,
  • 时效性:分发靠人工上传

域名系统

  1. 域名购买
  2. 购买二级域名
  3. 域名备案
  4. 修改配置

如何开放外部用户访问

租赁一个外网ip,专门用于外部用户访问门户网站,将www.example.com 解析到外网 ip ,将ip绑定到一台物理机上,并发布公网 route, 用于外部用户访问。

自建 DNS 服务器

  • 内部域名也得去公网解析,效率低
  • 外部用户能看到内网ip,容易被攻击
  • 云厂商DNS服务容易出问题
  • 持续扩大公司的技术影响力

站在企业角度考虑,我们需要的是那种DNS服务器?

权威DNS, localDNS(可选)

开源DNS: bind、nsd、knot、coredns

https

http明文传输,弊端明显

对称加密和非对称加密

  • 对称加密:一份密钥
  • 非对称加密:公钥和私钥

接入全站加速

  • 源站容量问题: 增加后端机器扩容;静态内容,使用静态加速缓存
  • 网络传输问题:动态加速DCDN
  • 全站加速:静态加速+动态加速!

什么是4层负载均衡

  • 基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡的落在后端·服务器
  • 三个主要功能:

1.解耦vip和rs

2.nat

3.防攻击:syn proxy