商汤笔试20190819

#!/usr/bin/env python
# coding: utf-8

code1:
# 解析逆波兰式子
# 通过100%
def evalRPN(tokens):
    t,f = tokens.pop(),evalRPN
    if t in ‘+-*/‘:
        b,a = f(tokens),f(tokens)
        t = eval("a" + t + "b")
    return int(t)

if __name__ == "__main__":
    tokens = input()
    tokens = list([n for n in tokens.split()])
#     tokens = ["2","1","+","3","*"]
    print(evalRPN(tokens))

code2:
# 最高的山峰
# 通过78%
def longestMountain(N,A):
    res = 0
    i = 0
    while i <N:
        j = i
        #找到上升的终点,即山顶
        while j+1<len(A) and A[j]<A[j+1]:
            j += 1
        mid = j
        #找到下降的终点
        while j+1<len(A) and A[j]>A[j+1]:
            j += 1
        #判断是否构成山脉
        if i <mid<j:
            res = max(res,j-i+1)
        #若为平山,i后移,否则下降的终点作为起点
        if i == j:
            i += 1
        else:
            i = j
    return res        

if __name__ == "__main__":
    N = int(input())
    A = input()
    A = list([int(n) for n in A.split()])
#     N = 7
#     A = [9,2,5,8,4,1,7]
    print(longestMountain(N,A))

code3
# 谈学姐与投资组合
# f(i) = 0, i<0
# f(i) = f(0), i=0
# f(i) = a*f(i-1)+b*f(i-2)+c*f(i-3)+2*i**2-i+32767
# 输入n,a,b,c,f(0)
# 输出:f(n)
# 类似斐波那契数列,只通过了10%
def moneySum( n,a,b,c,f0):
    if n<0:
        return 0
    if n == 0:
        return f0
    if n == 1:
        f1 = a*f0+32767+2-2
        return f1
    if n == 2:
        f1 = a*f0+32767+2-2
        f2 = a*f1+b*f0+32767+2*n**2-n
        return f2
    return  a*moneySum(n-1,a,b,c,f0)+b*moneySum(n-2,a,b,c,f0)+c*moneySum(n-3,a,b,c,f0)+2*n**2-n+32767   

if __name__ == "__main__":
    array = input()
    array = list([int(n) for n in array.split()])
    n,a,b,c,f0 = array[0],array[1],array[2],array[3],array[4]
#     n,a,b,c,f0 = [10,0,0,0,100]
    print(moneySum(n,a,b,c,f0))

code4
#完全平方数组的数目:类似LeetCode_996_NumberOfSquarefulArrays
#https://blog.csdn.net/qq_17550379/article/details/87687106
#下列代码通过了87%
def numSquarefulPerms(N,A):
    nums = A
    nums.sort()
    res = []
    def backtrack(nums,tmp):
        if not nums:
            res.append(tmp)
            return None
#         print("len(nums)",len(nums))
        for i in range(len(nums)):
            #去重
            if i and nums[i] == nums[i-1]:
                continue
            #剪枝
            if not tmp or ((tmp[-1]+nums[i])**0.5)%1 == 0:
                backtrack(nums[:i]+nums[i+1:],tmp+[nums[i]])
    backtrack(nums,[])
    return len(res)            

if __name__ == "__main__":
#     N = int(input())
#     A = input()
#     A = list([int(n) for n in A.split()])
    N = 3
    A = [3,10,6]
    print(numSquarefulPerms(N,A))

  

原文地址:https://www.cnblogs.com/ivyharding/p/11380070.html

时间: 2024-11-08 00:30:07

商汤笔试20190819的相关文章

计蒜客 第四场 C 商汤科技的行人检测(中等)平面几何好题

商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等.在行人检测问题中,最重要的就是对行人移动的检测.由于往往是在视频监控数据中检测行人,我们将图像上的行人抽象为二维平面上若干个的点.那么,行人的移动就相当于二维平面上的变换. 在这道题中,我们将行人的移动过程抽象为 旋转.伸缩.平移,有 44 个 移动参数:\theta, scale, d_x,d_yθ,scale,d?x??,d?y??.每次行人的移动过程会将行人对应的 nn 个点全部依次应用旋转.伸

