torus711 のアレ

主に競技プログラミングの問題について書きます.PC 以外だと数式が表示されないかもしれないです

GCDLCM2

問題概要

 正整数の配列が与えられる.この配列に対し,以下の操作を任意回行う.

  1. 2 つの要素 $x, y$ を選ぶ
  2. $x, y$ を削除する
  3. $\mathit{ GCD }( x, y ), \mathit{ LCM }( x, y )$ (それぞれ最大公約数と最小公倍数)を追加する

 配列の要素の和として達成できるものの最大数を $S$ として,$S \bmod{ 10^9+7 }$ を求めよ.

 入力となる配列は,生成のためのアルゴリズムとそれに与えるパラメータとして与えられる.完成した配列の要素数は $10^5$ 以下,各要素は $10^7$ 以下となる.

続きを読む

TopCoder SRM 681, Division 2, Level 2 : ExplodingRobots

問題概要

 平面上に二つのロボットを置く.一つは座標 $( x_1, y_1 )$ に,他方は $( x_1, y_1 )$ に置く.
 各ロボットは,$U, D, L, R$ からなる命令列 $\mathit{ instructions }$ を処理する.各命令は,いずれかの座標軸lに垂直な四方向へ距離 $1$ 移動することを表す(正確には問題文参照のこと).しかし,ロボットのプログラムにはバグがあり,命令列の任意の部分列を無視してしまう.これはそれぞれのロボットで独立に発生するので,二つのロボットの動きは異なりえる.
 二つのロボットが同じ座標に存在しようとすると,ロボットは爆発してしまう.
 命令列がどのように無視されても爆発しないならば "Safe" を,そうでないならば "Explosion" を返せ.

  • $-25 \leq x_1, y_1, x_2, y_2 \leq 25$
  • $( x_1, y_1 ) \neq ( x_2, y_2 )$
  • $| \mathit{ instructions } | \leq 50$
続きを読む

TopCoder SRM 681, Division 2, Level 1 : CoinFlipsDiv2

問題概要

 表裏を区別できる $N$ 枚のコインが一直線上に並んでいる.コインは左から右に $0$ から $N - 1$ で番号付けられている.コインの状態は長さ $N$ の配列 $\mathit{ state }$ で与えられる.$\mathit{ state }_i = H$ のとき,$i$ 番のコインが表を上にして置かれていて,$\mathit{ state }_i = T$ のとき,裏を上にして置かれている.
 各コインについて,異なる面を上にして置かれているコインと隣接しているとき,そのコインを interesting であるという.
 interesting なコインの枚数を求めよ.

  • $1 \leq N \leq 50$
続きを読む

TopCoder SRM 681, Division 1, Level 1 : FleetFunding

問題概要

 $1$ から $M $ で番号付けられた $M $ 個のパーツを使って作られる機械がある.一つの機械は,$1$ から $M $ のパーツを一つずつ使って構成される.
 パーツは,$N$ 個の店から買うことができる.各 $i$ ( $1 \leq i \leq N$ ) について,$i$ 番の店では $A_i$ 以上 $B_i$ 以下の番号のパーツを(合計で)最大 $K_i$ 個まで買うことができる.
 作ることのできる機械の最大数を求めよ.

  • $1 \leq N \leq 50$
  • $1 \leq M \leq 10^5$
  • $1 \leq K_i \leq 10^6$
  • $1 \leq A_i \leq B_i \leq M $
続きを読む

TopCoder SRM 674, Division 1, Level 1 : VampireTree

問題概要

 数のリスト $\mathit{ num }$ が与えられる.$| \mathit{ num } | = N$ とする.
 $N$ 頂点の木であって,$i$ 番目の頂点の次数が $\mathit{ num }_i$ であるような木を作るとき,直径(2 点間距離の最大値)の最大値を求めよ.
 木を作れない場合は -1 で示せ.

  • $2 \leq | \mathit{ num } | \leq 20$
  • $1 \leq \mathit{ num }_i \leq N - 1$
続きを読む