Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Waterloo ACM Programming Contest Fall 1 (この記事を編集する[管理者用])

2008年09月28日02時から3時間,5問.

A. Laurel Creek (?)
ちゃんと読んでない.

B. Rocket Stages (普通)
ロケットを飛ばす問題.
各stageで得られる速度は積分すれば良いんだけど,どの順番でやればいいのかどうやれば求まるんだろう….
[追記]
問題文をちゃんと読んだら順番は変えたら駄目で,使うかどうかだけ決めればいい問題だった….
インプットの欄にそういう大切な制約を書かないで欲しいorz
そうとわかれば,単純なDPで解ける.計算時間 O( 10001 * n ). nはstageの数.

C. Virtual Friends (やや簡単)
文字列処理 + union.

D. Dominos (普通)
http://rsujskf.blog32.fc2.com/blog-entry-97.html
に書いた.

E. Logo (とても簡単)
シミュレーション,やるだけ.
向きを変えるコマンド,直進するコマンド,とかが与えられるので,最初の位置と最後の位置の距離を求める.

(2008/09/28 17:00 EDIT)
Aを問題ちゃんとよく読んでなくて勘違いしてたみたい.なので修正.

(2008/09/29 05:50 EDIT)
Bも問題勘違いしてたので追記.

SRM419 DIV1 (この記事を編集する[管理者用])

2008年09月25日10時から.
Overview: http://www.topcoder.com/stat?c=round_overview&er=5&rd=13510

EASY (250pt)
2種類のコマンドからなるコマンド列が与えられる.
1種類目は1文字出力するもの.もう1種類は過去 t 秒に行われたコマンドを全部キャンセルするコマンド.
最終的に出力される文字列は何ですか,という問題.
後ろから眺めていって,実行されるコマンドを特定する.

MEDIUM (500pt)
k 人で行う石取りゲーム.
最初に n 個の石が積んであって,順番に石を取っていって最後の石を取ったら勝ち.
ただし,各人が取ることができる石の数はそれぞれ定められている.
n <= 50, k <= 20.
各人の戦略は適当な最適戦略っぽいもの.(問題文で与えられる)
勝つ可能性のある人を列挙しなさいという問題.
残りの石の数と今誰のターンかを状態として,勝つ可能性がある人を全部メモするDP.

HARD (1000pt)
閉路は単純閉路しかないノード数200以下のグラフが与えられて,
ノードの番号を付け替えてもグラフの形が変わらないpermutationの数を mod 10^9+3 で求める問題.
閉路は大きなノードに置き換えて木にしちゃって,後は各ノードから出ている小さな木が同じ形かどうか調べて,組み合わせ的に計算する…のかな?

UVa 11504 - Dominos (この記事を編集する[管理者用])

今日行われたWaterloo ACM Programming Contest Fall 1の問題.
http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=27&page=show_problem&problem=2499

ドミノ倒しの問題.
ノード数,枝数ともに10万以下の有向グラフが与えられる.
各ノードが1つのドミノに対応してて, u から v に枝が張られているのは u のドミノが倒れれば v のドミノが自動的に倒れるということ.
では,ドミノを全部倒すためには,手動で倒さなければいけないドミノの最小値はいくつですか?

解法は続く.

続きを読む

強連結成分分解 (この記事を編集する[管理者用])

強連結という言葉の定義ぐらいしかしらなくて,駄目駄目な思いをしたのでメモしておく.
ACM/ICPCでグラフに強いチームメイトがいたせいなのか個人戦だとグラフは駄目駄目.
いい加減,基礎的なことぐらいできるようになりたいな….

有向グラフにおいて,ノード uv の同値関係を
 u ~ vu から v に到達できる かつ v から u に到達できる
で定義する.
この同値関係に基づいて,同値類で分類することを強連結成分分解という.

で,なんと,強連結成分分解は計算時間 O( ノード数 + 枝数 ) でできてしまう.
Spaghetti SourceにDFS 1回で分解を行うソースコードがあるけど,パッと見でどうやっているのかわからなかったので,よりスタンダード(らしい)な方法を書いておく.
 http://www.hgc.jp/~tshibuya/classes/shibuya20050225.pdf
