けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

連想配列(setやmap)

AtCoder ABC 329 F - Colored Ball (1D, 水色, 500 点)

人生で初めて「マージテク」を学ぶなら、この問題!!! 問題へのリンク 問題概要 箱 がある。箱 には最初色 のボールが入っている。以下の 回のクエリに答えよ。 整数 が与えられる 箱 のボールをすべて箱 に移動させる その後、箱 に入っているボールの色…

AtCoder ABC 310 C - Reversible (4Q, 灰色, 300 点)

種類数に関する面白い問題! 問題へのリンク 問題概要 2 つの文字列 は、 である を左右反転してできる文字列 について、 である といういずれかの条件を満たすとき、似ているとみなす。 与えられた 個の文字列 について、似ている文字列は同一視することに…

AtCoder ABC 244 C - Yamanote Line Game (4Q, 灰色, 300 点)

バケットの練習を兼ねた、インタラクティブ問題! 問題へのリンク 問題概要(インタラクティブ) 最初に、正の整数 が与えられて、ゲームをする。あなたは高橋君で先手である。相手は青木君で後手である。 交互に、1 以上 以下の整数を言っていく。ただし、…

AtCoder ABC 296 C - Gap Existence (4Q, 灰色, 300 点)

「変数を固定する考え方」と「set の活用」を組み合わせる練習問題! 問題へのリンク 問題概要 整数 と、 個の整数 が与えられる。 を満たす [tex i, j] ( でもよい) が存在するかを判定せよ。 制約 考えたこと この問題のように、 という 2 つの変数を考え…

AtCoder ABC 164 C - gacha (5Q, 灰色, 300 点)

set の練習問題! 問題へのリンク 問題概要 個の文字列 が与えられる。 重複を除くと何種類の文字列があるでしょうか。 制約 文字列長さは 10 以下 考えたこと 重複を除外したいとなったら、集合型(C++ ならば set 型)が使える! 具体的には、set<string> 型の変数</string>…

AtCoder ABC 236 C - Route Map (5Q, 灰色, 300 点)

