Div2Codeforces順列に関する問題セットでした。kである順列を表示して下さい。複数存在する場合は、どれを表示しても構いません。そのような順列が必ず存在することは保証されています。範囲を反転させる、という方法を使いました。Marblehttp://www.codeforces.com/problemset/problem/285/BPetyaさんとVasyaさんがゲームをします。Petyaさんはn個のコップを一列に並べます。呼ぶことにしましょう。Petyaさんはまずsの位置にあるコップにビー玉を入れます。したがって、コップを並べ替えます。いうように行われます。Petyaさんがこの並べ替えを任意の回数行ったあと、PetyaさんはVasyaさんにビー玉がどの位置のコップにあるか伝えます。Vasyaさんの課題は、ビー玉がsからtへ移動するのに必要な並べ替えの最小の回数を答えることです。並べ替えの操作を長さ1の有向グラフにしてsからtへの最短路を求めました。言って冗長な方法ですが、この方法を使うと、-1と答えなければならない場合にも、難しいことを考えずに済みます。なるので、最短路を求めるアルゴリズムについてはお察しください。この数列に対して、1回の操作で以下のどちらかを行えます。いずれかの数をインクリメントするいずれかの数をデクリメントするこの操作を複数回行なって、この数列を次の条件に合うようにします。数列を構成するどの数も、nを超えない正の整数である数列に含まれる数に、重複は無い必要な操作の最小の回数を答えて下さい。数列と書いてありますが、順序は関係ありません。集合を作ってね」ということです。順序が関係ない入力が与えれるときは、「とりあえずソートしてみる」というのが意外と有効だったりします。変更していけば良いです。1..nの範囲にある要素はそのままにして......というようなことをやりたくなりますが、そんな余計なことを考える必要はありません。前回の反省を全く活かせていなくて、見てくださいる方に申し訳ないのですが、答えはintに収まりません。(1)はてなブログをはじめよう!kujira16さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。