バインドBOJ 1744個の数字
6409 ワード
https://www.acmicpc.net/problem/1744
2秒、128 MBメモリ
input : N(1 <= N <= 10,000) 数量(-1000<=数量<=10000) output :
最大コンビネーションの出力は である.
条件:数列の2つの数を合わせたいです. 位置に関係なく、 をバンドル可能{0,1,2,4,3,5}の場合,この数列の和を直接0+1+2+4+3+5=15とする.ただし、2と3を結合し、4と5を結合すると、0+1+(23)+(45)=27 となる
位置合わせ角度が強そうに見えますが...
やっぱり条件が多ければ多いほど間違いやすい...
どうせ負数に乗じていることを知っておくと...2つのリストを並べばいいのに、ハハハハ......きょうどう
まずは2つのハイライトを見逃しました
1.プラス1は大きいです.△ほかに1万まで数えたほうがいいですよ.後でやりましょう.
2.0負数に乗算すると、最大数になります.(負数リストに0を追加)
負数のリストは昇順に並べられ、乗算時に最大となる.
最小の負数に正数を乗じると、値が大きくなります.0は一番小さいやつと乗らなければならない.
最後に.正数と負数を乗算する場合は,文中のi+1がリスト外にあるかどうか例外処理を行う必要がある.
2秒、128 MBメモリ
input :
最大コンビネーション
条件:
位置合わせ角度が強そうに見えますが...
やっぱり条件が多ければ多いほど間違いやすい...
どうせ負数に乗じていることを知っておくと...2つのリストを並べばいいのに、ハハハハ......きょうどう
まずは2つのハイライトを見逃しました
1.プラス1は大きいです.△ほかに1万まで数えたほうがいいですよ.後でやりましょう.
2.0負数に乗算すると、最大数になります.(負数リストに0を追加)
負数のリストは昇順に並べられ、乗算時に最大となる.
最小の負数に正数を乗じると、値が大きくなります.0は一番小さいやつと乗らなければならない.
最後に.正数と負数を乗算する場合は,文中のi+1がリスト外にあるかどうか例外処理を行う必要がある.
import sys
n = int(sys.stdin.readline())
positive = []
negative = []
one = 0
for i in range(n):
data = int(sys.stdin.readline())
if data > 1:
positive.append(data)
elif data <= 0:
negative.append(data)
else:
one += 1
positive.sort(reverse=True)
negative.sort()
ans = 0
for i in range(0, len(positive), 2):
if i + 1 < len(positive):
ans += positive[i] * positive[i + 1]
else:
ans += positive[i]
for i in range(0, len(negative), 2):
if i + 1 < len(negative):
ans += negative[i] * negative[i + 1]
else:
ans += negative[i]
print(ans + one)
Reference
この問題について(バインドBOJ 1744個の数字), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/BOJ-1744-수-묶기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol