快手健身房题目怎么优化啊?求问各位大佬都ac了多少啊?

rt  100 100 40 50#快手##笔试题目#
全部评论
最后一题也只有50,求AC的
点赞 回复
分享
发布于 2019-08-25 18:34
40 100 0 100😖
点赞 回复
分享
发布于 2019-08-25 18:34
小红书
校招火热招聘中
官网直投
100 100 0 100,说实话健身房没读懂题
点赞 回复
分享
发布于 2019-08-25 18:36
可以说一下你健身房什么方法40的吗?
点赞 回复
分享
发布于 2019-08-25 18:37
同样也没能作出健身房,大佬能附上第一题推荐结果散打代码吗?谢谢了
点赞 回复
分享
发布于 2019-08-25 18:41
import sys data = [] for line in sys.stdin.readlines():     data.append(line.strip()) N = int(data[0]) M = int(data[1]) if M == 1:     print(1)     print(data[2]) elif N == 1:     print(M)     for x in data[2:]:         print(x) else:     res = []     P = []     V = []     ptr = -1     for i, x in enumerate(data[2:]):         if x[0] == 'V':             res.append(x)         else:             res.append(x)             ptr = i             break     if ptr == -1:         print(M)         for x in res:             print(x)     else:         for x in data[ptr+2:]:             if x[0] == 'P':                 P.append(x)             else:                 V.append(x)         P = P[1:]         while V:             if len(V) >= N-1:                 res += V[:N-1]                 V = V[N-1:]                 if P:                     res.append(P[0])                     P = P[1:]                 else:                     res += V                     break             else:                 res += V                 break         print(len(res))         for x in res:             print(x)
点赞 回复
分享
发布于 2019-08-25 18:44
第一题多种情况怎么算啊?比如PVVVVPVP,中间那个P放哪里啊?
点赞 回复
分享
发布于 2019-08-25 19:02
n = int(input()) D = list(map(int,input().split())) E = list(map(int,input().split())) dp = [ 2*D[i]+E[i] for i in range(n)] ans = max(dp) print(ans) dp[0] = E[0] for i in range(1,n):     dp[i] = max(dp[i-1],E[i]) for j in range(1,n):     ans = 0     for i in range(j,n):         ans = max(ans,2*D[i]+E[i]+dp[j-1])     print(ans)     pre = dp[j]     dp[j] = sum(E[:j+1])     for i in range(j+1,n):         tmp = dp[i]         dp[i] = max(dp[i-1],pre+E[i])         pre = tmp 笔试的时候用了二维数组,内存超限,只过了60% 改了一下,应该能全过
点赞 回复
分享
发布于 2019-08-25 19:11
def getMaxMusle(distances, scores):     if(len(distances) == 0):         return []     elif(len(distances) == 1):         return [distances[0] * 2 + scores[0]]     import heapq as hq     n = len(distances)     rights = [(- distances[i] * 2 - scores[i], i) for i in range(n)]     hq.heapify(rights)     lefts, res, curr_i, curr_score = [], [], -1, 0     for _ in range(n):         if(not rights or              (lefts and lefts[0][0] <= rights[0][0] + 2 * distances[curr_i])):             curr_score -= hq.heappop(lefts)[0]             res.append(curr_score)         else:             curr_score += (- rights[0][0] - 2 *                  (distances[curr_i] if(curr_i >= 0) else 0))             curr_i = max(curr_i, rights[0][1])             hq.heappop(rights)             res.append(curr_score)             while(rights and rights[0][1] < curr_i):                 temp = hq.heappop(rights)                 hq.heappush(lefts, (temp[0] + 2 * distances[temp[1]], temp[1]))     return res AC 100
点赞 回复
分享
发布于 2019-08-25 20:10
#include<iostream> using namespace std; int main(void) { int n; int temp; while (cin >> n) { int *length = new int[n]; int *Ei = new int[n]; for (int i = 0; i < n; i++) cin >> length[i]; for (int i = 0; i < n; i++) cin >> Ei[i]; temp = length[n-1]; if (n > 1) { for (int i = n - 1; i >= 0; i--) { if (i == n - 1) temp += Ei[i]; else temp += Ei[i] + length[i + 1] - length[i]; cout << temp + length[i]; if (i != 0) cout << endl; } } else { cout << Ei[0]+2*length[0]; } delete[] length; delete[] Ei; } return 0; } 也算是动态规划吧,AC了
点赞 回复
分享
发布于 2019-08-26 10:05

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务