腾讯-后台&综合-第二次笔试(2021.9.5)

第1题

题目描述:
小A和小B在玩一个精灵养成游戏。小A和小B各有 n n n个精灵,每个经理都有一个攻击力,现在小A想和小B对战。规则如下:
每个回合两人各派出一直精灵,攻击力因子更多的精灵获胜(因子数相同不算胜)。每个精灵只能出战一次,一共 n n n个回合。
现在小A知道了小B会按 1 , 2 , . . . 1,2,... 1,2,...的顺序出战。小A则可以改变精灵的出战顺序。小A希望自己赢得回合尽量多,如果小A 选择最优的出战顺序,最多可以赢多少回合。

注":因子即与存目标数字在整除关系的数字,又称为“约数”,“因数”,如8的因子有 [ 1 , 2 , 4 , 8 ] [1,2,4,8] [1,2,4,8]
输入描述:
第一行: n n n(小A ,小B的精灵个数) ( 1 ⩽ n ⩽ 100000 ) (1⩽ n ⩽100000) (1n100000)
第二行: a [ 1 ] , a [ 2 ] , . . . , a [ n ] a[1],a[2],...,a[n] a[1]a[2]...a[n](小A每只精灵的攻击力) 1 ⩽ a [ i ] ⩽ 100000 ) 1⩽ a[i] ⩽100000) 1a[i]100000)
第三行: b [ 1 ] , b [ 2 ] , . . . , b [ n ] b[1],b[2],...,b[n] b[1]b[2]...b[n](小B每只精灵的攻击力) 1 ⩽ b [ i ] ⩽ 100000 ) 1⩽ b[i] ⩽100000) 1b[i]100000)
输出描述
如果小A选择最优的出战顺序,最多可以赢的回合数
示例1:
  输入:3
     1 3 5
     4 2 6
  输出:0
  说明:
     小A 的第一个精灵,攻击力为1,攻击力因子[1],精灵一攻击力总共为1。
     小A的第二个精灵,攻击力为3,攻击因子[1,3],精灵二攻击力总共为2。
     小A的第三个精灵,攻击力为5,攻击因子[1,5],精灵三攻击力总共为2。

     小B的第一个精灵,攻击力为2,攻击力因子[1,2,4],精灵一攻击力总共为3。
     小B的第二个精灵,攻击力为2,攻击因子[1,2],精灵二攻击力总共为2。
     小B的第三个精灵,攻击力为5,攻击因子[1,2,3,6],精灵三攻击力总共为4。
显然,小A无论怎样选择对战顺序,都无法取得一场胜利。

示例2:
  输入:3
     5 8 9
     4 12 6
  输出:1
  说明:
     小A 用第二个精灵去对战小B的第一个精灵,由于8有[1,2,4,8]共4个因子,而4只有[1,2,4]共3个因子,小A获胜。
剩下两场小A 均不能获胜,并且以上对战顺序是小A 唯一可能获胜的安排方式。

示例3:
  输入:3
     1 1 2
     1 1 2
  输出:1

第2题

题目描述:
牛牛有一堆数链,这些数链里面的数字都杂乱无章,牛牛很懒,他不想整理一下这些数字,于是他决定将这些数链串在一起。牛牛遵循着以下规则:

  1. 依次取出每条非空数链链头,将这个数插入到答案串尾部
  2. 如果全部数字都已经取出,则结束。

示例1:
  输入:[{1,2,3},{4,5},{7,8,9,10,11,12}]
  输出:{1,4,7,2,5,8,3,9,10,11,12}

示例2:
  输入:[{1,3},{},{2}]
  输出:{1,2,3}
备注
   0 ⩽ 链 表 元 素 值 ⩽ 1 0 9 0 \leqslant 链表元素值 \leqslant 10^{9} 0109
   0 ⩽ 总 元 素 个 数 ⩽ 1 0 5 0 \leqslant 总元素个数 \leqslant 10^{5} 0105

第3题

题目描述:
给出一个只包含0和1的01串S,从下标1开始,设第 i i i为的价值为 v a l i val_{i} vali,则价值定义如下:

  1. i = 1 i=1 i=1时: v a l 1 = 1 val_{1}=1 val1=1
  2. i > 1 i>1 i>1时:
    2.1. 若 s i ≠ s i − 1 , v a l i = 1 s_{i} \neq s_{i-1}, val_{i} =1 si=si1,vali=1
    2.2. 若 s i = s i − 1 , v a l i = 1 s_{i} = s_{i-1}, val_{i} =1 si=si1,vali=1

字符串的价值等于 v a l 1 + v a l 2 + v a l 3 + . . . + v a l n val_{1}+val_{2}+val_{3}+...+val_{n} val1+val2+val3+...+valn
你可以删除 s s s的任意个字符,问这个串的最大价值是多少。
输入描述:
第一行一个正整数 n n n,代表字符串的长度。
接下来一行一个01串 s s s
1 ≤ n ≤ 5000 1 \leq n \leq 5000 1n5000
输出描述
输出一个整数代表答案
示例1:
  输入:6
     010101
  输出:7
  说明:删除后的串为0001或0111时有最大价值。
