腾讯暑期实习常规批笔试,数据分析岗

1,游戏
问题:开始前可以用金币购买血量,然后可以选择挑战几个怪物,求最大金币收益。
给定怪物个数n,和每个金币可以购买的血量m
然后是n行,每行代表怪物需要消耗的血量和奖励的金币

解法:循环
n,m = map(int, input().split())
tem=m  #剩余的血量
cost=1 #开局使用的金币数
gain=0 #获得的金币
res=[]
for i in range(n):
    c,g = map(int, input().split())
    while tem<c:
        tem+=m
        cost+=1
    tem-=c
    gain+=g
    res.append(gain-cost)
print(max(res)
2,积分
问题:两个线段分别为y2=2Ax;y=Bx+C。
输入ABC;求两者围起来的面积

解法:对y积分
两式联力,求交点的y坐标(根据求根公式判断有无焦点)
对y积分求面积
# -*- coding: utf-8 -*-

def func(A, B, C):
    delta = A**2-2*A*B*C
    if delta <= 0:
        return 0
    y1 = (A + delta ** 0.5) / B
    y2 = (A - delta ** 0.5) / B
    if y1 > y2:
        y1, y2 = y2, y1
    s1=-y1**3/6/A+y1**2/2/B-C*y1/B
    s2=-y2**3/6/A+y2**2/2/B-C*y2/B
    return s2-s1
 
while True:
    try:
        n = int(input())
        for i in range(n):
            A, B, C = map(int, input().split())
            print(func(A, B, C))
    except:
        break
3,
问题:n个房间,每个房间可以报1,2,3,……m的数字,求存在两个相邻房间报数相同的情形总数%100003

解法:
(1)概率论:所有情形数-相反事件的情形数,其中相反事件为任意相邻房间报数不同
直接使用该式30%
(2)快速幂:x**0=1,如果幂是奇数,则等于x乘以x**(n-1);如果幂是偶数则等于x**(n/2)**2
需要在每一步均取余数
def fastExpMod(b, e, mod):
        #快速幂函数
    if e==0:
        return 1
    if e%2==1:
        return fastExpMod(b,e-1,m)*b%mod
    else:
        return fastExpMod(b,e/2,m)**2%mod

mod = 100003
m, n = map(int, input().split())
x1 = fastExpMod(m,n,mod)
x2 = m*fastExpMod(m-1,n-1,mod)
print((x1-x2)%mod)
4,
问题:
n行,k列
如果两行的和每个元素相等,则为一对。求总对数
例如第一行为1,2,3,第二行为4,3,2。

解法:
找出变化值相反的,使用变化值作为字典的键
from collections import defaultdict
 
n, k = map(int, input().split())
nums = []
dic = defaultdict(int)
for i in range(n):
    x = list(map(int, input().split()))
    tmp = []
    for j in range(k-1):
        tmp.append(x[j+1]-x[j])
    dic[tuple(tmp)] += 1

res=0
for key,val in dic.items():
    inv=tuple([-i for i in key])
    if inv==key:    #需要考虑变化值为0的情况
        res+=val*(val-1)
    else:
        res+=val*dic[inv]
print(res/2)
5,LeetCode 547 朋友圈
共有n个关系,每个关系包括两个点。所有有关系的点都在同一个圈里,求最大的圈含有点的个数
from collections import defaultdict
 
T = int(input())
for i in range(T):
    graph = defaultdict(list)
    sts = set()
    
    n = int(input())
    for j in range(n):
        a, b = map(int, input().split())
        graph[a].append(b)
        graph[b].append(a)
        sts.add(a)
        sts.add(b)

    res = 1
    vis = set()    #vis:全局浏览记录
    for i in sts:
        if i in vis:continue
        q = [i]     #q:队列,广度优先搜索
        vis1=set()    #vis1:该圈浏览记录
        while q:
            x = q.pop(0)
            vis.add(x)
            vis1.add(x)
            for y in graph[x]:
                if not y in vis1:
                    q.append(y)
        res = max(res, len(vis1))
    print(res)












#2021届暑期实习正式批笔试##笔试题目##腾讯#
全部评论
不愧是LM的骄傲
1 回复 分享
发布于 2020-04-27 20:44
感觉第一题的题目表述不太清楚,代码和题目的意思有点歧义。
点赞 回复 分享
发布于 2020-10-21 17:01
参考https://www.nowcoder.com/discuss/417979?type=post&order=time&pos=&page=1&channel=
点赞 回复 分享
发布于 2020-04-27 20:55
这么详细,还带答案,爱了爱了
点赞 回复 分享
发布于 2020-04-27 20:42
大佬,求捞
点赞 回复 分享
发布于 2020-04-27 20:41

相关推荐

明天不下雨了:让我们大声的说出来:以前的未来就是现在
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 17:58
点赞 评论 收藏
分享
05-11 11:48
河南大学 Java
程序员牛肉:我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
投递美团等公司9个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
18
分享

创作者周榜

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