UVaに寝返り4

12/24に書こうと思って書き溜めしてたことでも.
世間がクリスマスの日でもUVaを解きまくってた… というわけにはいかなかったようだ.
残念ながら気力が途中で尽きてしまった.でも2問だけ解いたのでとりあえず.

122 - Trees on the level

実装の問題.

  • インプットの形式が若干特殊な感じなので工夫しながら取っていく必要がある.
  • 2分木の各ノードに対し<数値,位置>のペアが与えられるので,それをこの2つの情報を要素に持つ構造体に保持していく.
  • 次にこれが正しく2分木をなしているかをチェックする.同じ位置のノードが複数与えられていたり,あるノードに対し親となるノードが存在しなければnot completeを出力する.これはO(n^2)でできる.
  • not completeでなければ位置を文字列と見なして辞書順にソートし,その順番で数値を出力していけば完了.


にしてもUVaってなんか入力が捻くれてる問題が多い気がする.
普通に行頭にノードの個数示して次のn行にノードの情報が続く… みたいにすれば楽に読み取れるのに.
入力をめんどくさくして難易度上げるのってなんだかなぁと思う.(慣れてないからこう思うだけ??

123 - Searching Quickly

これもやはりアルゴリズムのいらない実装の問題.

  • 入力は行単位で取っていけばよい.
  • words to ignoreはsetにでも格納していく.
  • スペース区切りはstrtokを使うと良い… かな
  • あとはソート用にデータ構造を独自に定義して(仮にStrとする),vectorに候補を追加していき,最後にソートして出力すれば完了.