示例2:
  输入:20
     11111000111011101100
  输出:94
示例3:
  输入:4
     1100
  输出:6

第4题

题目描述:
小明有一个序列 [ n ] [n] [n],一开始只有一个数 n n n,小明会进行若干次操作直到无法操作。
每次操作把序列中一个大于1的数 x x x拿出来,用 ⌊ x 2 ⌋ , x m o d 2 , ⌊ x 2 ⌋ \left \lfloor \frac{x}{2} \right \rfloor,x mod2,\left \lfloor \frac{x}{2} \right \rfloor 2x,xmod2,2x替换原来序列中的 x x x
例如 n = 5 n=5 n=5时,起初序列为 [ 5 ] [5] [5],操作一次后为[2,1,2],操作两次后为[1,0,1,1,1,0,1]
问最后得到的01序列中没去见[1,r]内有多少个1,序列和区间的下标从1开始。

输入描述:
一行,三个正整数 n , 1 , r n,1,r n1r
输出描述
一行,一个正整数,表示区间[1,r]内有多少个1
示例1:
  输入:10 3 10
  输出:5
  说明:最终得到的序列为: [ 1 , 0 , 1 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 ] [1,0,1,1,1,0,1,0,1,0,1,1,1,0,1] [1,0,1,1,1,0,1,0,1,0,1,1,1,0,1]
     区间 [ 3 , 10 ] [3,10] [3,10]为:
      [ 1 , 1 , 1 , 0 , 1 , 0 , 1 , 0 ] [1,1,1,0,1,0,1,0] [11101010]
     有5个1
示例2:
  输入:5 1 7
  输出:5
示例3:
  输入:66666 12345 54321
  输出:21351
备注
对于30%的数据, 0 ⩽ n ⩽ 1 0 5 0 \leqslant n \leqslant 10^{5} 0n105
对于100%的数据, 0 ⩽ 总 元 素 个 数 ⩽ 2 50 0 \leqslant 总元素个数 \leqslant 2^{50} 0250
0 ⩽ r − 1 ⩽ 50000 0 \leqslant r-1 \leqslant 50000 0r150000

第5题

题目描述:
我们定义一个有效序列为:该序列两端的数一个为最小值,另一个为次小值。(即序列两端以外的数一定大于等于最左边的数且大于等于最右边的数)
现在给你一个序列 a a a,想让你找到它的连续子序列中有多少个有效序列(比如,1 2,2 3,1 2 3是序列1 2 3的连续子序列,但是1 3不是)
注:长度为2的子序列,一定为有效序列,长度为1的子序列,一定不是有效序列
输入描述:
第一行输入一个整数 n n n代表这个序列的长度
接下来输入 n n n个整数, a [ i ] a[i] a[i]代表系列中第 i i i个元素
对于20%的数据, 1 ⩽ n ⩽ 100 1 \leqslant n \leqslant 100 1n100
对于70%的数据, 1 ⩽ n ⩽ 3 , 000 1 \leqslant n \leqslant 3,000 1n3,000
对于100%的数据, 1 ⩽ a [ i ] ⩽ 1 , 000 , 000 , 000 1 \leqslant a[i] \leqslant 1,000,000,000 1a[i]1,000,000,000
输出描述
输出一个正整数表示有效序列的数量。

示例1:
  输入:4
     1 3 1 2
  输出:4
  说明:一共有4组有效序列,分别为:
     子序列 [ 1 , 3 ] [1,3] [1,3]因为长度为2,一定为有效序列
     子序列 [ 1 , 3 , 1 ] [1,3,1] [1,3,1]因为第2个数“3”大于第1个数和第3个数,一定为有效序列
     子序列 [ 3 , 1 ] [3,1] [3,1]因为长度为2,一定为有效序列
     子序列 [ 1 , 2 ] [1,2] [1,2]因为长度为2,一定为有效序列

示例2:
  输入:4
     1 1 2 1
  输出:5
  说明:一共有6个长度不小于2的连续子序列,除了 [ 1 , 1 , 2 ] [1,1,2] [1,1,2]以外,其他5个都是有效子序列

示例3:
  输入:7
     1 4 2 5 7 1 3
  输出:10
  说明:一共有10组有效序列,分别为:
      [ 1 , 4 ] , [ 1 , 4 , 2 ] , [ 1 , 4 , 2 , 5 , 7 , 1 ] , [ 4 , 2 ] , [ 2 , 5 ] , [ 2 , 5 , 7 , 1 ] , [ 5 , 7 ] , [ 5 , 7 , 1 ] , [ 7 , 1 ] , [ 1 , 3 ] [1,4],[1,4,2],[1,4,2,5,7,1],[4,2],[2,5],[2,5,7,1],[5,7],[5,7,1],[7,1],[1,3] [1,4][1,4,2][1,4,2,5,7,1][4,2][2,5][2,5,7,1][5,7][5,7,1][7,1][1,3]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬の夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值