読者です 読者をやめる 読者になる 読者になる

AOJ-ICPC

Rabbit Jumping (AOJ2384)

アホでしょ・・・ 頭0,ライブラリ0,実装1145141919くらいといってもうまいこと実装方針を立てられれば綺麗に書けるのかなあ・・・解法:コードを書きます これでほとんどバグ起こさなかったのすごいと思う 誰かいい実装を教えて下さい(まあ向きの2^k試すのは…

締まっていこう (AOJ1164)

たわみを無くすまで引っ張る・・・はせずに解きました. 解法はrngさんがこどふぉで記事に書いているとおりです. しかし実装の細かい部分が結構たいへんだった. まず,始点,終点をどう扱うか.ピンの点と同様に扱おうとすると,上をとおるか下をとおるかみたいな…

Presentation (AOJ2453)

問題: Presentation | Aizu Online Judge考えれば解ける系の綺麗な問題. でも1100はない気がするなあ(900くらい?) 一度ある木をコピーすると,その木を組み合わせたようなものしか出来ない.その木Xを使ってできるかの判定は根から順にdfsをすればできる(実際…

Company Organization (AOJ1332)

問題: 1~Nの番号がついた集合がある.集合間の制約が順にM個来るので,どこで最初に矛盾するか答えてください. 制約は5種類で, 1:A⊆B 2:A=B 3:A≠B 4:A∩B=∅ 5:A∩B≠∅ タイプとAとBの番号が制約として与えられる. N≤100,M≤10000 頭1,実装1,ライブラリ1 簡…

Social Monsters (AOJ2605)

典型円環系. 頭0,実装3くらい dfsで円環を順に見ていけばいい.線分もあるので,線分のnot端からまちがえて始めちゃわないように注意. なんだかんだ言ってこういうのに30分かけるのはもったいないよなあ でもかかるんじゃ. #include <bits/stdc++.h> #define rep(i,n) for(int</bits/stdc++.h>…

Mobile Network (AOJ2328)

続く550点地帯この問題は問題文を読んでもエスパーしないと解けないので,問題を説明すると,capが一変数(x)多項式の最大流(正確に言うと,多項式P(x)であって,xが十分大きい時にそれを代入したグラフでの(実数)フローとP(x)にxを代入した値が一致するもの)を求…

Water Tank (AOJ2180)

でんじろう先生じゃない方のWater Tank.こっちは打って変わってクソ簡単.なんで550なの・・・ にぶたんするだけ.しいて言うなら一周では足りないことに注意(二周して減ってるかどうかチェック) まあサンプルで分かるよね #include <bits/stdc++.h> #define rep(i,n) for(int</bits/stdc++.h>…

まるかいて (AOJ2429)

どうみてもフロー コストを行にわけて考えるとよい(各行でひとつしか選ばれないので) #include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(int)(n);i++) #define rep1(i,n) for(int i=1;i<=(int)(n);i++) #define all(c) c.begin(),c.end() #define pb push_back #de</bits/stdc++.h>…

MinimumCostPath (AOJ2445)

なんとなくそうっぽいなあ というのはすぐわかるんだけど, ちゃんとそれでいいかどうかというのがなかなか難しかった.基本的に,あんまりでかいと,x+y=200と(N-x)+(N-y)=200とかで線を引いた時に(線a,bとする),a上の点からb上の点に行く時に遠回りをするやつ…

Tatami (AOJ2163)

枝刈り探索をします.(ちゃんと考察すると1次元DPにできる と解説には書いてあるが,結構難しい気がする) おけない条件を点で考えるんじゃなくてななめで隣り合うところの置き方の問題として捉えるのが楽. 次にどこに置くべきか(候補が一番少ないところにする)…

Name the Crossing (AOJ1134)

ほんとに面白く無いんで読まないでいいです カレンダーを埋める用の記事. 本質はクエリ部分の入力としてそもそも存在しない通りの名前が来ることです. あとはやるだけ(よく見ると通りは200個しかないと書いてあるのでsccすらいらない)これカレンダーとしての…

Earth Observation with a Mobile Robot Team (AOJ1139)

バグらせた.死にたい. まず最短で交わるタイミングだけ求めればいいとかいう嘘を書いてしまったのが問題なんだよなあ(すぐ修正できたけど) あと二次方程式間違えてたのは♨. 微妙に7日に間に合わなかった・・・ あと幾何ではない問題として,人aとbが会えるタ…

Water Tank (AOJ1133)

えっと、でんじろう先生の方のWater Tankです. これクソむずいと思う・・・ 実装方針を評価して個人的には700点くらい(もちろん実装強い人は何やっても解けるんだけど,うまい方針がある)とりあえず計算量はどうでもいいのでtごとに毎回計算します. h[i]:左か…

Gravity Point (AOJ2626)

わりとすぐ解法がわかり,実装方針も適切なものを選び,実装もすぐ終わったのにccwを写し間違えてたからデバグに40分かかりました.変えたらそっから変更無しでACしたので実質バグ埋めてないしすごくない?(すごくない,写経ぐらいちゃんとしろ)とりあえずA,B,Xを…

Spotlight Movement (AOJ2625)

こういうライブラリいらないなんちゃって幾何大好きだからもっと出してくれ(例:流れ星に願いを(AOJ2586)) 線分上を等直線運動する二点の最小距離 は二次式の最小化だと思える.やることがほんと少なくてすき. でもこんなの解いても全然強くなる気しねえな・・…

Area of Polygons (AOJ1242)

スライスするだけ・・・と思っていたら結構ミスった スライスするとき,+-epsして点と絶対に被らないようにすれば交点のx座標を列挙した時個数は偶数になる([0,1],[2,3]..みたいになる)し,x+epsとx+1-epsの交点は順に対応することがわかる. #include <bits/stdc++.h> #define</bits/stdc++.h>…

MirrorLabyrinth (AOJ2514)

まあやるだけ・・・ (凸とは限らない)多角形2つのcapでできる多角形?上での最短路 を求めようとするときに,実は元の多角形の頂点しかいらない というのはそんなに自明ではない気がする(いや言われたらわかるんだけど,言われずに思いつくもんだろうか) あとは…

Don't Burst the Balloon (AOJ1342)

円とかで削って残る点があるか→交点すべてをゆるい条件で調べる containCCは細かいことを考えると結構面倒 #include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(int)(n);i++) #define rep1(i,n) for(int i=1;i<=(int)(n);i++) #define all(c) c.begin(),c.end() #def</bits/stdc++.h>…

Time Table (AOJ2603)

今気づいたんだけど,問題名Time Tableなんだね,ずっとTiMe Tableだと思ってた(AOJ-ICPCの表記がそうなってる). 追記:asiさんのコメントの通り,TiMe Tableが正しいようです,AOJ側が間違ってるようだ. さらに追記:square1001さんのコメントの通り,AOJの表記もT…

Ancient Commemorative Monolith (AOJ2540)

やるだけでしょ 流石に900点もなくない?(少なくともASCII Expressionよりは絶対に楽だと思う) 英語4,頭0,ライブラリ0正直細かい制約から,こういうめんどくさいケースはないんだなあ みたいなことを考える時間が面倒なだけ.しかも細かい制約は文章中とかにう…

Mysterious Maze (AOJ2325)

ちょっと嵌ってしまった迷路があり,はじめ北を向いている.曲がれボタンとすすめボタンがあって好きな順で押せるが,曲がれボタンをi番目におした時右か左に曲がるかは決まっている.曲がれボタンを押し切った時にゴールにたどり着けるか? 迷路1000*1000 曲がれ…

Rotate and Rewrite (AOJ1191)

クッッッッッッソ良問だと思う 問題:文字列に対し,rotate(abcd->dabc)とrewrite(与えられたルール(文字列と文字のペア)に対し,今の文字列のsubstringとしてその文字列が現れたらそれをその文字に置き換える)が好きな順で何回も行える.文字列が二つ(A,B)与え…

Pathological Paths (AOJ1251)

死んで(直球) 英語10 エスパー力100 頭0 ライブラリ0 実装1 マジでふざけんなよ・・・ 問題文を正しく解釈してください、という問題なので,問題文をちゃんとしたものに変換したものは答えそのものなので書かないことにします. ホンマ死ね(ド直球) ところでAO…

エレベーターホール・ナンバー (AOJ2587)

問題:N(頭2,実装4,ライブラリ4みたいな解法と頭4実装2ライブラリ0みたいな解法がある.前者の解法は,出来る数字を受理するNFAをつくる→power constructionでDFAにする→topological順序でDPする というだけNFA,DFA,minimizeDFA,NFAtoDFAあたりは持ってなかった…

Sun and Moon (AOJ2455)

問題文が読めない人のために問題文を書くと, N( Σ(グループAに属している人)o[i]*p[i]*x^(o[i]-1) = Σ(グループBに属している人) 左同 かつ Σ(グループAに属している人)p[i]*x^o[i] = Σ(グループBに属している人) 左同 をみたすような最小の正整数xを返して…

敵の敵は味方 (AOJ2403)

極大独立集合列挙.(N 敵の敵は味方 の公式解説スライドは普通に嘘が書いてある("実は極大独立集合を列挙していることに相当"が普通に大嘘 例えば0-1-2 で2のみselectedみたいなのが出てくる)のでこのスライドは無視推奨.次数が小さい順に見ていく(点を選んで…

Cruel Bingo (AOJ2231)

問題:N*Nのビンゴ(ななめあり(対角線2つ))の盤面のうち,N*(N-1)個開いてるのにビンゴができてないCruelな盤面は何個あるか,ただし開いてることが確定してるマスがK個与えられる.N

Minimum Spanning Tree (AOJ2559)

典型良問.こういう分割しそうなやつはとりあえずまず一直線の区間で考えるのが吉.そのあとマージの方法を考えればいい(といってもだいたいいわゆるマージテクが効くと思うけど) dfsがstack overflowして悲しかった(事前にbfsして順番決めるだけで回避できる…

影の魔女 (AOJ2315)

nがk個・・・なんか正規分布に近づくとか・・・みたいにに騙されてはいけない(確信). 冷静に式に落とすと簡単. でかいところではN-ボナッチみたいな遷移式(行列)になる(ので直近N個を縦ベクトルで見る) 小さいところははねかえるので線形代数です. #include <bits/stdc++.h></bits/stdc++.h>…

Sports Days 2.0 (AOJ2432)

典型良問. 累乗系の本質は結合法則.ただの乗算だけでなく,a->bへi回移動での(max,min)長さ とかは典型. #include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(int)(n);i++) #define rep1(i,n) for(int i=1;i<=(int)(n);i++) #define all(c) c.begin(),c.end() #define</bits/stdc++.h>…

Speedrun (AOJ2591)

公式解説見ればOK こういう系結構出るから気をつけないとね セーブしうる所を全部持って(実装上Nも入れとくと楽)lower_boundで毎回探して30個くらい回せばOK.実装苦手なのでこういうのですら詰まるんだよなあ・・・ #include <bits/stdc++.h> #define rep(i,n) for(int i=0;i</bits/stdc++.h>…

Trip to Kyoto (AOJ 2618)

適当に書いてダメだったら考えようと思って書いた奴が通ってしまった(まあ大丈夫そうではあったけど) 公式解説がないのでだれか教えて 解法:とりあえず道を無視すると45度回転して中心(座標幅の真ん中)がうれしい.道があってもだいたいそこら辺だろ(ヘラヘラ…

Hashigo Sama (AOJ2542)

読解3,発想1,ライブラリ0,実装3,やる気4 そんなに難読ではないんだけど,1200+の特性上まず読もうとしてめんどくなってCruel Bingoとかに逃げる とかのパターンから逃げるのが難しい ちゃんと読むと解法は一瞬で生える(多分この部分だけだと300点位じゃないか…

Sweet War (AOJ1353)

A-Bにしかよらないのはまあわかる.A-Bは広い範囲の値を取るので,美味しみの方でメモりたくなる.dp[i][j]="i個目以降で(先手が)おいしみjを得るのに必要なエネルギー格差"を持って更新すればいいです.初め逆シミュレーションみたいなのをして頑張って更新をO(…

How to Create a Good Game (AOJ2230)

これは1100だと思う 知識5+,頭3,実装力1,ライブラリ力1問題: 正の重み付きDAGで,さらに,任意のiに対し0->i->N-1となるpathがあるものが与えられる.0からN-1への最長距離を変えないように辺の重みを0位上の整数増やす.どれだけ増やせるか.N

Common Palindromes (AOJ2292)

知識4 頭0 実装1 気合1 英語0 700点くらい問題 文字列s,t(長さ50000まで)が与えられる.s[i..j]=t[k...l]かつこれが回文 となるi,j,k,lの組は何通りか.

Kth Sentence (AOJ2341)

500点問題: lowercaseからなる文字列(長さ200まで)がN(複数回使っても良いし,一回も使わなくても良い)できる長さM(

落書きの魔女 (AOJ2314)

苦行だった・・・問題: H*Wのマス目がある.それぞれを#か.で塗る いくつかは既にどれで塗るか決まっている.残りのマスの塗り方のうちもっとも#が多いもののマス目全体の#の数を答えよ.正しいかの条件を満たして塗る必要がある".は連結(4-neighborsで)しない"…

Dungeon Creation (AOJ2393)

H*Wのグリッドで各マスは白か黒で塗られている.H*(W-1)+(H-1)*W個の壁それぞれを立てるか立てないか決めて,全体が連結でサイクルが無いようにする方法は何通りか.迷路→全域木→行列木定理 O(N^3) (N=H*W=7500) だし無理 W=15だしbitDP?→上から埋めてくと実は…

Do use segment tree (AOJ2450)

問題を見た瞬間にやるべきことがわかるのでやるだけ・・・ やるだけ・・・(◞‸◟)(◞‸◟)(◞‸◟)(◞‸◟)まず列で考えると,sum,l,r,mx(それぞれ、区間の総和,左と連結してる時の最大,右と〃,sub区間のmax)を持つsegtreeが必要とわかる(これの強いバージョンを…

Air Pollution (AOJ2617)

何がむずいねん(バグりました。) 累積和を取るとただの隣同士のswapに帰着できて,冷静に考えるとl[i]>0だから累積和たちをマージソートする必要がある.しておわり.なんで1000点なんだ、500点位だと思う. #include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(int)(n);</bits/stdc++.h>…

CarrotBreeding (AOJ2375)

場合分けをするだけ. とりあえずK点あれば基本K(K-1)/2本できる.a>=3点がcolinearならそっからa(a-1)/2-1本減る.(a=3から順に,2,5,9,14,20...) 大体K(K-1)/2がNを超えるようなKをとればできて(ただし余分が1か3だと無理),その時余分はだいたいKくらいなので,…

Patisserie ACM (AOJ1185)

通した.↓ネタバレ

Digit (AOJ2392)

解きました 以下ネタバレ

AOJ 2244 Dungeon Quest II

n( 回復薬がP(dp[i][j]="i回攻撃受けた時点での回復薬使用状況(bit)がjの時の体力のmax"を持てば良さそう.それぞれの状態からどの回復薬のsubsetを使うか、を考えるとO(n*P*3^P)となり死亡. よく考えると、回復薬aとbを使いたいときはaを使った状態を(その回…

AOJ-ICPC難易度表 600まとめ

上から,反省もこめて Merry Christmas(2251)☆ transitiveDAGの二部マッチングのアレReverse Sort(2443) 半分探索,知らなかったので勉強になった ちなみに始め単にdfsという解法に固執しまくっていて2443という数字を覚えてしまい、後日(Code Formula?)snuke…

負辺を含む最小費用流について(Attack the Moles)

蟻本での最小費用流の扱い方としては, 1.毎回Bellman-Fordで残余グラフ上を見る 2.ポテンシャルhを考えるとdijkstraで出来る 3.(column)負辺ののぞき方紹介(使う本数が必ず等しい場合,負辺を流しきったと考えた時の変形,あとはBellman-Fordを使おうとも書い…