日々drdrする人のメモ

今日も明日もdrdr

CodeChef October Challenge 2019: Faulty System

CodeChef October Challenge 2019の問題: Faulty System (Code: CNNCT2)
問題ページ: Contest Page | CodeChef

色々考えたけど、コンテスト中に解けなかった問題。
ずっと悩んでMatroid Intersectionを知らない人をした。

問題概要

 N頂点と M個の無向辺が含まれる2つのグラフが与えられる。
2つのグラフの各頂点には 1から N、各辺には 1から Mの番号がついている。

2つのグラフについて、同じ番号の辺を用いて両方を連結グラフにしたい。
連結グラフにするために必要な最小辺数はいくらか?

続きを読む

CodeChef October Challenge 2019: Fun with Lists

CodeChef October Challenge 2019の問題: Fun with Lists (Code: TANDON)
この問題は、他からのコピーだったという理由より問題が気づいたら消えてた。

They removed TANDON! - CodeChef Discuss
Forumによれば、以下の問題と同じらしい。
Reverse | Matrix Exponentiation & Math Practice Problems | HackerEarth

とりあえず解いたので書いておく。

問題概要

整数 Xをとり、その桁を逆順にした整数を返す rev(X)を定義する。
( rev(123) = 321,  rev(800) = 8)

 N桁以下の Kの倍数の整数 Xのうち、 rev(X) Kの倍数になる整数の個数をmodulo  10^9 + 7で求めよ。

続きを読む

CodeChef October Challenge 2019: Bacterial Reproduction

CodeChef October Challenge 2019の問題: Bacterial Reproduction (Code: BACREP)

問題ページ: Contest Page | CodeChef

問題概要

根頂点が頂点1の根付き木がある。

はじめ、各頂点に細菌が存在し、頂点 iには a_i匹存在する。

各秒において、以下が発生する。

  • 葉でない各頂点 vについて、子頂点の数を s_vとする。その頂点に存在する細菌を x匹とした時、 s_v \cdot x匹に分離した上で各子頂点に x匹ずつ移動する。(この時、その頂点に x匹の細菌はいなくなる)
  • ある1頂点に細菌が何匹か出現することがある

 0秒目から Q-1秒目 の  Q秒間の各秒に対し、以下のクエリを処理せよ

  • '+ v k': この秒の間に頂点 v k匹の細菌が出現する (ただしこの秒数では分裂移動しない)
  • '? v': この秒で細菌が分離し移動した時点での頂点 vの細菌の数を出力する
続きを読む

CodeChef October Challenge 2019: Queries on Matrix

CodeChef October Challenge 2019 の問題: Queries on Matrix (Code: JIIT)

Contest Page | CodeChef

問題概要

 N \times M の行列が与えられる。全ての要素は初め 0 である。

 r行目 c列目の要素を  (r, c) として記述する。

以下の操作をちょうど  Q 回行う。

  1. 1つの要素  (x, y)  (1 \le x \le N, 1 \le y \le M) を選ぶ
  2.  x 行目の全ての要素に 1 を足す
  3.  y 列目の全ての要素に 1 を足す

 Q 回の操作の後、行列全体の内で要素が奇数となる要素の数を  Z 個とする要素の操作列は何通り存在するかを modulo 998244353 で求めよ。
(操作列は、異なる順序で要素を選ぶもの同士を区別する)

続きを読む

LCAをベースに構築するAuxiliary Treeのメモ

(2019/09/15 20:50頃追記) ただAuxiliary Treeと書くと(一般的すぎて)齟齬を生む可能性が高いので、タイトル及び一部文章を変更しました。申し訳ないです。今回はLCAをベースに構築するAuxiliary Treeについて取り上げてます。

最近、LCAを元に構築する Auxiliary Tree を使う問題に出会ったので書いた。

CodeChef July Challenge 2019 で以下の問題があった。

smijake3.hatenablog.com

自分は Auxiliary Tree を使わず解いたが、想定解法が Binarization of a tree + Centroid Decomposition on Edge + Auxiliary Tree だったらしい。

discuss.codechef.com

以下を参考にしている。

続きを読む

グラフのchain decompositionで橋と関節点を求める

グラフのchain decompositionと、それを使って橋と関節点を求める手法のメモ

橋と関節点を求める手法といえばlowlinkを用いた手法が存在するが、他の手法としてchain decompositionを用いた手法が存在する。(WikipediaBridge (graph theory)Biconnected componentに載っている)

以下を参考にしている
[1] Schmidt, Jens M. "A simple test on 2-vertex-and 2-edge-connectivity." Information Processing Letters 113.7 (2013): 241-244.

続きを読む