赤い星と強い星

ディズニーとかその他の趣味とか

おもしろかったAtCoderの問題たち

こんにちは

 RedSpicaです.今まで解いてきたAtCoderの問題のうち「おもしろいな」と思ったものを紹介します.知らない間に追加されたり消されたりします.

 点数とかDifficultyとか出題日時は解く前に見て欲しくないので載せていません.問題概要を見て解けそうだったらチャレンジしてもらって,無理そうだったら諦めてください.難易度順に並んでいるとは限りません.

問題一覧

一問目

LEQ

Coprime Present

GCD on Blackboard

2017-like Number

joisino's travel

Anything Goes to Zero

Product of Arithmetic Progression

Balanced Neighbors

01 Matrix

GCD Sequence

MAD TEAM

Equal Weight

Built?

Keep Graph Connected

Packing Potatoes

一問目

問題リンク

問題概要

文字列 Sの頭文字を出力してください.

制約

 1 \leq |S| \leq 100

 Sは半角英数字からなる文字列

LEQ

問題リンク

問題概要

長さNの整数列A=(A_1,A_2,...,A_N)が与えられます.Aの連続するとは限らない,長さが2以上である部分列 A'=(A'_1,A'_2,...A'_k)のうち以下の条件を満たすものの個数を求め,998244353で割ったあまりを求めてください.

条件: A'_1 \leq A'_k

制約

 2 \leq N \leq 3 \times 10 ^ 5

 1 \leq A_i \leq 10 ^ 9

Coprime Present

問題リンク

問題概要

 A以上 B以下の整数が書かれたカードをそれぞれ 1枚ずつ,計 B - A +1枚持っています.以下の条件を満たすようなカードの選び方(選ぶ枚数は 0枚でもよい)は何通りありますか.

条件:選ばれたカードのどの相異なる 2枚に書かれた数も互いに素である.

制約

 1 \leq A \leq B \leq 10 ^ {18}

 B - A \leq 72

GCD on Blackboard

問題リンク

問題概要

 N個の整数 A_1,A_2,...A_Nのうち 1つ選んで好きな正整数に書き換えます.書き換えた後の N個の整数の最大公約数の最大値を求めてください.

制約

 2 \leq N \leq 10 ^ 5

 1 \leq A_i \leq 10 ^ 9

2017-like Number

問題リンク

問題概要

以下の条件を満たす奇数を2017に似た数とします.

条件: N (N+1) \div 2素数である

ここで以下の問に Q回答えてください.問 iの形式は以下の通りです.

 i l_i,r_iが与えられるので, l_i以上 r_i以下の2017に似た数の個数を求めてください

制約

 1 \leq Q \leq 10 ^ 5

 1 \leq l_i \leq r_i \leq 10 ^ 5

joisino's travel

問題リンク

問題概要

 N頂点 M辺の無向グラフが与えられます.辺 iは頂点 A_iと頂点 B_iを結んでいて,その距離は C_iです.あなたは頂点 r_1,r_2,...r_Rを訪れることになりました.訪れる頂点の順番を適切に選んだときその移動距離の最小値はどうなるでしょうか.

制約

 2 \leq N \leq 200

 1 \leq M \leq N \times (N-1) /2

 1 \leq C_i \leq 10 ^ 5

Easy

 2 \leq R \leq \mathbf{min}(8,N)

Hard

 2 \leq R \leq \mathbf{min}(13,N)

・与えられるグラフは多重辺や自己ループを持たず,どの頂点間も辺を経由して移動することができる

Anything Goes to Zero

問題リンク

問題概要

 \mathbf{popcount}(n) n 2進数表記したときの1の個数とします.たとえば \mathbf{popcount}(3)=2 \mathbf{popcount}(0)=0です.

 f(n)を「 n \mathbf{popcount}(n)で割ったあまりに置き換える」という操作を繰り返した際に n 0になるまでの操作回数とします.

以下は n=7の例で, 2回の操作で n 0になります.

 \mathbf{popcount}(7)=3なので 7 3で割ったあまりである 1に置き換える.

 \mathbf{popcount}(1)=1なので 1 1で割ったあまりである 0に置き換える.

 2進数表記で N桁の整数 Xが与えられます. 1 \leq i \leq Nを満たす整数 iについて, Xの上から i桁目のビットを反転した整数を X_iとします. f(X_1),f(X_2),...,f(X_N)をそれぞれ求めてください.

制約

 1 \leq N \leq 2 \times 10 ^ 5

 X 2進数表記で N桁の(先頭が 1とは限らない)整数

Product of Arithmetic Progression

問題リンク

問題概要

以下の問に Q回答えてください.問 iの形式は以下の通りです.

 i:初項 x_i,公差 d_i,項数 n_iの等差数列の総積,つまり

 \displaystyle \prod_{k=1}^{n_i}  (x_i+d_i (k-1))

 10 ^ 6 +3で割ったあまりを求めてください.

制約

 1 \leq Q \leq 10 ^5

 0 \leq x_i ,d_i \leq 10^ 6 + 2

 1 \leq n_i \leq 10 ^ 9

Balanced Neighbors

問題リンク

問題概要

頂点に 1から Nの番号がついた N頂点の単純かつ連結である無向グラフであって,以下の条件を満たすものを 1つ構成してください.

条件:ある整数 Sが存在して,任意の頂点についてその頂点に隣接する頂点の番号の値の和は Sとなる

条件を満たすグラフが必ず存在することが証明できます.

制約

 3 \leq N \leq 100

01 Matrix

問題リンク

問題概要

 H W列からなるマス目を 0 1で埋めることを考えます.以下の条件を満たす埋め方を 1つ示してください.不可能な場合はそれを報告してください.

条件

