I♥TLE

Java、オンラインジャッジなど

AOJ

2254-Fastest Route

問題(外部リンク) Fastest Route | Aizu Online Judge 実装の概要 ステージを経由する順序によってそれぞれのステージをクリアするための時間が変わるためグラフのアルゴリズムをそのまま使うことはできません。 また、要素数は少ないですが流石にですべて…

ITP2_2 Basic Data Structures

A : Stack 問題(外部リンク) Stack | Aizu Online Judge 実装の概要 Java.util.Stack内に必要なメソッドは既に容易されているのでこれを利用することでACできます。要素を取り出さないときはpeek()です。 public class Main { public static void main(Str…

ITP2-1 Dynamic Arrays and List

A : Vector 問題(外部リンク) Vector | Aizu Online Judge 実装の概要 java.util.VectorでACすることが可能です。このVectorにはremoveLast()がないのでremove(vec.size() - 1)とすることで末尾を指定することができます。速度が気になるところですが制限…

2224-Save your cats

問題(外部リンク) Save your cats | Aizu Online Judge 実装の概要 問題の条件を言い換えると、「与えられたグラフから閉路が無くなるように辺を取り除く場合、取り除いた辺の長さの総和の最小値はいくらか」ということになります。 そのため、クラスカル…

2249-Road Construction

問題(外部リンク) Road Construction | Aizu Online Judge 実装の概要 条件より首都から各都市への距離が最短である必要があるので単一始点最短路問題として解きます。Nの値が大きい割に辺の数はMダイクストラ法であれば十分間に合います。 今回は距離の計…

0189-Convenient Location

問題(外部リンク) Convenient Location | Aizu Online Judge 実装の概要 ある点から他の点までの最短路を全ての点について行う全点対最短路問題なのでワーシャルフロイド法で解くことができます。かかりますが、町の数が最大でも10なので時間は気にしなく…

2170-Marked Ancestor

問題(外部リンク) Marked Ancestor | Aizu Online Judge 実装の概要 それぞれのノードに自分の親のidを記憶させます。今回の問題では下に向かって探索することはないので子のidは不要です。 あとはループで親を次々と巡りながらマークされたノードを探しま…

0025-Hit and Blow

問題(外部リンク) Hit and Blow | Aizu Online Judge 実装の概要 AとBの数列を比較し、数字がちょうど一致しているか、あるいは一致していなくても数列に含まれているかを判断する問題です。 今回の実装では入力を受け付ける際に「その数がAの数列に含まれ…

0024-Physical Experiments

問題(外部リンク) Physical Experiments | Aizu Online Judge 実装の概要 問題ページに時刻tにおける速度vと座標yの式が与えられているため、それらを連立してyとvの式を作ることもできます。 ただ、y=avのような形で表すと最終的に階で答える際に階数を繰…

0023-Circles Intersection

問題(外部リンク) Circles Intersection | Aizu Online Judge 実装の概要 円が共有点を持ったり、一方の円が他方を含むかどうかは全て中心点どうしの距離と半径の関係から考えることができます。 距離はMathクラスなどを使って自分で実装しても構いません…

0022-Maximum Sum Sequence

問題(外部リンク) Maximum Sum Sequence | Aizu Online Judge 実装の概要 iから始まる長さjの数列の和を一つ一つ計算して比較する方法が考えられますが、ループのやり方によってはO(N^3)となり間に合いません。 しかし、ループの回し方を工夫すればO(N^2)…

0021-Parallelism

問題(外部リンク) Parallelism | Aizu Online Judge 実装の概要 2直線の平行を判定するAPIが標準では備わっていないので自力実装を行います。(2線分の交差判定であれば存在します) 2直線が平行ということはそれぞれの傾きが等しいということなので、入力…

0020-Capitalize

問題(外部リンク) Capitalize | Aizu Online Judge 実装の概要 文字列に含まれる小文字を全て大文字に変換するだけならStringクラスのtoUpperCase()が便利です。Characterクラスにも同様なメソッドがありますが、そちらは一文字ずつなのでループが必要にな…

0019-Factorial

問題(外部リンク) Factorial | Aizu Online Judge 実装の概要 が成り立つので再帰を用いて解きます。スタックオーバーフローについてはnが20以下となっているため特に気にする必要はありません。 終了条件についてはきちんと定義しておく必要があります。…

0018-Sorting Five Numbers

問題(外部リンク) Sorting Five Numbers | Aizu Online Judge 実装の概要 今回は単純な並び替えの問題なので、Arrays.sort()を使いました。仮に自分でソート部を実装する場合は、数字は5個と決まっているため書きやすいバブルソートなどでも大丈夫です。 …

0017-Caesar Cipher

問題(外部リンク) Caesar Cipher | Aizu Online Judge 実装の概要 問題の制約に「thisかthatかtheのいずれかを含む」と書いてあるので、若干強引ではありますが「試しに各文字をiずつずらした文字列を作る」→「前述のキーワードを含むかチェックする」とい…

0016-Treasure Hunt

問題(外部リンク) Treasure Hunt | Aizu Online Judge 実装の概要 中途半端な角度の移動も有り得るため、移動後の座標の計算に三角関数を用いる必要があります。与えられる角度は今向いている向きからの相対的な角度なので、現在向いている角度も常に保持…

0015-National Budget

問題(外部リンク) National Budget | Aizu Online Judge 実装の概要 long型でも表せないような桁数の足し算なのでBigInteger型を使います。 桁数チェックはBigIntegerを文字列に変換して文字数を取得することでシンプルに行うことができます。 public clas…

0014-Integral

問題(外部リンク) Integral | Aizu Online Judge 実装の概要 高校の教科書にも出てくる区分求積法に近いことを行う問題です。とは言っても、高さがであるような短冊型の図形の面積をひたすら足していく処理なのでプログラムにすると比較的シンプルになりま…

0013-Switching Railroad Cars

問題(外部リンク) Switching Railroad Cars | Aizu Online Judge 実装の概要 0が入力された際に出ていくのは「現在停まっている中で最後に行き止まりに入ってきた車両」なのでスタックを使うと簡単に記述することができます。即ち、車両が行き止まりに入る…

0012-A Point in a Triangle

問題(外部リンク) A Point in a Triangle | Aizu Online Judge 実装の概要 今回はあまり計算式とかを考えずにシンプルに済ませたかったので、java.awt.Polygonクラスを使用しました。これを使えば、三角形に限らず任意の多角形について同様に解くことがで…

2424-Kakezan

問題(外部リンク) Kakezan | Aizu Online Judge 実装の概要 任意の桁で区切りを入れて計算する処理は記述を簡単にするためにあえて文字列のまま処理をしてみました。実行時間に不安はありましたが無事に制限時間内に実行が終了しました。 今回の問題では「…

0011-Drawing Lots

問題(外部リンク) Drawing Lots | Aizu Online Judge 実装の概要 Sample Inputの場合、時刻0で(2,4)間に入れ替え発生、時刻1で(3,5)間に入れ替え発生…と解釈することができます。まずは入れ替えに関わるデータを配列に保存しておきます。このとき、a→bだけ…

0010-Circumscribed Circle of a Triangle

問題(外部リンク) Circumscribed Circle of a Triangle | Aizu Online Judge 実装の概要 三角形ABCの外接円の中心は、AB,BC,CAの交点にあります。もちろんこの中の2つの直線を選んで計算すれば十分です。 この実装では方程式そのものを表すクラスと連立方…

0009-Prime Number

問題(外部リンク) Prime Number | Aizu Online Judge 実装の概要 あるnが素数かどうかだけでなく、nまでの素数の個数を求める問題なので2,3,...nのように1つ1つ素数かどうかをチェックしていると間に合いません。 そのため、事前に「その数が素数かどうか…

0008-Sum of 4 Integers

問題(外部リンク) Sum of 4 Integers | Aizu Online Judge 実装の概要 使う数字の数が4つ、かつ全ての数字が1ケタと分かっているので全探索でも十分間に合います。 4重ループで解くのが自然だと思いますが、この実装ではあえて1重ループで記述し、各ケタの…

0007-Debt Hell

問題(外部リンク) Debt Hell | Aizu Online Judge 実装の概要 一週間ごとに5%の利子、さらに1000円未満を切り上げという、問題文にも書いてありますが本当にとんでもない闇金です。 複利計算なのでループを回しながら計算を行います。端数切り上げのタイミ…

0006-Reverse Sequence

問題(外部リンク) Reverse Sequence | Aizu Online Judge 実装の概要 文字を逆順に出力する問題。実装例1ではループを逆方向に回すことによって実現しています。 一方、StringBufferのインスタンスを作成すればメソッドで逆の文字列をを生成できるので、実…

0003-GCD and LCM

問題(外部リンク) GCD and LCM | Aizu Online Judge 実装の概要 GCD(最大公約数)とLCM(最小公倍数)の求め方については高校の教科書の通りなので特に説明は不要かと思いますが、手計算とは異なり剰余だけ求めれば計算可能です。 GCDとLCMは他の問題で使…

0004-Simultaneous Equation

問題(外部リンク) Simultaneous Equation | Aizu Online Judge 実装の概要 連立方程式を解くために今回はガウスの消去法を使いました。 ガウスの消去法 - Wikipedia 行列の基本変形をやや強引な方法で進めているので、読みにくくなって申し訳ありません。 …