AOJ1316/The Sorcerer's Donut
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1316
ドーナツに文字が刻み込まれているので、その中から複数回出現する部分文字列の中で最大の長さのものを出力する問題です。
入力は長方形に並べられた文字列ですが、端に行くと反対の端から出てくる仕様になっています。(ドーナツに刻み込まれているのを想像すればわかる)
長方形全ての文字をそれぞれ始点にした時、それぞれ8方向に探索して部分文字列を得る度にsetに突っ込んで既出だったら答えを更新します。
AOJ2300/Calender Colors
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2300
n個の中からm個選んで
そのm個の中で作れる全通りのペアについて
それぞれの要素について二乗和を求めて
全て足した値の最大値を求める問題です。
バックトラックで解きましたがもう少し賢く解けそうですね…
n個の中でi番目について (選ぶ|選ばない) して
再帰的に解いています。
AOJ1275/And Then There Was One
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1275
queueを使う練習です。
mから始まり、nの次に0になって、m-1で終わる数列に対して
最初の一回目と、それ以降k回毎に要素を取り除きます。
それ以外の時は取り除いた要素をqueueの末尾に追加します。
これを要素数が1になるまで繰り返すだけ。
queueの操作は、先頭を参照がqueue.front(),
先頭を削除がqueue.pop()です。先頭とは、queueの中で
一番古くに追加された要素を指します。
AOJ1180/Recurring Decimals
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1180&lang=jp
シミュレーションします。
数→文字列→数と変換し、その過程でsortをはさみます。
生成した文字列は出現済みということでmapに投げて管理します。
sprintf, map, reverse, atoi辺りはサッと使えるようにしたいですね。
AOJ2400/You Are the Judge
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2400
sortを楽にするためにpairを入れ子にする。
pairをsortに投げるとfirst, secondの順にsortしてくれるため、
sortの優先順位が高い順にpairの中身を決める。
昇順と降順をデータの種類ごとに変えてソートするときは
降順にしたいデータの正負を逆転して昇順でソートする。
string型の比較は ==, != でもできる。