set の練習問題! 問題へのリンク 問題概要 個の文字列 と、 個の文字列 が与えられる。 について、 の中に と一致するものがあるかどうかを判定せよ。 制約 各文字列の長さは 10 以下 考えたこと set 型のよい練習問題。 を格納する集合(C++ であれば set<string> </string>…

AtCoder ABC 073 C - Write and Erase (4Q, 灰色, 300 点)

色々な解法があるが、set を使うのが楽。set のよい練習問題とも言える。 問題へのリンク 問題概要 最初何も書いていない黒板がある。次の 回の操作を行った。 回目の操作では、整数 を考える 黒板に が書かれていない場合は、新たに を黒板に書く 黒板に が…

AtCoder ABC 065 B - Trained? (4Q, 茶色, 200 点)

B 問題としては難しい! 今風にいうと、Functional Graph のシミュレーション! 問題へのリンク 問題概要 個のボタンがある。ボタン が光っているときにそのボタンを押すと、ボタン の明かりが消え、その後ボタン が光る( であることもある)。 最初、ボタ…

AtCoder ABC 385 D - Santa Claus 2 (1Q, 緑色, 425 点)

難しくはないけど、重たい! 順序付き set の練習問題。 問題へのリンク 問題概要 制約 考えたこと 順序付き set を上手く使う問題。この問題では、次の操作を実現したくなる。ここで、集合 は、初期状態では問題文で与えられる 個の家の座標を格納すること…

AtCoder ABC 385 B - Santa Claus 1 (5Q, 灰色, 200 点)

二次元グリッド上のシミュレーション問題! 問題へのリンク 問題概要 のグリッドが与えられる。各マスは '.':通路マス '#':壁マス '@':アイテムマス のいずれかである。最初、マス にいる。 今、グリッド上で文字列 に示す移動をする(U, D, L, R のいず…

競プロ典型 90 問 027 - Sign Up Requests(5Q, ★2)

集合型を学ぼう! 問題へのリンク 問題概要 個の文字列 がこの順に与えられる。 初出の文字列に対して、その添字を出力せよ。 制約 解説 0-indexed で考えます。つまり、文字列を とします(出力するときには 1 を足します)。 まずは計算量のことを考えずに…

第 4 回 PAST F - 構文解析 (4Q)

集計処理した上で、再度大きい順にソートする問題 問題へのリンク 問題概要 個の文字列 が与えられる。 この列に一回以上出現する単語を、その出現回数の多い順に並べたとき 番目の単語を出力せよ(一意に決まらない場合は "ambiguous" と出力せよ)。 制約 …

AtCoder ABC 166 E - This Message Will Self-Destruct in 5s (1Q, 緑色, 500 点)

上手に式変形しよう! 問題へのリンク 問題概要 正の整数からなるサイズ の数列 が与えられる。次の条件を満たす組 の個数を求めよ。 制約 考えたこと 条件が不思議だ。普通は よりも の方が大きいことが多いのに、 となる条件を問うとは。 さて、この手の数…

AtCoder ABC 342 D - Square Pair (1Q, 緑色, 400 点)

条件を上手に言い換えよう! 問題へのリンク 問題概要 個の整数 が与えられる。 が平方数 という条件を満たすような組 の個数を求めよ。 制約 考えたこと これは「条件の言い換え」を頑張る問題。「 が平方数」という条件を扱いやすいように言い換えよう。こ…

AtCoder ABC 233 D - Count Interval (2Q, 茶色, 400 点)

「区間の値の和」を見たら、累積和をとろう!! 問題へのリンク 問題概要 数列 と整数 が与えられる。 数列の連続する区間であって、その総和が に一致するものが何個あるかを求めよ。 制約 考えたこと 0-indexed で考える。 数列 の累積和を としよう。この…

AtCoder ABC 003 B - AtCoderトランプ (6Q, 試験管茶色)

for 文の練習問題 問題へのリンク 問題概要 長さの等しい 2 つの文字列 が与えられる。 に含まれる各文字 '@' について、'a', 't', 'c', 'o', 'd', 'e', 'r' のいずれかに置き変えることで、 が一致するようにできるかを判定せよ。 制約 [tex 1 \le |S| = |T…

AtCoder ABC 137 C - Green Bin (4Q, 茶色, 300 点)

すごく面白い問題! 問題へのリンク 問題概要 個の文字列 が与えられる。 これらの文字列から異なる 2 つの文字列を選ぶ方法であって、それらの文字列が互いにアナグラムとなっているものの個数を求めよ。 制約 考えたこと まずは、問題の条件をわかりやすく…

AtCoder ABC 082 C - Good Sequence (5Q, 茶色, 300 点)

連想配列の良い練習問題! 問題へのリンク 問題概要 正の整数からなる数列が良い数列であるとは、数列に含まれる任意の整数値 について、数列中に がちょうど 個含まれていることをいう。 与えられた数列 に対して、いくつかの要素を削除することで、よい数…

CODE FESTIVAL 2017 qual B B - Problem Set (4Q, 茶色, 200 点)

素朴な map の練習問題 問題へのリンク 問題概要 りんごさんは 個の問題案を持っており、 個目の問題案の難易度は である。 ここから、配点が であるような 問からなる問題セットを作ることは可能か? 制約 考えたこと 連想配列 (C++ ならば map) の練習問題…

AtCoder ABC 380 E - 1D Bucket Tool (1D, 水色, 450 点)

遅延評価セグメント木と、その max_right, min_left で殴った! 問題へのリンク 問題概要 マス が一列に並んでいて、それぞれ色 で塗られている。次の 回のクエリに答えよ。 クエリタイプ 1:マス と色 が指定されるので、マス から始めて「いまいるマスと同…

AtCoder ABC 243 C - Collision 2 (3Q, 茶色, 300 点)

座標ごとに情報を整理するのは頻出! 問題へのリンク 問題概要 x-y 座標平面上に 人がいる。それぞれ座標 の位置にいて、左右いずれかを向いている(各人が左右どちらを向いているかは文字列 で与えられる)。 各人が、その位置から、向いている方向に向かっ…

AtCoder ABC 251 C - Poem Online Judge (4Q, 灰色, 300 点)

意外と整理するのが大変だと思う。map を使って整理しようとするのも自然だが、もうちょっと簡単に解くことを考えよう。 問題へのリンク 問題概要 文字列を投稿すると得点が与えられるコンテストに、 個の文字列 がこの順に投稿され、それぞれ 点が与えられ…

AtCoder ABC 278 C - FF (4Q, 灰色, 300 点)

SNS を題材にした set の練習問題 問題へのリンク 問題概要 人から SNS について、次の 個のクエリに答えよ(初期状態では全員が誰もフォローしていない)。 クエリタイプ 1:人 が人 をフォローする(フォロー済みの場合は何もしない) クエリタイプ 2:人 …

AtCoder ABC 072 C - Together (4Q, 茶色, 300 点)

ちょっとした考察が必要になる問題。 問題へのリンク 問題概要 整数からなる数列 が与えられる。数列の各要素に対して「何もしない」「1 を足す」「1 を引く」をしていく。 操作後に、整数値 を選ぶ。 となる の個数の最大値を求めよ。 制約 考えたこと 問題…

AtCoder ABC 210 C - Colorful Candies (3Q, 灰色, 300 点)

区間を伸ばしたり縮めたりしながら、それに伴う「挿入」や「削除」に対処するデータ構造を考える系の問題! 問題へのリンク 問題概要 数列 について、連続する 個の要素の種類数の最大値を答えよ。 制約 考えたこと 数列の幅 の区間をすべて調べるには、次の…

AtCoder ABC 091 B - Two Colors Card Game (6Q, 灰色, 200 点)

この問題は、for 文でも解けるし、map でも解ける。ここでは map で解いてみよう。 問題へのリンク 問題概要 個の文字列 と、 個の文字列 が与えられる。 これに対して文字列を考えて、その文字列に対するスコアは ( に含まれている分の個数) - ( に含まれて…

AtCoder ARC 019 A - お買い物クライシス (6Q, 試験管灰色)

if 文を並べてもいいし、map を使ってもよさそう。 問題へのリンク 問題概要 文字列 が与えられる。 の各文字に対して、 O → 0 D → 0 I → 1 Z → 2 S → 5 B → 8 それ以外 → そのまま という変換をして得られる文字列を答えよ。 コード (1):if 文 if 文を使っ…

AtCoder ABC 235 C - The Kth Time Query (4Q, 灰色, 300 点)

連想配列の練習問題! 問題へのリンク 問題概要 長さ の整数列 が与えられる。この数列に対して、次の 個のクエリに答えよ。 【クエリ】 整数 が与えられるので、整数列を順に見ていったときの「 個目の値 の要素」の index を答えよ(存在しない場合は -1)…

AtCoder ABC 008 B - 投票 (5Q, 試験管茶色)

制約が小さいので for 文だけでも解けるし、map などを使うともっと楽になる。 問題へのリンク 問題概要 個の文字列 が与えられる。 登場回数の最も多い文字列を答えよ(タイがある場合はどれを答えても良い)。 制約 考えたこと 次の連想配列を用いて解いた…

AtCoder ABC 155 C - Poll (5Q, 灰色, 300 点)

連想配列が有効活用できる問題 問題へのリンク 問題概要 個の文字列 がある。 登場回数の最も多い文字列を、辞書順に出力せよ。 制約 考えたこと 各文字列がそれぞれ何個あるのかを求めたい。そこで、次のような配列を作りたい。 nums[str]:文字列 str の登…