に方法自体は書いてある.証明は厳密にはまだ考えてないけど,いくつか例を書いてやってみると上手くいっているのが確認できる.
で,アルゴリズムは単純で以下の通り.
 Step 1. 番号がついていないノードをランダムに選び,そのノードを始点としてpost orderで番号をつけていく.
 Step 2. 枝の向きを変えた,逆グラフをつくる.
 Step 3. まだ強連結成分に属していないノードの中で,番号の一番大きなノードから(まだ強連結成分に属していないノードのみを経由して)到達できるノードの集合が1つの強連結成分.
 Note: Step 1でつけられる番号は一意ではない.

これからコード書こう.

Google Code Jam 2008 APAC local onsites (この記事を編集する[管理者用])

数箇所で分散して行われたオンサイトラウンド,準決勝ラウンド.
僕はGoogle Tokyo (渋谷)で参戦.
2008年09月22日12時35分から2時間,4問.

とりあえず,参加者,スタッフの皆様お疲れ様でした.
参加者もスタッフも有名人だらけだった.
凄いところに迷い込んでしまったものだ….

問題セットは,Round 3と同程度か,多少簡単になったのか.
とりあえず,それでも十分に鬼問題セット.
問題の点数がバラバラでペナルティタイム勝負が発生しにくくなっていた,方針転換したのかな…?
環境はPCは動作が結構軽くてサクサク動いてくれるし,ディスプレイもとても大きくて,凄いやりやすかった.
セッティングの時間30分というのは,やっぱりどうかと思った.(5分延長したけども)

A. What are Birds? (普通)
色々なケースをもれなく考えましょう系.
まずは,それぞれのクエリに対して,わかっているのと一致すればそれを返す.
BIRDの区間に入っていれば,BIRDとする.
わかっているNOT BIRDと比べて,よりBIRDの区間から外れているならNOT BIRDを返す.
そうでなければUNKNOWN.
おそらく,TopCoderで出題されたらチャレンジ大会になる問題.

B. Apocalypse Soon (やや難しい)
DFS.SmallもLargeもDFSで全探索.
foreverでなければ,生き残れる上界値は O( log(升目の数) ) ぐらいな気もするけど,
上手く見積もる方法がちょっと分からない.
Judge Inputに含まれているものだと,大体7daysぐらいが最大値だった気がする.
なので十分に間に合ってしまう.

C. Millionaire (結構難しい)
最初に所持金が与えられて,勝率 p のゲームを m (m <= 15)回挑戦することができる.
掛け金は自由(小数も可)に設定できて,勝つと2倍になり,負けると0倍になる.
最終状態で,所持金100万以上となる確率を最大化する戦略をとるとき,100万以上になる確率はいくらですか?

最後は100万以上か未満か,でしか評価されないので,
残り1回の挑戦が残されている状況では,
 0以上50万未満,50万以上100万未満,100万以上
の3通りのみを考えれば良い.
残り2回では,
 0以上25万未満,25万以上50万未満,50万以上75万未満,75万以上100万未満,100万以上
の5通りを考える.
ということで, 2^m + 1 の状態を考えれば良い.

毎回幾ら賭けるのが最適なのかというのを求めるのを全探索でやると計算時間は O( m * 2^2m ) 程度になるはず.
ただし,定数はかなり小さい.
賭ける額による,最終的に100万以上になる確率は凸関数ではないかと決めてかかって,3分探索したら通った.

D. Modern Art Plagiarism (とても難しい)
グラフ理論.
大きな木と小さな木が与えられる.
大きな木から,適当に節点を取り除いて小さな木に一致させることはできますか?
ノード数100以下.
小さな木の1つの節点を根とみなして,大きな木も対応する根を探す.
双方の根が与えられたら,それぞれの子供の木に対して包含関係が成り立つかどうかを調べて,
マッチング求めて全て包含できるならYES,そうでないならNO.
何か日本語になってないけど,そんな感じで良いらしい.

(2008/09/23 10:30 EDIT) 適当に問題ごとの体感難易度追記.

Brazilian National Contest (この記事を編集する[管理者用])

