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

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

2023-10-01から1ヶ月間の記事一覧

AOJ Course GRL_6_B 最小費用流

最小費用流アルゴリズムを実装したときの verify に 問題へのリンク 問題概要 頂点数 、辺数 のフローコストネットワークが与えられる。 番目の辺は頂点 から頂点 へ張られていて、容量は 、単位流量あたりのコストは である。 頂点 を始点、頂点 を終点とし…

AOJ Course GRL_6_A 最大流

最大流アルゴリズムを実装したときの verify に 問題へのリンク 問題概要 頂点数 、辺数 のフローネットワークが与えられる。 番目の辺は頂点 から頂点 へ張られていて、容量は である。 頂点 を始点、頂点 を終点とした最大流値を求めよ。 制約 考えたこと …

AOJ 1282 Bug Hunt (ICPC アジア 2007 H) (450 点)

アドホックに構文解析した。カッコ列の問題とみなして、stack で処理した。 問題へのリンク 問題概要 次のような「配列を宣言したり配列に値を代入したりする処理を表すプログラム」が与えられる。 a[2147483647] a[0]=1 B[2] B[a[0]]=2 a[B[a[0]]]=3 a[2147…

AtCoder ABC 326 B - 326-like Numbers (灰色, 200 点)

整数 が 326-like 数かどうかを判定する処理が書ければ、この問題は解ける。 問題へのリンク 問題概要 整数 が 326-like 数であるとは、3 桁の正の整数であって、百の位と十の位の積が一の位に等しいことをいう。 与えられた整数 以上の、最小の 326-like 数…

AtCoder ABC 326 A - 2UP3DOWN (灰色, 100 点)

落ち着いて整理しよう! 問題へのリンク 問題概要 100 階のビルで 階から 階へと移動したい。 2 階分までの上り、または、3 階分までの下りであれば移動には階段を使い、そうでないときエレベーターを使う。 階段を使うかどうかを判定せよ。 コード 落ち着い…

AOJ 0109 スマート計算機 (PCK)

至ってシンプルな構文解析問題。ただちょっと仕様が不明瞭なところがある気もする。 問題へのリンク 問題概要 次のように、何個かの計算式を表す文字列 が与えられるので計算結果を出力せよ。 2 4-2*3= 4*(8+4+3)= 式は数値、演算記号、かっこからなり、= で…

AOJ 1346 Miscalculation (ICPC アジア 2014 B) (200 点)

アドホックにも実装できそうだけど、構文解析ライブラリで殴った! 問題へのリンク 問題概要 0 以上 9 以下の整数値に対して「+」「×」で連結して得られる長さ の文字列 が与えられる。たとえば以下のような文字列が与えられる。 1+2*3+4 また、Bob がこの式…

TTPC 2023 F - N^a (log N)^b

この問題のおかげで、構文解析力が上がった! 問題へのリンク 問題概要 次のように、 の関数を表す式 が与えられる。基本的には「+」「*」「^」「log」で構成されるものである。 N*log(N^2)*log(N)+N+log(N^1+N)^2*N より正確には、次の BNF によって定義さ…

AtCoder ABC 319 B - Measure (灰色, 200 点)

問題文で書かれた通りに実装するだけなのだが、問題文の内容を理解するのが大変で、戸惑った人も多いかもしれない。 問題へのリンク 問題概要 正の整数 が与えられるので、次のようにして定まる 文字の文字列 を出力せよ。 に対して、1 以上 9 以下の の約数…

AtCoder ABC 319 A - Legendary Players (灰色, 100 点)

これは難しくないけど、少し面倒。。 問題へのリンク 問題概要 次のようなプレイヤーのレーティング情報が与えられる。 tourist 3858 ksun48 3679 Benq 3658 Um_nik 3648 apiad 3638 Stonefeang 3630 ecnerwala 3613 mnbvmar 3555 newbiedmy 3516 semiexp 34…

AtCoder ABC 315 F - Shortcuts (青色, 500 点)

実は DP の添字の取りうる範囲が log オーダーであることを見抜く問題。より高度な問題でもしばしば見られる考え方。 問題へのリンク 問題概要 二次元平面上に点 がある。点 の座標は である。 今、点 1 にいて、原則として点 を順に通過して最終的に点 に到…

Yosupo Library Checker - Sum of Floor of Linear

floor sum の verify! 問題へのリンク 問題概要 正の整数 が与えられる。 の値を求めよ ( ケース与えられる)。 制約 解法 ACL practice C 問題の解法、および、ACL の実装を参考にして実装した。 atcoder.jp コード #include <bits/stdc++.h> using namespace std; // sum_</bits/stdc++.h>…

AtCoder ABC 325 G - offence (黄色, 575 点)

o......f...(.....)... のようなパターンで、(.....) の中身が消せるような場合を最初見落とした。 問題へのリンク 問題概要 長さ の文字列 に対して、次の操作を好きな回数だけ行える。操作後の文字列の長さとして考えられる最小値を求めよ。 が連続する部…

AtCoder ABC 325 F - Sensor Optimization Dilemma (青色, 500 点)

個の区間を、プチ区間たちを用いて、最小コストですべて被覆しようという問題。DP 状態の持ち方を工夫することで計算量を小さくしたい。 問題へのリンク 問題概要 個の区間があって、長さが である。これらすべてを 2 種類の区間で被覆したい。 長さが であ…

AtCoder ABC 325 E - Our clients, please wait a moment (緑色, 450 点)

少し頂点を増やす感じの Dijkstra 法。とても教育的な典型問題! 問題へのリンク 問題概要 頂点数 の完全グラフが与えられる。頂点 1 から頂点 へと到達したい。途中までは社用車を使い、途中からは電車を使うことができる。電車から社用車に乗り換えること…

AtCoder ABC 325 D - Printing Machine (水色, 450 点)

とてもややこしくてハマってしまった......。とても教育的な Greedy 問題。 問題へのリンク 問題概要 個の商品がベルトコンベアで運ばれてくる。 番目の商品は、時刻 から時刻 の間 (両端含む) に点字できる。 点字マシンは 1 秒あたり 1 個の商品にしか点字…

AtCoder ABC 325 C - Sensors (茶色, 300 点)

またまた登場!! グラフの連結成分の個数を求める問題! 問題へのリンク 問題概要 下図のような のグリッドが与えられる。このグリッドにおいて、上下左右と斜めに隣接している '#' は一つの塊とみなす。 このとき、グリッド内に何個の '#' の塊があるかを…

AtCoder ABC 325 B - World Meeting (灰色, 250 点)

会議設定時間を 0 時、1 時、2 時、...、23 時をそれぞれ全探索するのが一番分かりやすいと思う! 問題へのリンク 問題概要 キーエンス社員の 個の拠点に対して同時に会議を設定したい。拠点 には社員が 人いて、時差 (世界標準時で 0 時のときの時刻) は で…

AtCoder ABC 308 C - Standings (茶色, 300 点)

伝説の誤差問題!! 誤差について学べる、とても教育的な問題。 問題へのリンク 問題概要 人がコイントスをしました。各人には と番号がついています。 人目は、 回表が出て、 回裏が出ました。 人目のコイントスの成功率は と定義されます。 人 の番号を、…

AtCoder ABC 325 A - Takahashi san (灰色, 100 点)

久しぶりに本当に簡単だと言える A 問題! 問題へのリンク 問題概要 2 つの文字列 が与えられる (これは苗字と名前を表している)。 + " " + "san" を出力せよ。 コード 標準入力から文字列を受け取る技術があれば解ける問題。 を出力したあと、" san" を出力…

AtCode ABC 320 A - Leyland Number (灰色, 100 点)

for 文の練習 問題へのリンク 問題概要 正の整数 が与えられる。 の値を求めよ。 コード とは、 を 回かけた値である。よって、次のように for 文で求められる。 long long res = 1; for (int i = 0; i < B; ++i) { // A をかける操作を B 回行う res *= A; …

AtCoder ABC 324 A - Same (灰色, 100 点)

これも条件をうまく言い換えることが大切になる問題 問題へのリンク 問題概要 個の整数 が与えられる。 これらの値がすべて等しいかどうかを判定せよ。 コード すごく色んな解法がある!!!! 個人的に最も楽だと思うのは、 に対して、 ならば Yes そうでな…

AtCoder ABC 324 B - 3-smooth Numbers (灰色, 200 点)

数学的な問題。 問題へのリンク 問題概要 正の整数 が与えられる。0 以上の整数 であって、 となるものが存在するかどうかを判定せよ。 制約 考えたこと 問題を解くときに、条件をわかりやすく言い換えていくことはとても大事! 今回は次のように考えるとわ…

AtCoder ABC 324 C - Error Correction (茶色, 300 点)

C 問題としてはかなりハードな問題であった。 問題へのリンク 問題概要 個の文字列 のうち、文字列 との編集距離が 1 以下であるものの個数を求めよ。 なお、文字列 と文字列 の編集距離が 1 以下であるとは、以下のいずれかが成り立つことを指す。 である …

AtCoder ABC 324 D - Square Permutation (緑色, 425 点)

発想の転換が必要になる。与えられた数の順列を考えるのではなく、平方数の方を列挙していく。 問題へのリンク 問題概要 数字のみからなる長さ の文字列 が与えられる。 を並び替えて得られる文字列であって、平方数を表すものが何通りあるかを答えよ。 制約…

AtCoder ABC 324 E - Joint Two Strings (緑色, 500 点)

問題を典型パーツに分解して考察を積み上げていく系の、とても教育的な問題! 問題へのリンク 問題概要 個の文字列 と文字列 が与えられる。以下の条件を満たす の組の個数を求めよ。 と をこの順に連結してできる文字列から、いくつかの文字を選び、順序を…

AtCoder ARC 026 C - 蛍光灯 (試験管青色)

セグ木上で DP する問題として、人生で最初に解くべき問題と言えるかもしれない! 問題へのリンク 問題概要 個の区間がある。各区間 は、 で重みは である。 これらの区間からいくつか選ぶ方法のうち、 全体を被覆するものについて、最小重みを求めよ。 制約…

AtCoder ARC 026 D - 道を直すお仕事 (試験管黄色)

「平均値の最小化」に基づく二分探索 + 最小全域問題 問題へのリンク 問題概要 (意訳) 頂点数 、辺数 の重み付き単純無向グラフが与えられる。各辺 は、重みが であり、長さが である。 グラフの辺集合のうち、すべての頂点を連結にするものを考える。そのよ…

第 1 回 PAST M - おまかせ

「平均値の最適化」を二分探索に帰着させる系の典型問題! 問題へのリンク 問題概要 体のモンスターがいて、それぞれ質量は 、魔力は である。 また、 体のお助けモンスターがいて、それぞれ質量は 、魔力は である。 今、これら 体のモンスターからちょうど…

AtCoder ABC 034 D - 食塩水 (試験管水色)

とても典型的な「平均値の最大化」→「二分探索」の問題! 問題へのリンク 問題概要 個の食塩水がある。 番目の食塩水は、重さが グラムであり、濃度 パーセントである。 これらの食塩水から 個選んで混ぜてできる食塩水の濃度の最大値を求めよ。 制約 考えた…