・どの行についてもその行に含まれる 0の個数と 1の個数のうち小さいほうが Aである.

・どの行についてもその列に含まれる 0の個数と 1の個数のうち小さいほうが Bである.

制約

 1 \leq H,W \leq 1000

 0 \leq A,B

 2 \times A \leq W

 2 \times B \leq H

GCD Sequence

問題リンク

問題概要

正整数の集合 S = \left\{ a_1, a_2, ... a_N \right\}が以下の条件を満たす場合特別な集合であると言われます.

条件:どの 1 \leq i \leq Nについても a_i Sのその他の要素の和の最大公約数は 1ではない.

素数 N特別な集合であって, \mathbf{gcd}(a_1, a_2, ... a_N) =1であり, \mathbf{max}(a_1, a_2, ... a_N) \leq 30000であるものを 1つ求めてください.この問題の制約下では条件を満たすものが少なくとも1つは存在することが保証されます.

制約

 3 \leq N \leq 20000

MAD TEAM

問題リンク

問題概要

 N人のメンバーがいて,それぞれのメンバーは 5つのステータスがあります. i人目の j個目のステータスの値は S_{i,j}です.便宜上 i人目のメンバーの番号を iとします.

 N人の中から 3人を選んでチームを組みます. 3人のメンバーの番号が x_1,x_2,x_3であったとき,そのチームの総合力は以下で計算されます.

チームの総合力 
= {\underset{1 \leq j \leq 5}{\mathbf{min}}}
\left ( {\underset{1 \leq i \leq 3}{\mathbf{max}}(S_{{x_i},j})} \right)

このとき,チームの総合力としてあり得る最大の値を求めてください.

制約

 3 \leq N \leq 3000

 1 \leq S_{i,j} \leq 10 ^ 9

Equal Weight

問題リンク

問題概要

 0から N-1までの番号がついた N個のシャリと, 0から M-1までの番号がついた M個のネタがあります.シャリ iの重さは A_iで,ネタ jの重さは B_jです.

あなたは寿司の握りを 2つ作りたいです. 1つの握りはちょうど 1つのシャリとネタを組み合わせ作ることで作られます.

あなたは 2つの握りの重さが等しくなるようにしたいです.これが可能かどうか判定し,可能ならばその作り方を 1つ示してください.なお,同じシャリやネタを 2回使うことはできません.

制約

 2 \leq N,M \leq 2 \times 10 ^ 5

 1 \leq A_i \leq 10 ^ 6

 A_i \neq A_j  (i \neq j)

 1 \leq B_i \leq 10 ^6

 B_i \neq B_j  (i \neq j)

Built?

問題リンク

問題概要

平面上に N個の街があり, i個目の街は座標 (x_i,y_i)にあります.同じ座標に複数の街がある場合もあります.座標 (a,b)にある街と座標 (c,d)にある街の間に道を造るのには \mathbf{min}(|a-c|,|b-d|)円かかります.街と街の間以外に道を造ることはできません.

任意の 2つの街の間を,道を何本か通って行き来できるようにするためには最低で何円必要でしょうか.

制約

 2 \leq N \leq 10 ^ 5

 0 \leq x_i,y_i \leq 10 ^ 9

Keep Graph Connected

問題リンク

問題概要

 1から Nの番号が付いた N個の頂点と 1から Mの番号が付いた M本の辺からなる連結な無向グラフが与えられます.このグラフには多重辺が存在するかもしれませんが,自己ループはありません.

このグラフのそれぞれの辺には 1以上 N以下の整数で表されるラベルがついています.辺 iにはラベル c_iがついており,頂点 u_i,v_iを双方向につなぐ辺です.

あなたはそれぞれの頂点に 1以上 N以下の整数を書き込んだのち(頂点に書き込まれた整数に重複があっても構いません),以下の条件を満たす辺のみを残してそれ以外の辺を取り除くことにしました.

条件:辺の両端の頂点に書き込まれた整数を x,yとして, x,yいずれか一方のみが辺についたラベルと等しい

上記の条件を満たさない辺を取り除いたあとのグラフも連結のままであるような頂点への整数の書き込み方が存在するかどうか調べ,存在するならその一例を,存在しないならば存在しないことを報告してください.

制約

 2 \leq N \leq 10 ^ 5

 N-1 \leq M \leq 2 \times 10 ^ 5

 1 \leq u_i,v_i,c_i \leq N

・与えられるグラフは連結

・与えられるグラフに自己ループはない

Packing Potatoes

問題リンク

問題概要

ベルトコンベアに載って 10^{100}個のじゃがいもが 1個ずつ流れてきます.流れてくるじゃがいもの重さは長さ Nの数列 W=(W_0,W_1,...,W_{N-1})で表され, i (1 \leq i \leq 10 ^ {100})番目に流れてくるじゃがいもの重さは W_{(i-1) \mathbf{mod} N}です.ここで, (i-1) \mathbf{mod} N i-1 Nで割ったあまりを表します.

あなたはまず空の箱を用意し,次のルールに従ってじゃがいもを順番に箱に詰めていきます.

・じゃがいもを箱に入れる.箱に入ってるじゃがいもの重さの総和が X以上になったらその箱には蓋をし,新たに空の箱を用意する.

 Q個のクエリが与えられます. t(1 \leq t \leq Q)番目のクエリでは,正整数 K_tが与えられるので, K_t番目に蓋をされた箱に入っているじゃがいもの個数を求めてください.問題の制約下で,蓋をされた箱が K_t個以上存在することが証明できます.

制約

 1 \leq N,Q \leq 2 \times 10^{5}

 1 \leq X \leq 10^{9}

 1 \leq W_i \leq 10^{9}

 1 \leq K_t \leq 10^{12}