http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=11&page=show_contest&contest=204
2008年09月21日04時から5時間,10問.
Google Code Jam 2008準決勝前哨戦その2みたいなもの.
2時間半で全部解けちゃったので,予約投稿でコンテスト終了時間に投稿されるようにしておく.

Problem A: Erasing and Winning (やや簡単)
N桁の数字からD桁抜き出して,順番を変えないでできる最大の数字は何か?
N, Dはそれぞれ10^5まで.
最初に9をもってくることができるか?を調べて駄目なら8をもってこれるか?を調べて…を繰り返す.
ある区間の数字のヒストグラムを作っておけば O(N) で解ける.

Problem B: Babel (やや難しい,もとい面倒)
ダイクストラ.
ちょっと面倒な実装問題.

Problem C: The Club Ballroom (やや簡単)
タイル敷き詰めに必要な最小枚数を求めよ.
ただ,制約が色々あるのでよく問題文を読む問題.
制約がきつすぎて,単純に解ける.

Problem D: Queen (超簡単)
X,Y から Z,W までクイーンが移動するのに必要な手数は?
全く同じ座標なら0,縦横斜めの直線上に2点があるなら1,その他なら2.

Problem E: Bubbles and Buckets (普通)
1--NのPermutationが与えられて,ソートされていないペアの数は奇数か偶数か? (N <= 10^5)
実際に,マージソートなどを行いながら数えても良い.
マージソート書くの面倒だったので,ライブラリにあるsegment tree使ってさくっと数え上げた.

Problem F: Musical Loop (簡単)
円状に数字がならんでいる.ピークの数を求めよ.
ピークとは自分の両隣両方よりも大きい場所,もしくは小さい場所.
やるだけ.

Problem G: Set (やや難しい)
今回のコンテストの最終防御壁.
最初に,ある種類のカードが5枚以上あれば,それを3枚まとめて消す,という処理を最初にやっておいて,後は状態数 5^9 のDPで通った.
理論的な正当性はわかってない.

Problem H: Division of Nlogonia (とても簡単)
2次元座標で,まず中心が与えられて,その後に与えられる k 点が中心の
 右上,右下,左上,左下,x座標かy座標が同じ
のどれに該当するか出力する問題.
やるだけ.

Problem I: Longest Increasing Sequence (普通)
なんか,さくっと通している人が多かったので O( N^3 ), N <= 600 でとりあえず書いてみたらそれで通った….

Problem J: Vampires (やや簡単)
シミュレーション.
誤差が怖いけど,とりあえずやるだけ.

SRM418 DIV1 (この記事を編集する[管理者用])

2008年09月21日01時から.
Google Code Jam 2008準決勝の前哨戦その1みたいな感じ.

EASY (250pt)
Math or Brute-force.
最初解析的にやってたら何か間違えたので全探索をさくっと書いた….

MEDIUM (500pt)
グラフ理論.
難しい.未だにわからない.
パッと見,僕以外の日本人は結構皆解けてる…,凄いな.

HARD (900pt)
Greedy + Search.
基本的には敵兵を全部つぶしながら城を攻撃する.
最後の方で,このターンで城を壊せる,となったときに,城を壊してしまうのか,それとも敵をつぶして城にダメージを与えるのか,どちらが良いのかやってみないとわからないので,そこだけちゃんと探索しましょう.
(基本的に必要な性質は「このターンに城を壊してしまわないのであれば,敵兵を残しておくことに意味はない」.それだけ仮定して探索探索.)

(2008/09/21 03:32追記)
Mediumは http://d.hatena.ne.jp/tsubosaka/20080920 の解説が究極にわかりやすかった.

ヘッドフォン (この記事を編集する[管理者用])

ヘッドフォンの細くなっている部分が折れて壊れた….
てか,もう1箇所昔折れて,瞬間接着剤で止めて使ってたんだけど,今回はちょっと直しにくそう….
新しいの買うかなぁ….

新しいヘッドフォンは丁寧に扱おう…,そうしよう….

Google Code Jam 2008 Practice Contest (この記事を編集する[管理者用])

2008年09月14日午前2時10分から2時間,3問.

