全部评论
#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了
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
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% 改了一下,应该能全过
第一题多种情况怎么算啊?比如PVVVVPVP,中间那个P放哪里啊?
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)
同样也没能作出健身房,大佬能附上第一题推荐结果散打代码吗?谢谢了
可以说一下你健身房什么方法40的吗?
100 100 0 100,说实话健身房没读懂题
40 100 0 100😖
最后一题也只有50,求AC的
相关推荐

点赞 评论 收藏
分享