SRM

SRM458 Div2Easy Desertification

SRM

解法1 D周りをFからDに更新するループをT回繰り返す。T回のループの中で編集用のvectorをもって、ループの最後にvector本体に代入する。解法2 全てのFから最も近いDまでの距離をBFSで求めて、Fの場所のセルに値を代入。最後にDまたはセルの値がT以下のFを…

SRM458 Div2Med (Div1Easy) BouncingBalls

SRM

解法1 先ず蟻本に掲載されている問題(Ants)と同じように、2つのボールの衝突は衝突していないですり抜けると同等であることに気づく。ボール二者のみについて着目すると、これらは「互いに離れていく」か「両方左に進む」か「両方右に進む」か「互いに近づ…

SRM500 Div2 SRMCards

SRM

問題 与えられたこのなる数字の書かれたカードの中から一枚ずつ選んで取り除くゲームをする。 取り除く際に、もし選んだカードの数字と前後の数字を持つカードが存在すれば、それぞれも抜き取らなければならない。カードを選べる回数を最大化せよ。解法 ソー…

SRM442 Underprimes

SRM

概要 1と自分自身を除く素因数の数が素数となる値が A 解法 #include <bits/stdc++.h> using namespace std; #define MAX (100001) bool is_prime[MAX+10]; class Underprimes { public: void Sieve() { for(int i=0; i<=MAX; i++) { is_prime[i] = true; } is_prime[0] = i</bits/stdc++.h>…

SRM620 Div2Easy CandidatesSelectionEasy

SRM

概要 メイドを雇いたいと考えている。vector score があるとき、scroe[i][j] は、技術 j に対して候補者 i の能力の評価を示す。評価は'A'評価を最も良いとして、最も悪い'Z'評価まである。 雇いたいメイドは技術 x が良い評価であればよい。このとき雇いた…

SRM435 Div1Easy(Div2Med) CellRemoval

問題概要 vector parent が与えられる。parent[i] とは i 番目のノードの親が parent[i] であることを示す。deletedCell で削除するノードが与えられたとき、残ったノードのうち葉のノードの数をカウントせよ。解法 子を参照する形の木を、与えられた vector…

SRM423 Div2Med MagicWords

問題概要 アルファベットの大文字で構成された vector が与えられる。この要素の順列から生成される文字列Sのうち、Sを1文字ずつシフトするように回転させたときちょうど K 回転となるものの数を答えよ。制約 vector の要素は 1 〜 8 各文字列は 20 文字まで…

SRM432 Div2Med LampsGrid

解法 ポイントは以下 はじめの状態で同じ配置の行は何度列をフリップしても同じ配置の行のまま 同じ列を2回フリップすると Kが2回分消費できる よって、各行について '0' の数をカウントし '0' の数が K "以下" で、'0' の数と K との偶奇が一致すればその行…

SRM514 Div2Easy MagicalGirlLevelOneDivTwo

大意 プレイヤーのいる座標(u, v) から、X, Y軸平行に絶対値距離d だけ離れてつくられる正方形の領域が、プレイヤーの勢力域であるとする。敵の座標(x, y)が与えられるので、敵を勢力域に入れるためにプレイヤーが初期位置 (0, 0) から移動すべきユークリッ…

SRM608 Div2Hard BigOEasy

問題概要 ある有向グラフが与えられる。このグラフをたどるとき、そのパスの数が多項式の距離で表されるかどうか判定せよ。一度通ったノードでもパスがあれば何度でも通ることが出来る。解法 i から到達できる j を全て探す。中継点kを決めるN^3の方式で、判…

SRM525 Div2Med DropCoins

問題概要 テーブルに有るコインを4方向にずらして枠外に振り落とせる。テーブル上に残るコインの数が、与えられた数Kに一致するための最小のテーブルの移動回数を求めよ。解法 制約が小さく、テーブルが 30*30 なので単なる6重ループで求まるはずだが、二次…