UVaのコンテストと時間帯が重なっていたから出れないなー,と無視してたんだけど,実はUVaをさくっと片付けたら出れたんだね….
忘れてて結局参加できず.
ACRush先生とかは2時間半でUVa全部解いて,これにも出てるね.

多分,準決勝用の練習コンテストだと思うんだけど,それにしては問題が簡単な気がした.

A. Old Magician (簡単)
こういうタイプの問題は実は凄い好き.
箱の中に黒いボールがB個と白いボールがW個入っている.
2個取り出して,同じ色だったら白いボールを追加する.違う色だったら黒いボールを追加する.
最後に残るボールの色は何色でしょうか?
 黒・白・わからない
のどれかを出力してください.

取り出して加えた後の黒と白のボールの数は
 B-2個とW+1個 (黒2個取り出した場合)
 B個とW-1個 (その他の場合)
となる.なので,黒のボールの数の偶奇は変化しない.
だから初期値のBが奇数ならは最後に残るボールは黒.

B. Square Fields (やや難しい)
与えられた n 点を全て覆うように k 個の正方形を配置するためには正方形のサイズは最低いくつないといけないか?を答える問題.n <= 15.
2分探索 + DP.
DPは状態数が 2^n (既に覆った点) で,使った正方形の数をメモしておく.

C. Cycles (結構難しい)
ノード数 n の完全グラフで,与えられた k 本の枝を通らないハミルトン閉路の数を mod 9901 で答えよ.
n <= 300, k <= 15.
基本的には包除原理.計算時間量はたぶん O( n^2 * k * 2^k ) ぐらいになるのかな.

(2008/09/14 05:05追記)
電卓叩くとO( n^2 * k * 2^k )では8分で終わりそうにないことに気づく.
最初に計算してテーブル持っておけばO( k * n^2 + k^2 * 2^k )になると思うのでそれで大丈夫なのかな….

ACM ICPC::Regional Warmup 1 (Easy version) (この記事を編集する[管理者用])

2008年09月13日22時から5時間,10問.
http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=11&page=show_contest&contest=205

実際に記事を書いているのは14日の午前1時20分ぐらいだけど,まだコンテスト中なので初めて予約投稿などというシステムを使ってみる.
Easy Versionということもあって3時間ちょっとぐらいで10問完答できたので.
まぁ,それでも簡単すぎるわけでもなく,弱小の私には丁度いい難易度かもしれない.

A. Arrange the Numbers (やや簡単)
固定する数を選ぶ組み合わせの数を二項係数で求めて,後はDP.

B. Building a Triangular Museum (簡単)
やるだけ.実装問題.

C. Code Creator (とても簡単)
やるだけ.実装問題.
問題文とかサンプルインプットに含まれてる“とか”は半角の"のことなので注意….

D. Document Object Model (やや簡単)
これもやるだけ.実装問題.
HTMLっぽい形式からTreeを作ってごにょごにょすれば終わり.

E. Extreme Discrete Summation (やや簡単)
答えに整数部分は影響しなくて,小数点以下の数字が10種類しかないので,そのヒストグラムをまず作る.
後は,DPして,小数部の和が○○になるものの数を計算すればお終い.
オーバーフロー怖かったけど恐る恐るlong longで計算したけど,それでAcceptもらえた.

F. Finding Paths in Grid (少しだけ難しい)
遷移行列作って n - 1乗するというおなじみの問題.
遷移行列のサイズは35*35.(まあ34*34に落とせるけど…)
制限時間6秒と言うのが意外と苦しいようなそうでないような.
行列の掛け算の中でmod取るのを
 a %= m;
から
 if(a>=m) a%=m;
に変えたら実行時間が半分以下になって余裕で制限時間間に合った.(実行時間3秒程度)
確か,前もこれが原因でTLE食らってたのでいい加減学習します….

G. Gathering Food (やや簡単)
BFS.
ただし,そこに行くまでの最短ルートの数もメモリながらやる.

