BOJ 2473歳溶液
7465 ワード
https://www.acmicpc.net/problem/2473
1秒、256 MBメモリ
input : N (3 <= N <= 5000) N個の溶液特性値(-100000000000<=溶液<=10000000000) output :
3つの溶液の特性値はであり、0に最も近い. 特性値の昇順出力 条件:酸性溶液の特性値は1~10000000, である.塩基性溶液の特性値は-1から-10000000 二分探索を行うべきかどうか考えていますが、これを行うには溶液を固定する必要があります.そして固定的にどうするかが問題です
3つだけ抽出するには410億の演算が必要で、これは不可能です.
どうすればいいか探さなければなりません
完全な探索を利用して1つの溶液を固定し,別の2つの溶液を探すだけでは全く予想されなかった.思ったより虚脱だったのですが、この方法を見てグルキンだと認めました.
優先順位を付けます.アルカリ性は負数,酸性は正数であるため,並べ替えにより得られる利点がある.
また、3種類の溶液のうち、第1の溶液は常に第iの溶液で固定されている.ゲートが0からn-2に回ると全ての場合の数が見られるので、中間点で前面部分の溶液が見えない場合はありません.
for文を実行し、その内部に二重ポインタを使用し、以前の値と現在の溶液の和を比較する必要があります.ゼロに近いのは、割引が使いやすいことです.
temp、絶対値を比較値に加算し、比較-tempを正の値にする場合は、tempを0に近い値に置き換える必要があります.
temp値が0より大きい場合は、right-=1の正の値を小さくすることで0に近づきます.
小さい場合はleft+=1で負の値を小さくし、0に近づきます.
1秒、256 MBメモリ
input :
3つの溶液の特性値はであり、
3つだけ抽出するには410億の演算が必要で、これは不可能です.
どうすればいいか探さなければなりません
完全な探索を利用して1つの溶液を固定し,別の2つの溶液を探すだけでは全く予想されなかった.思ったより虚脱だったのですが、この方法を見てグルキンだと認めました.
優先順位を付けます.アルカリ性は負数,酸性は正数であるため,並べ替えにより得られる利点がある.
また、3種類の溶液のうち、第1の溶液は常に第iの溶液で固定されている.ゲートが0からn-2に回ると全ての場合の数が見られるので、中間点で前面部分の溶液が見えない場合はありません.
for文を実行し、その内部に二重ポインタを使用し、以前の値と現在の溶液の和を比較する必要があります.ゼロに近いのは、割引が使いやすいことです.
temp、絶対値を比較値に加算し、比較-tempを正の値にする場合は、tempを0に近い値に置き換える必要があります.
temp値が0より大きい場合は、right-=1の正の値を小さくすることで0に近づきます.
小さい場合はleft+=1で負の値を小さくし、0に近づきます.
import sys
from collections import deque
n = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
data.sort()
ans = deque([(float('INF'), 0, 0, 0)])
for i in range(n - 2):
left = i + 1
right = len(data) - 1
while left < right:
temp = data[i] + data[left] + data[right]
compare, prev_i, prev_left, prev_right = ans.popleft()
if abs(compare) > abs(temp):
ans.append((temp, i, left, right))
else:
ans.append((compare, prev_i, prev_left, prev_right))
if temp > 0:
right -= 1
else:
left += 1
val, i, left, right = ans.popleft()
print(f"{data[i]} {data[left]} {data[right]}")
Reference
この問題について(BOJ 2473歳溶液), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/BOJ-2473-세-용액テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol