金狗蛋 level
获赞
6
粉丝
0
关注
2
看过 TA
33
湖南大学
2023
深度学习
IP属地:浙江
暂未填写个人简介
私信
关注
2022-03-29 21:01
湖南大学 深度学习
投的是2022的暑期实习 计算机视觉算法研发工程师实习生 笔试编程两道题 全部AC 第一题:最长回文串01(leetcode : 5类似) 解题思路:中心扩展法求解最长回文串,分别以一个字符为中心和两个字符为中心,然后选择其中最长的那个 注意的点:这个题如果是 11111 or 000 返回0 所以有一个判断需要判断是否全为一样的值 代码: #include <bits/stdc++.h> using namespace std; /* 1、回文串 判断 2、最长子串 3、双指针 中心扩展法  找回文串的难点在于,回文串的的长度可能是奇数也可能是偶...
永远喜欢18岁:t2贴一个O(logn)解法: 显然,最大值为(a + b) // (x + y),下面对0到(a + b) // (x + y)二分check最大值max是否可以由max得到答案。 首先特判x=y的情况,max为min(a, b) // x。 设二分过程中的值为m,则可以由m得到答案(*)等价于存在m1使得m1*x+(m-m1)*y<=a 且 m1*y+(m-m1)*x<=b,分x>y和x<y讨论,解上面两个不等式得到m1的上界right和下界left,对right向下取整,对left向上取整,则(*)等价于left<=right 且left<=m且right>=0。 import math a, b, x, y = map(int,input().split(' ')) if x == y: print(min(a, b) // x) else: l, r = 0, (a + b) // (x + y) while l <= r: mid = (l + r ) // 2 if x > y: left, right = (b - mid * x)/(y - x), (a - mid * y)/(x - y) else: right, left = (b - mid * x)/(y - x), (a - mid * y)/(x - y) right, left = math.floor(right), math.ceil(left) if left <= right and mid >= left and 0 <= right: l = mid + 1 else: r = mid - 1 print(r)
投递百度等公司9个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务