#P8621. [蓝桥杯 2014 国 A] 供水设施

[蓝桥杯 2014 国 A] 供水设施

题目描述

X 星球的居民点很多。Pear 决定修建一个浩大的水利工程,以解决他管辖的 NN 个居民点的供水问题。现在一共有 NN 个水塔,同时也有 NN 个居民点,居民点在北侧从 11 号到 NN 号自西向东排成一排;水塔在南侧也从 11 号到 NN 号自西向东排成一排。

NN 条单向输水线(有水泵动力),将水从南侧的水塔引到北侧对应的居民点。

我们不妨将居民点和水塔都看做平面上的点,居民点坐标为 (1,K)(N,K)(1,K) \sim (N,K),水塔为 (1,0)(N,0)(1,0) \sim (N,0)

除了 NN 条纵向输水线以外,还有 MM 条单向的横向输水线,连接 (Xi,Yi)(X_i,Y_i)((Xi)+1,Yi)((X_i)+1,Y_i) 或者 (Xi,Yi)(X_i,Y_i)((Xi)1,Yi)((X_i)-1,Y_i)。前者被称为向右的水路,而后者是向左的。不会有两条水路重叠,即便它们方向不同。

布局的示意图如所示。

显然,每个水塔的水都可以到达若干个居民点(而不仅仅是对应的那个)。例如上图中,44 号水塔可以到达 33445566 四个居民点。

现在 Pear 决定在此基础上,再修建一条横向单向输水线。为了方便考虑,Pear 认为这条水路应当是自左向右的,也就是连接了一个点和它右侧的点(例如上图中连接 5566 两个纵线的横向水路)。

Pear 的目标是,修建了这条水路之后,能有尽可能多对水塔和居民点之间能到达。换句话说,设修建之后第 ii 个水塔能到达 AiA_i 个点,你要最大化 A1+A2++AnA_1+A_2+ \cdots +A_n

根据定义,这条路必须和 X 轴平行,但 Y 坐标不一定要是整数。注意:虽然输入中没有重叠的水路,但是你的方案可以将新修的输水线路与已有的水路重叠。

输入格式

输入第一行包含三个正整数 NNMMKK,含义如题面所述:NN 是纵向线数,MM 横向线数,KK 是居民点纵坐标。

接下来 MM 行,每行三个整数。前两个正整数 Xi,YiX_i,Y_i 表示水路的起点坐标;

1XiN,0<Yi<K1 \le X_i \le N,0<Y_i<K

接下来一个数 00 或者 11,如果是 00 表示这条水路向左,否则向右。

保证水路都是合法的,也就是不会流向没有定义的地方。

输出格式

输出一行。是一个正整数,即:题目中要求的最大化的 A1+A2++AnA_1+A_2+ \cdots +A_n

4 3 2
1 1 1
3 1 0
3 1 1
11
7 9 4
2 3 0
7 2 0
6 3 1
6 1 0
2 1 1
3 3 1
5 2 0
2 2 1
7 1 0
21

提示

对于 20%20\% 的数据,N,K20N,K \le 20M100M \le 100

对于 40%40\% 的数据,N,K100N,K \le 100M1000M \le 1000

对于 60%60\% 的数据,N,K1000N,K \le 1000M100000M \le 100000

对于 100%100\% 的数据,N,K50000N,K \le 50000M105M \le 10^5

时限 4 秒, 256M。蓝桥杯 2014 年第五届国赛