atcoder#ARC089B. [ABC086D] Checker

[ABC086D] Checker

题目描述

シカのAtCoDeerくんは無限に広がる二次元グリッドを一辺が K K の市松模様で塗ろうと考えています。 ただし、一辺が K K の市松模様とは、各マスが白か黒で塗られたパターンであって、各色の各連結成分が K K × × K K の正方形となっているようなものです。 例えば以下は一辺が 3 3 の市松模様の例です。

cba927b2484fad94fb5ff7473e9aadef.png

AtCoDeerくんは N N 個の希望を持っています。 i i 個目の希望は、 xi,yi,ci x_i,y_i,c_i で表されます。 これは、ci c_i B ならマス (xi,yi) (x_i,y_i) を黒で塗る、 W なら白で塗ることを意味しています。 同時に最大でいくつの希望を叶えることが出来るか答えてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N K K x1 x_1 y1 y_1 c1 c_1 x2 x_2 y2 y_2 c2 c_2 : : xN x_N yN y_N cN c_N

输出格式

同時に叶えられる希望の個数の最大値を出力せよ。

题目大意

有一个无限大的黑白网格,由若干个 K×KK\times K 的黑色或白色正方形矩阵构成,且相间分布。

给定 NN 个愿望,每个愿望给定 xi,yi,cix_i,y_i,c_i,表示想要使 (xi,yi)(x_i,y_i) 的网格是 cic_i 种颜色,问最多可以同时满足多少个愿望。

4 3
0 1 W
1 2 W
5 3 B
5 4 B
4
2 1000
0 0 B
0 1 W
2
6 2
1 2 B
2 1 W
2 2 B
1 0 B
0 6 W
4 5 W
4

提示

制約

  • 1 1 < = <\ = N N < = <\ = 105 10^5
  • 1 1 < = <\ = K K < = <\ = 1000 1000
  • 0 0 < = <\ = xi x_i < = <\ = 109 10^9
  • 0 0 < = <\ = yi y_i < = <\ = 109 10^9
  • i i j j なら (xi,yi) (x_i,y_i) (xj,yj) (x_j,y_j)
  • ci c_i B または W
  • N,K,xi,yi N,K,x_i,y_i は整数

Sample Explanation 1

上であげた例のように塗ればすべての希望を同時に叶えることができます。