ykmakuのブログ

競技プログラミングをがんばるブログ

前から順に見る

ARC 088 D - Wide Flip

問題 beta.atcoder.jp 解法 前から順に見ていって...01...(または...10...)というように異なる文字に出会ったら"...0"か"1..."の長い方を反転すれば良い。反転したものの中で一番短いものが答えになる。 #include <iostream> #include <string> #include <algorithm> #include <cstdio> #include <vector> </vector></cstdio></algorithm></string></iostream>…

ARC 088 E - Papple Sort

問題 beta.atcoder.jp 解法 回文は各アルファベットに対して左半分と右半分でそのアルファベットが出てくる回数が同じである。 以下の場合は回文にすることはできない。 Sにおいて奇数回現れる文字が2種類以上 Sにおいて奇数回現れる文字が1種類かつ|S|が偶…

AtCoder Regular Contest 069 D - Menagerie

問題 D - Menagerie 解法 最初の2人の動物の種類が決まれば、3番目以降の動物の種類は順番に決まっていく、ということに気がつけば後は実装するだけ。 最初の2人の動物の種類の組合せは4通りなので、全部試してそれぞれ条件に矛盾しないかどうかを調べる。 …

CODE FESTIVAL 2016 qual C C - 二人のアルピニスト / Two Alpinists

問題 C - 二人のアルピニスト / Two Alpinists 解法 まずのとき答えはになる。そうでないときを考える。のときである事がわかる。このとき、でないと条件に矛盾する。同じようにのときであり、このときでないと条件に矛盾する。かつのとき山の高さはであれば…

AtCoder Grand Contest 003 B - Simplified mahjong

問題 B - Simplified mahjong 解法 先頭から順に見ていく。ペアを作れるだけ作って、カードが余るなら(1枚だけ余る)そのカードを次の値のカード1枚と組み合わせる。これを繰り返す。 #include <iostream> #include <string> #include <algorithm> #include <cstdio> #include <vector> #include <queue> #include <set></set></queue></vector></cstdio></algorithm></string></iostream>…

CODE FESTIVAL 2016 qual A C - 次のアルファベット / Next Letter

問題 C - 次のアルファベット / Next Letter 解法 文字列を先頭から見ていく。今見ている文字がをaに変更できる場合、操作を何回か行ってaにしたほうが文字列は辞書式順序で小さくなる。変更できない場合そのままにしておくのが良い。 最後まで見て操作回数…

ARC 059 D - アンバランス / Unbalanced

問題 D - アンバランス / Unbalanced 解法 sの部分文字列のうち同じ文字が2つ連続しているところはアンバランスな文字列である。 同じ文字が2つ連続しているところがない場合、過半数を占める文字をAとしたとき、AXAの形の3文字を見つければ良い。なぜなら、…

AGC 005 A - STring

問題 A - STring 解法 文字列の先頭からSとTの個数を数えていく。先頭からSを集めていってTに出会ったらSを1つ捨てるイメージ。1つもSを持ってない状態でTに出会ったらそのTは最後まで残る。 #include <iostream> #include <string> using namespace std; int main() { string </string></iostream>…