LiveArchive

LiveArchive 4994 Overlapping Scenes

解法 入力の文字列を next_permutation() して、順に重ねあわせていく。2つの文字列に対して重ね合わせをして、末尾文字列から一致した部分を引いたものを返す関数 concat() を用意した。 #include <bits/stdc++.h> using namespace std; #define REP(i,a,b) for(int i=a;i</bits/stdc++.h>

LiveArchive4403 ASCII Diamondi

解説 描画する文字の位置に対応する文字を探してやれば、描画する長方形の範囲の計算量 40000 × テストケース 125 で解ける。 #include <bits/stdc++.h> using namespace std; #define SIZE_N (2*N-1) char change(int x, int y, int N) { int ax = N, ay = N; x %= SIZE_N;</bits/stdc++.h>…

LiveArchive6470 Chomp

問題概要 3×3のチョコがある。左下端のチョコは毒である。2人でプレイして交互に食べていく。選んだ位置を含めて右上は除去される。左下端を選ばざる得なくなった時点で負けである。初めの状態が与えられるので、最善の手を尽くすとき、はじめはどこを食…

LiveArchive6465 Islands in the Data Stream

解答 凸が見つかったタイミングで回数をカウントすると良い。 #include <bits/stdc++.h> using namespace std; int main() { int Tc; cin >> Tc; while(Tc--) { int Tcnt; cin >> Tcnt; vector<int> vec(15); for(int i=0; i<15; i++) cin >> vec[i]; int ans = 0; for(int i=0; i</int></bits/stdc++.h>…

LiveArchive 6468 Pisano Periods

問題 フィボナッチ数列の mod M をとる。数列で出来る周期の長さを求めよ。 フィボナッチ数列が 0 からはじまるものと考えた時、周期ははじめから見て次に 0, 1 が現れるときで区切れる。(部分列の最後が 1, 0 であるともみれる)反省 適当な数値や素数を用…