H. Hyper Prefix Sets (やや難しい)
制限時間2秒でC++でstringに落としてソートするだけで1.4秒かかっているのをみて,そんなことしちゃ駄目だと気づく.
名前忘れたのだけども,Treeを作ってごにょごにょすればソートなんてしなくていい.
Treeの各ノードは,Prefixに対応してて,その子供は1文字長いPrefixになっているような感じ.
アルファベットが{0,1}なので今回は2分木.ただし必要なノードのみ作ります.
実行時間0.4秒以下.

I. Integer Game (簡単)
まず,先手が打つ手がなければ後手必勝.
後は3の倍数の数字しか取れないので,3の倍数の数字が何個あるか調べればわかる.

J. Just Another Problem (やや簡単)
missingの正方形のサイズを b,ソルジャーの厚さを s とすると,ソルジャーの数は
 s ( 6s + 7b )
なので, s = 1 から 6 * s^2 < 入力 の範囲でループ回して, b が正整数になるものを探して終わり.

UVa 11419 - SAM I AM (この記事を編集する[管理者用])

http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=26&page=show_problem&problem=2414

2008年03月15日に行われたWorld Finals Warmup Iの問題の1つ.
2部グラフの最小点被覆を求める問題.
http://rsujskf.blog32.fc2.com/blog-entry-87.html
の確認に最適な問題.

2部グラフの最大流問題と最大マッチング問題と最小点被覆問題 (この記事を編集する[管理者用])

最大流と最大マッチングが同値なのはほぼ自明で,最小カットと同値なのまでは説明しているWebページも沢山あるけども,最小点被覆との関係(König-Egervary theorem)をちゃんと書いてる(日本語の)Webページが少なかったのでメモしておく.

Flowは左から右に流れる.左側の節点とか右側の節点とかいう言葉の意味はなんとか理解してもらう.
点被覆とは,節点集合で,グラフからその節点集合を除くと枝が全くなくなるものをいう.
最小点被覆は,点被覆の中で,節点の数が最も少ないもの.

2部グラフの最小点被覆の節点数は,2部グラフの最大マッチングに一致する.
2部グラフの最大マッチングが与えられたとき,どのようにして,最小点被覆を得るかと言うと,
 左側の節点のうち,最大マッチングの枝に繋がっていないもの
を全部取ってきて,それから到達できる節点の集合を求める.
ただし,到達できるというのは,左側の節点から右側の節点に移動する際は,最大マッチングに含まれていない枝しか通ってはいけなくて,右側の節点から左側の節点に移動する際は,最大マッチングに含まれている枝しか通ってはいけない.
で,到達できる節点の集合が求まったら,最小点被覆は,左側の節点の中で到達できなかったものと右側の節点のうち到達できたものを合わせたものである.

そうやって作られた節点集合が点被覆になっていることはほぼ自明.
それの節点数が最大マッチングと一致することも最大マッチングであることを考えれば簡単に理解できる.
最大マッチングより少ない節点数の点被覆が存在しないこともほぼ自明.

到達できる節点集合とか言っているのだけど,それが最大マッチングの意味ではごちゃごちゃしててわかりにくいのだけども,最大流問題で考えれば簡単になる.
到達できる節点集合は,ソースからFlowを流すことができる向きにのみ移動して到達できる節点集合(からソースを除いたもの)に一致する.

SRM417 DIV1 (この記事を編集する[管理者用])

2008年09月12日00時10分から.(ウェブページが落ちてたため10分延期)
最近妙に調子悪いことが多かった気がしたのだけど,気のせいだったみたい.
ただし,HARDは解法見たら全然難しいことなくて(なさそうで),もっとよく考えれば解けたはず….
こういう「確り考える」ということができないのは僕の駄目なところ.

EASY
文字列処理.実装問題.
言われたとおりやるだけ.C++ならばsubstrとか使えるようになっておくと楽.

MEDIUM
与えられた図形が立方体の展開図になっているかどうかを調べる問題.
難しい探索.

HARD
グラフ上の"2点間の最短距離"がもっとも大きくなるものを答えよ.(距離だけ答えればよい)
ただし,節点と節点の間の枝の途中から移動を始めて,枝の途中で終わることもできる.
(2点間と言っている点は節点でなくても良い)
節点数は50以下.また,節点間の距離はユークリッド距離で定義される.

