AOJ

AOJ 2829 Room Assignment

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2829 解法 JAG の wiki に分かりやすい解説があります。2017/Practice/模擬国内予選/講評 - ACM-ICPC Japanese Alumni Group場合分けとしては以下の 3 つです 長さ 3 以上の閉路が存在する場…

AOJ 3019 Picnic

問題 Picnic | Aizu Online Judge 解法 ワーシャルフロイド→巡回セールスマン→半分全列挙→個数制約付きナップサック コード import java.util import scala.io.StdIn import scala.util.Try object Main extends App { val INF: Long = 1e15.toLong val (n, …

会津合宿 2017 2 日目 G : Picnic

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=ACPC2017Day2&pid=G 解法 ワーシャルフロイドと巡回セールスマン問題の bit DP で、ある町の部分集合を回って戻ってくるのにかかるコストを前計算しておく。さらに、町の集合を の 2 つに…

会津合宿 2017 3 日目 E : Taiyaki-Master and Eater

問題 AIZU ONLINE JUDGE 解法 2次元のBITを貼る。 コード import java.util.Scanner import scala.collection.mutable.ArrayBuffer object Main extends App { val in = new Scanner(System.in) val H = in.nextInt() val W = in.nextInt() val T = in.nextI…

AOJ 2828: Matryoshka Doll

問題 Matryoshka Doll | Aizu Online Judge 解法 取り込まれた人形のコストを 0 として、取り込まれていない人形のコストはそのまま結果に加えるように、最小費用流のグラフを作る。 コード import java.util.Scanner import scala.collection.mutable impor…

AOJ 1163 Cards

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1163GCD + 二部マッチング import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.ArrayDeque; import java.util.ArrayList; import java.util…

RUPC 2016 Day2 L: String in String

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=RitsCamp16Day2&pid=L 解法 kenkoooo.hatenablog.com コード import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; impor…

AOJ 2644 Longest Match

問題 Longest Match | Aizu Online Judge 解法 SuffixArray を作ると、Sに含まれる a の SuffixArray 上での lower_bound と upper_bound を求めることができます。その中で最も前のものを求めたいですが、これはRMQで持っておけば良いです。b については上…

ACPC2016 Day2 J : Char Swap

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=ACPC2016Day2&pid=J 解法 J : 解説 from Takumi Yamashita www.slideshare.net元の文字列がアルファベット を 個含むとき、前半と後半に寄せて、 を 個ずつ含むようにします。(解説スライ…

ACPC2016 Day2 H : Hogemon Get

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=ACPC2016Day2&pid=H 解法 ボールを獲得するたびに、(ボールを獲得した時刻, ボールを獲得した場所, 直前にボールを獲得した場所, 直前にボールを獲得した場所が再度利用可能になるまでの時…

ACPC2016 Day2 G : Star

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=ACPC2016Day2&pid=G 解法 正 N 角形から小さい二等辺三角形を N 個除けば良い。 コード import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import j…

ACPC Day2 F : Curling Puzzle

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=ACPC2016Day2&pid=F 解法 1 列だけのときは @ の片側にある @ から一番近いストーンの位置と、 @ の反対側にあるストーンの数を持てば解けます。それ以外の場合は↓F問題です。 pic.twitter…

ACPC Day2 D : One-Time Path

問題 http://judge.u-aizu.ac.jp/onlinejudge/cdescription.jsp?cid=ACPC2016Day2&pid=D 解法 N-1 に着く時刻を最大化したいだけで、それ以外の頂点に着く時刻は早ければ早いほど良いことに気づく。あとは一度見た辺を二度と見たくないという気持ちを込めな…

RUPC 2016 Day2 E: Rubik Dungeon

問題 AIZU ONLINE JUDGE 解法 回転と回転の間には移動を挟まなそう、みたいな適当な気持ちで適当に書いたら通ってしまった。 コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream &operator<<(std::ostream &out, const st</typename></bits/stdc++.h>…

RUPC 2016 Day3 F: Kitsuchiri

問題 AIZU ONLINE JUDGE 解法 答えるべき情報は対応する配列の値が全て同じか否かだけなので、保存する情報は S[i] と S[N-1-i] の差だけで良い。この差が全てのiについて0になれば左右対称であると言える。このことから、右半分は左半分との差分だけ保存し…

RUPC 2016 Day2 L: String in String

問題 AIZU ONLINE JUDGE 解法 各クエリについて、 l, r, M が来るが、先に文字列の Suffix Array を作っていて、Mを含む upper_bound と lower_bound を求めると、「各クエリについて、文字列で[l, r]の範囲で SA で[lower_bound, upper_bound)の範囲に入っ…

RUPC 2016 Day3 D: Complex Oracle (O(N(logN)) 解法)

kenkoooo.hatenablog.com kenkoooo.hatenablog.comkawatea さんが使ってた強めのsetをコピペした。 コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream &operator<<(std::ostream &out, const std::vector<T> &v) { if (!v.e</t></typename></bits/stdc++.h>…

RUPC 2016 Day3 D: Complex Oracle (O(N(logN)^2) 解法)

これの高速化ver kenkoooo.hatenablog.com 解法 BIT で抜けた数を持っておき、「今残っている数の中でmid番目」を当てる二分探索をする。 コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream &operator<<(std::ostream &o</typename></bits/stdc++.h>…

RUPC 2016 Day3 D: Complex Oracle (O(N^2) 解法)

問題 AIZU ONLINE JUDGE 解法 vector::erase() が速いこと、 vector::erase() を落とすテストケースが用意されていないこと、AOJが速いこと、N*2 クエリ用の時間のうちNクエリ分を計算時間として使えること等の様々な要因から、O(N^2)解法が通る。 コード #i…

RUPC 2016 Day3 E: Arai's

問題 AIZU ONLINE JUDGE 解法 最小費用流やるだけ。フローを1ずつ流して良い。 コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream &operator<<(std::ostream &out, const std::vector<T> &v) { if (!v.empty()) { out << '[</t></typename></bits/stdc++.h>…

RUPC 2016 Day2 H: Reflection Warp Machine

問題 AIZU ONLINE JUDGE 解法 それぞれの線を引いた時に行き来できる星たちを列挙しておく。後はどのワープを使うかをDPしていけば良い。 コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream& operator<<(std::ostream& o</typename></bits/stdc++.h>…

RUPC 2016 Day1 D: Scanner

問題 AIZU ONLINE JUDGE 解法 愚直DP コード #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { cin.tie(0); ios::sync_with_stdio(false); ll N; cin >> N; vector<int> T(N); T.resize(N); for (int i = 0; i < N; ++i) cin >> T[i]; sort(T.</int></bits/stdc++.h>…

RUPC 2016 Day1 E: 28

問題 AIZU ONLINE JUDGE コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream& operator<<(std::ostream& out, const std::vector<T>& v) { if (!v.empty()) { out << '['; std::copy(v.begin(), v.end(), std::ostream_itera</t></typename></bits/stdc++.h>…

RUPC 2016 Day1 C: AddMul

問題 AIZU ONLINE JUDGE コード #include <bits/stdc++.h> using namespace std; typedef long long ll; template <typename T> std::ostream& operator<<(std::ostream& out, const std::vector<T>& v) { if (!v.empty()) { out << '['; std::copy(v.begin(), v.end(), std::ostream_itera</t></typename></bits/stdc++.h>…

AOJ DSL_2_B: Range Sum Query

問題 Range Sum Query | Aizu Online Judge 解法 Binary Indexed Tree (Fenwick Tree) ライブラリ確認用 コード #include <cstdio> #include <iostream> #include <sstream> #include <fstream> #include <iterator> #include <iomanip> #include <algorithm> #include <cmath> #include <string> #include <vector> #include <list> #incl…</list></vector></string></cmath></algorithm></iomanip></iterator></fstream></sstream></iostream></cstdio>

AOJ 1156: Twirling Robot

AOJ

問題 Twirling Robot | Aizu Online Judge 解法 位置・状態を頂点にしたグラフでダイクストラ。類題 kenkoooo.hatenablog.com コード #include <cstdio> #include <iostream> #include <sstream> #include <fstream> #include <iterator> #include <iomanip> #include <algorithm> #include <cmath> #include <string> #include <vector> #include <list> #…</list></vector></string></cmath></algorithm></iomanip></iterator></fstream></sstream></iostream></cstdio>

AOJ 2425: 全探索お姉さんの休日

問題 A Holiday of Miss Brute Force | Aizu Online Judge 解法 x, y, t mod 6によって方向は定まるので、これらの(x,y,t%6)を頂点とする有向グラフを作り、ダイクストラする。 コード import java.util.ArrayList; import java.util.Arrays; import java.ut…

AOJ 2426: 宝探し(2次元の累積和)

問題 Treasure Hunt | Aizu Online Judge 解法 フィールドは広いが宝物の数は高々5000なので、宝物に準拠した最大5001*5001のフィールドを作る。treasures[i][j]にかつにおける宝物の数を入れておくと、かつにおける宝物の数は、以下の式で表せるようになる…

AOJ 2320: Infinity Maze

問題 Infinity Maze | Aizu Online JudgeH*Wの迷路が与えられ、ロボットをL回移動させる。ロボットは壁や障害物にぶつかると右に90度回転する。この回転は移動回数にはカウントしない。L回移動させた後、ロボットはどこにいてどこを向いているか。 解法 だが…

AOJ 2301: Sleeping Time (二分木探索・幅優先探索)

問題 Sleeping Time | Aizu Online JudgeでTを目指してK回二分木探索するが、Pの確率で間違った方を選んでしまうとき、探索して見つけた値T'がを満たす確率を求めよ。 解法 二分木探索する(素直) コード import java.math.BigDecimal; import java.util.Ar…