商汤科技:“天地人”三才阵 进击AI顶级巅峰

2017年末,整个产业圈,变成了人工智能的赛场. 先是12月15日,工信部印发AI三年行动计划,力争到2020年,推进人工智能核心技术和标志性产品形成国际竞争优势:随即,王健林表示万达未来主要研究方向是人工智能:而在此前乌镇的世界互联网大会上,阿里巴巴马云.腾讯马化腾.百度李彦宏和苹果的库克更是忙不迭的全程谈论着"All in AI". 就在巨头们还在探讨着行动方向时,刚刚获得国际通讯巨头高通战略投资的商汤科技则已经悄然完成一系列产业布局,并进入实战领域.12月初,商汤科技与本田达成战

创业3年估值达300亿,商汤科技做对了什么?

4月9日上午,商汤科技SenseTime对外宣布完成6亿美元C轮融资.这是继去年七月宣布B轮融资4.1亿美元后,商汤科技再次获得的又一笔巨额融资. 据悉,商汤科技C轮融资由阿里巴巴集团领投,新加坡主权基金淡马锡.苏宁等投资机构和战略伙伴跟投.据外媒报道,商汤目前估值已超过45亿美金,近300亿人民币. 商谈科技由香港中文大学汤晓鸥.徐立师兄弟于2014年10月15创立,公司成立至今不过3年多时间.3年估值达300亿,我们不禁要问,商汤科技做对了什么? 一.注重人才储备 商汤科技创始人汤晓鸥是一个

商汤AI园区的n个路口(中等)

商汤AI园区的n个路口(中等) 思路:设f(x,y)表示以x为根的子树,x点值为y时,且满足条件的方案数,那么状态转移很好想,就是dfs回溯到父亲结点时,枚举父亲结点的y值.f(x,y)父亲结点的方案数,就是对于每个儿子满足条件的方案数相乘,对于这题还需要一个优化,预处理gcd,提前得到每个数字已知最大公因数时另一个数字的集合,对于每个儿子的方案数,就是儿子每个值的总方案数-不满足条件值的方案数. #include<bits/stdc++.h> using namespace std; con

Java 商汤面试

大三找实习花了大概半个月的时间,最后选择了商汤,因为面试体验最好,从第一轮面试到拿到口头 offer 只用了两天,第二轮结束两个小时就发了,正式 offer 也仅用了两天,感觉效率很高,而且也算是一个不错的成长平台. 我面试的是 Java 后台开发,一共两轮技术面,整体难度适中,面试官很和蔼,而且在我不会的时候也很耐心地引导. 很多问题记不太清了,就尽量写吧. 第一轮 1.简述 Java 的核心特性封装.继承.多态,简单解释一下就可以,顺便解释了下 Java 反射. 2.简述重写和重载 3.Ha

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌似不可以 方法:离散化 + 每个位置的所有的值排序(上升)[避免采用树状数组时误算] + 树状数组统计之前比x大的数目( F(max_index) - F(x) ) 话说: 1.125 printf("%.2lf",x); output:1.12 用c++的setprecision也是输出

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*

题目链接   Problems Problem A Problem B bitset…… Problem C Problem D Problem E Problem F Problem G 考虑最小生成树的时候, 合并两个点的时候就新建一个点,把这两个点都指向新的那个点. 然后给这两个点都打上delta标记. 最后dfs这棵新的树就好了. 原文地址:https://www.cnblogs.com/cxhscst2/p/8846711.html

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星

res[i][j]:i->{x1,x2,x3...}->j 的集合的异或值 c[i][j]:i->{x1,x2,x3...}->j 的集合中元素个数 flag[i][j][k]:k点是否在i->{x1,x2,x3...}->j 的集合中 #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<algorithm>

商汤科技2面复盘

1.java中集合类列举? 2.java集合类的底层结构? 3.多线程编程,线程的状态? 4.synchronized关键字,结合具体的代码进行分析? 5.wait方法和sleep方法的区别? 6.notifyall和notify区别? 7.springboot的优点? 8.依赖注入底层是怎么实现的? 9.autowired的作用? 10.git操作? 原文地址:https://www.cnblogs.com/wylwyl/p/11101251.html