2点のうちの1点を節点aとbの間,もう1点を節点cとdの間とし,a,b,c,dでループを回す.
計算時間量は O( 節点数^4 ).
もっと良い方法があるのかもしれない.ないのかもしれない.

(2008/09/12 02:20追記)
ちなみに,立方体の展開図は,鏡像や回転を除けば11種類しかないらしい.
http://www.pag1u.net/network/rippoutai11.html
続きに全て貼り付けておく.

続きを読む

PKU 1067 - 取石子游戏 (この記事を編集する[管理者用])

Problem: http://acm.pku.edu.cn/JudgeOnline/problem?id=1067
これも問題文が中国語なので問題概要だけ日本語で書いておく.

2人でゲームを行う.
2つの山に石が積んであり,順番に石を取っていく.
石の取り方は,1つの山から好きなだけ石を取るか,2つの山から同じ数だけ石を取る.
最後の石を取ったプレイヤーが勝ち.

入力はテストケースの列からなり,各テストケースは2つの非負整数からなり,それぞれ1,000,000,000以下である.
それは2つの山の石の数の初期値を表し,先手必勝なら1,後手必勝なら0を出力せよ.

続きを読む

SRM275 DIV1 (この記事を編集する[管理者用])

2005年11月30日 (EDT).
chokudaiさんの練習会問題セット. 2008年09月07日21時から.

Match Overview: http://www.topcoder.com/stat?c=round_overview&er=5&rd=8072
Editorial: http://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm275

EASY
書かれている通りに実装するだけ.

MEDIUM
DP.

HARD
最も短い重み正のサイクルを求める問題に帰着できる.
ベルマンフォードみたいな感じで重みが正のサイクルを探す.

SRM276 DIV1 (この記事を編集する[管理者用])

2005年12月08日 (EDT).
chokudaiさんの練習会問題セット. 2008年09月06日21時から.

Match Overview: http://www.topcoder.com/stat?c=round_overview&er=5&rd=8073
Editorial: http://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm276

EASY
超典型的DP.

MEDIUM
Ad-hoc.こういう問題は結構好き.
最大加速度と最小加速度が,ある時間区間でのこの速さを越えてはいけませんという制約が与えられたとき,出せる速度の最大値を求めてください.

HARD
DP.
今扱っているのが不良品だった場合とそうでない場合の調べなければいけない範囲+残りの製品の数でDPする.

SRM277 DIV1 (この記事を編集する[管理者用])

2005年12月17日 (EDT).
chokudaiさんの練習会問題セット. 2008年09月05日21時05分から.

Match Overview: http://www.topcoder.com/stat?c=round_overview&er=5&rd=8074
Editorial: http://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm277

EASY
Brute-force.

MEDIUM
Greedy.

HARD
実装問題.
座標を圧縮して塗り塗りしてグラフ作って幅優先探索.

SRM278 DIV1 (この記事を編集する[管理者用])

2005年12月19日 (EDT).
chokudaiさんの練習会問題セット. 2008年09月03日21時から.

Match Overview: http://www.topcoder.com/stat?c=round_overview&er=5&rd=8075
Editorial: http://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm278

EASY
与えられた点を頂点とする3角形で面積最大のものは何ですか?
S = det / 2.

MEDIUM
長方形がいくつか与えられる.
長方形の中に含まれてないで,上下左右に長方形が存在するような点は存在するか?
座標を圧縮して塗りつぶして調べる.

HARD
よくある2分探索+最大流の問題.

SRM416 DIV1 (この記事を編集する[管理者用])

2008年09月04日20時から.
取り敢えず,MEDIUM時間かけすぎ+Resubmitの僕は猛反省するべき.

EASY
自然数 n が入力で2進数で同じ数だけ1が登場する n より大きくて一番小さい数を求める問題.
PKUで同じ問題見た気がする.
これを求めるライブラリあるはずなんだけど,見つからなくて,探すより書いたほうが早かった.

MEDIUM
分割数をDPで求める問題.
2次元配列をまともに確保するとメモリが足りないので,メモリを節約しながらやりましょう.

HARD
だいぶ面倒なだけの実装問題.
問題文が長い.図が大きい&多くで問題文が読みにくい.

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。