编程题
供水设施 ### 题目描述 X 星球的居民点很多。Pear 决定修建一个浩大的水利工程,以解决他管辖的 $N$ 个居民点的供水问题。现在一共有 $N$ 个水塔,同时也有 $N$ 个居民点,居民点在北侧从 1 号到 $N$ 号自西向东排成一排;水塔在南侧也从 1 号到 $N$ 号自西向东排成一排。 $N$ 条单向输水线(有水泵动力),将水从南侧的水塔引到北侧对应的居民点。 我们不妨将居民点和水塔都看做平面上的点,居民点坐标为 $(1,K)$ ~ $(N,K)$,水塔为 $(1,0)$ ~ $(N,0)$。 除了 $N$ 条纵向输水线以外,还有 $M$ 条单向的横向输水线,连接 $(X_i,Y_i)$ 和 $(X_i,Y_i+1)$ 或者 $(X_i,Y_i)$和 $(X_i,Y_i-1)$。前者被称为向右的水路,而后者是向左的。不会有两条水路重叠,即便它们方向不同。 布局的示意图如下所示。 ![](https://doc.shiyanlou.com/courses/uid1580206-20210202-1612251813937) 显然,每个水塔的水都可以到达若干个居民点(而不仅仅是对应的那个)。例如上图中,4 号水塔可以到达 3、4、5、6 四个居民点。 现在 Pear 决定在此基础上,再修建一条横向单向输水线。为了方便考虑,Pear 认为这条水路应当是自左向右的,也就是连接了一个点和它右侧的点(例如上图中连接 5 和 6 两个纵线的横向水路)。 Pear 的目标是,修建了这条水路之后,能有尽可能多对水塔和居民点之间能到达。换句话说,设修建之后第 $i$ 个水塔能到达 $A_i$ 个点,你要最大化 $A_1+A_2+ \cdots +A_n$。 根据定义,这条路必须和 $X$ 轴平行,但 $Y$ 坐标不一定要是整数。注意:虽然输入中没有重叠的水路,但是你的方案可以将新修的输水线路与已有的水路重叠。 ### 输入描述 输入第一行包含三个正整数 $N,M,K$,含义如题面所述。 接下来 $M$ 行,每行三个整数。前两个正整数 $X_i, Y_i$ 表示水路的起点坐标。 接下来一个数 $0$ 或者 $1$,如果是 $0$ 表示这条水路向左,否则向右。 保证水路都是合法的,也就是不会流向没有定义的地方。 其中,$N,K \leq 5\times 10^4,M \leq 10^5,1 \leq X_i \leq N,0 输入 ```txt 4 3 2 1 1 1 3 1 0 3 1 1 ``` > 输出 ```txt 11 ```
查看答案
赣ICP备20007335号-2