解いた問題のソースコードと解説など。


2017-01-01から1ヶ月間の記事一覧

POJ 3233 Matrix Power Series

問題 nxnの行列Aが与えられる。S=A+A^2+A^3+...+A^kを計算し、各要素をmで割ったあまりを求めよ。 やりかた 行列の累乗は繰り返し二乗でできるとしても単純にやったら確実にTLEする。なのでうまく分割統治しつつメモ化しておくことで通すことができる。数列…

POJ 2601 Simple calculations

問題 という漸化式の数列がある。が与えられるのでを求めよ。 やりかた (たぶん嘘解法) に対してがmonotonicalに変化するからに関して二分探索すればいいんじゃまいか(・∀・)!! で通ってしまった。よく考えるとmonotonicalじゃないような。 実験すると一般項…

POJ 2505 A multiplication game

問題 StanとOllieが掛け算ゲームをして遊ぶ。数字を1から始めて毎ターン2から9までの好きな数字をかけていく。数字が与えられた数n以上になった時、そのときのプレーヤが勝ちとする。Stanからプレーを始めて交互に行う。両者が最適にプレーする時、必勝はど…

POJ 2499 Binary Tree

POJ

問題 (1, 1)という値を根に持つ完全二分木があり、各ノード(仮に(a, b)とする)からは左に(a + b, b)という値を持つ子、右に(a, a + b)という値を持つ子が伸びている。 (x, y)というノードから親を辿りながら根まで行くときに左側に移動する回数と右側に移動…

POJ 2613 Choose and divide

問題 二項係数同士の除算C(p,q)/C(r,s)を行い、小数点第五位までを出力せよ。p,q,r,sは10000未満で、答えは常に1e7を超えないとしてよい。 やりかた 素直にやると精度が落ちて誤差死する。なので優先度付キューを2つ用意して式の分母と分子の数字をそれぞれ…

POJ 1450 Gridland

POJ

問題 デカルト座標上にnxmのグリッドがある。グリッドの格子点では上下左右の格子点に加え対角線方向のグリッドにも移動できる。このnxmの格子点について巡回セールスマン問題を解け。 やりかた 巡回セールスマン問題なのでnxm回の辺の移動がある。なので問…

POJ 2248 Addition Chains

問題 要素が一つだけの数列a(a[0] = 1)からはじめて、数列a中の任意の2つの要素の和を取り、それが最終項より大きい場合に最終項の後ろにくっつけるという操作を繰り返して、入力として与えられるnをつくりたい。 操作回数が最小であるときの、最終的な数列…

POJ 2348 Euclid's Game

問題 2つの自然数が与えられ、この自然数についてStanとOllieがゲームを行う。プレーヤは大きい方の数から小さい方の数の倍数を引いて相手プレーヤに渡すことができる。ただし、大きい方から小さい方の倍数を引いて残った数は0以上にならなければいけない。…

POJ 1917 Automatic Poetry

問題 "s1<s2>s3<s4>s5" という形式の文字列が与えられる。もう一つ "s..." という形式の文字列が与えられる。元の文字列からカッコを取り除いた文字列と、もう一つの文字列を "ss4s3s2s5" という形式に直したものを出力せよ。 やりかた Javaであれば正規表現を使える</s4></s2>…

POJ 1384 Piggy-Bank

問題 複数種類の硬貨があり、その重さと価値が与えられる。重みの和がちょうどE-Fになるように硬貨を取り出したときの価値の和を最小化せよ。硬貨は各種類とも無尽蔵にあるとしていい。 やりかた dp[i]:=(重みの和がiであるときの価値の最小値)でDP。硬貨j…

Get up! 明日のSUPER ST@R!