牛客真題(10)-駒を積む
1170 ワード
今日は引き続き牛客、網易の駒を磨きます.
解析:n個の駒の横縦座標を与え,i個の駒を並べた移動距離を出力する.解法は実際には暴力的な解決に似ており,各駒から他のすべての駒までのマンハッタン距離を計算し,移動距離との最小値を更新する.
質問:1、現在の点からすべての点までの距離を一時変数で格納します.2、距離の最小値を計算します.
C++コードを添付します.
Pythonコードを添付します.
解析:n個の駒の横縦座標を与え,i個の駒を並べた移動距離を出力する.解法は実際には暴力的な解決に似ており,各駒から他のすべての駒までのマンハッタン距離を計算し,移動距離との最小値を更新する.
質問:1、現在の点からすべての点までの距離を一時変数で格納します.2、距離の最小値を計算します.
C++コードを添付します.
#include
using namespace std;
int main()
{
int n;
cin>>n;
vector x(n),y(n);
for(int i=0;i>x[i];
for(int i=0;i>y[i];
priority_queue,greater> pq;
vector result(n,INT_MAX);
for(int i=0;i
Pythonコードを添付します.
n = int(input())
x = list(map(int, input().split()))
y = list(map(int, input().split()))
dist = [float('Inf') for _ in range(n)]
for i in range(n):
for j in range(n):
t = 0
tmp = []
for k in range(n):
tmp.append(abs(x[i]-x[k])+abs(y[j]-y[k]))
tmp.sort()
for k in range(n):
t += tmp[k]
dist[k] = min(dist[k], t)
print(' '.join(map(str, dist)))