std::next_permutation

とあるツイートがきっかけでヒートアップしてしまったstd::next_permutation TLを私が見えた範囲でまとめました。 競技プログラマと闇プログラマが混じって、若干カオスですが、如何にstd::next_permutationが愛されているかが分かるかと思います。
2
nico_shindannin(診断人) @nico_shindannin

next_permutationで、わしも大事な何かを失ったのかもしれんのう…(遠い目)

2011-05-27 00:42:45
hogeover30 @hogeover30

next_permutationのかわりにprev_permutationにリバースイテレータを渡してやるとchallengerを騙すことができるだろうか

2011-05-27 00:45:17
まっつん @y_mazun

next_permutationが流行りなのかー

2011-05-27 00:46:30
fura @fura_2

prev_permutation は1回だけ使った記憶がある

2011-05-27 00:48:43
ゆーた @yuta1024

next_permutation()は内部実装がすごいとかなんとか。

2011-05-27 00:59:23
chokudai(高橋 直大)@AtCoder社長 @chokudai

next_permutation TLかぁ 正直あんまり広めたくないものの1つ 再帰実装と実行時間が変わるか、って言ったら殆ど変らないし、組みなれてない内から頼るのはお勧めしないなぁ 黄色以上で速度がどうしても必要、とかならしゃーないけど

2011-05-27 01:03:07
まっつん @y_mazun

next_permutationは計算量余裕ありそうなときしか使わないなぁ

2011-05-27 01:07:00
chokudai(高橋 直大)@AtCoder社長 @chokudai

next_permutationとかは、確かにTopCoderの成績を上げるのには直結するけど、最初はそれくらいの複雑さのものは自力で書いて欲しいかな 速度勝負になれば確かに大きな差が出るけど、解けた・解けなかったとかの差が出るようなら、むしろ練習のために自力で書くべきである

2011-05-27 01:10:47
nico_shindannin(診断人) @nico_shindannin

. @h_chiroさんの書き込みをみて、順列総当りを再帰で書いた場合、再帰なら枝刈りのチャンスがあるので、next_permutationが遅いなぁと思ったんだけど、別にnext_permutationも途中で数字を書き換えたてスキップとかさせたら枝刈りも可能だなと思い直す

2011-05-27 01:11:04
k_operafan @k_operafan

あらかじめコードを作っておけば,再帰で順列を生成してもコーディング時間にはほとんど影響しないはず

2011-05-27 01:12:14
はまづ @hama_du

next_permutationは一度Javaで書いて実装しておきたいなぁ

2011-05-27 01:12:15
k_operafan @k_operafan

そして自分で作ったものだから何処を弄ると良いのか分かりやすいのがメリット

2011-05-27 01:12:49
chokudai(高橋 直大)@AtCoder社長 @chokudai

もちろんこれは競技プログラマに限った話かな 競技プログラミングってのは、方針が見えればそれで終わりじゃない それを如何に頭の中でちゃんと組み上げて、ミスなくコードに落とせるか その速度が要求されるのに、最初っから手抜きばっかり覚えてたら、鍛えるべきところが鍛えられない

2011-05-27 01:13:46
隅須正昭 @nagoya313

@chokudai 既にいいものがあるならありがたく使わせてもらうをやった結果アルゴリズム全然自力で組めなくなってしまったんで、ここらへんのバランスがどうなんだろうなと思うことはありますね。

2011-05-27 01:53:34
tomerun @tomerun

next_permutationはTopCoder参加しはじめの頃にSRM本番で初めて見てその場でJava実装した思い出 http://d.hatena.ne.jp/tomerun/20081202/1228231059

2011-05-27 01:17:55
@dark_yoshi_cxx

自分の見えた範囲でまとめるか…

2011-05-27 01:19:18
nico_shindannin(診断人) @nico_shindannin

一番の特効薬は、TopCoderで安易にnext_permutationを使うと、落ちるような問題かも。みなさん考えてみましょう。

2011-05-27 01:21:07
まっつん @y_mazun

@nico_shindannin @h_chiro 配列の序盤でムリだったら残りをソートして高速化したことはありますね

2011-05-27 01:21:47
rti @super_rti

【C++】next_permutationがちょうすごい件【TopCoder】 - nokunoの日記 http://htn.to/Kfsa8x

2011-05-27 01:22:27
hogeover30 @hogeover30

std::next_permutation を使うのが手抜きなら std::sort を使うのも手抜きな気がするけどコンテスト中に O(nlogn)のソートなんて書ける気がしない。

2011-05-27 01:22:51
Kosei Moriyama @cou929

一部クラスタが next_permutation に染まっている. のくのさんすごい

2011-05-27 01:22:56
2DP @Respect2D

ICPCのcleaning robotなんかは, next_permutationで通らなくて, 再帰で通るものの例. たしかPKUではTLEで通らなかったはず

2011-05-27 01:25:01
まっつん @y_mazun

@Respect2D まさにその問題をnext_permutationの枝刈り(?)で解きましたw

2011-05-27 01:30:42