teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

計算量について加筆

2020/04/10 03:03

投稿

majiponi
majiponi

スコア1722

answer CHANGED
@@ -3,4 +3,6 @@
3
3
  0. Aiを大きい順に並べ替えた数列Bjを考えます。
4
4
 
5
5
  1. B1,B2,B3で三角形が作れるか調べます。作れる場合、その和が答えになります。
6
- 2. 作れない場合、B1を使うどの組み合わせも三角形を作れないので、B2,B3,B4で作れるか調べます。作れる場合、その和が答えになります。作れない場合、B3,B4,B5、というように、添字を1つづつ増やして同様に調べ、Bnを使っても作れない場合、0が答えになります。
6
+ 2. 作れない場合、B1を使うどの組み合わせも三角形を作れないので、B2,B3,B4で作れるか調べます。作れる場合、その和が答えになります。作れない場合、B3,B4,B5、というように、添字を1つづつ増やして同様に調べ、Bnを使っても作れない場合、0が答えになります。
7
+
8
+ 全ての組み合わせを調べた場合、計算量はO(n^3)ですが、このアルゴリズムの場合、計算量はO(nlogn)になります。

1

途中で誤って投稿してしまったため加筆

2020/04/10 03:03

投稿

majiponi
majiponi

スコア1722

answer CHANGED
@@ -1,7 +1,6 @@
1
1
  アルゴリズムのタグがついていたので、直接の回答にはなっていませんが…
2
2
 
3
- 0. Aiを大きい順に並べ替え数列Bjを考えます。
3
+ 0. Aiを大きい順に並べ替え数列Bjを考えます。
4
4
 
5
- 1. B1,B2,B3で三角形が作れるか調べます。作れる場合、3飛びます。
5
+ 1. B1,B2,B3で三角形が作れるか調べます。作れる場合、その和が答えなります。
6
- 2. 作れない場合、B1を使うどの組み合わせも三角形を作れないので、B2,B3,B4で作れるか調べます。作れる場合、3飛びます。作れない場合、B3,B4,B5、というように、添字を1つづつ増やして同様に調べ、Bnを使っても作れない場合、0が答えになります。
6
+ 2. 作れない場合、B1を使うどの組み合わせも三角形を作れないので、B2,B3,B4で作れるか調べます。作れる場合、その和が答えなります。作れない場合、B3,B4,B5、というように、添字を1つづつ増やして同様に調べ、Bnを使っても作れない場合、0が答えになります。
7
- 3. 作れたBj,B(j+1),B(j+2)に対応するAの添字を、fの逆置換を考えることで求めます。その3つの数字が最大の長さを