#P15558. [egoi2024]车位分配

[egoi2024]车位分配

题目描述

桑娜最近想出了一个赚钱的生意:在埃因霍温火车站出租高端自行车停车位。为了最大化利润,你将停车位分为 NN 个不同等级,编号从 00N1N-100 号等级是高端等级,位置离火车站台非常近。编号越高的等级,停车位的条件越差。第 tt 等级有 xtx_t 个停车位。

用户通过一个应用分配停车位。每位用户有自己的订阅等级,并期望获得对应等级的停车位。然而,服务条款并不保证用户一定得到其订阅等级的停车位。

如果订阅等级为 ss 的用户被分配到等级 tt 的停车位,会发生以下三种情况之一:

  1. 如果 t<st < s,用户会很开心,给应用点赞。
  2. 如果 t=st = s,用户感到满意,不会采取任何行动。
  3. 如果 t>st > s,用户会生气,给应用差评。

今天,桑娜的应用有 y0+y1++yN1y_0 + y_1 + \ldots + y_{N-1} 名用户,其中 ysy_s 是订阅等级 ss 的用户数量。你需要帮助桑娜将用户分配到停车位。每个用户必须恰好分配到一个停车位,每个停车位最多分配给一个用户,但允许某些停车位空置。此外,总用户数不超过总停车位数。

桑娜希望最大化应用的评分。设 UU 为点赞数,DD 为差评数。你的任务是最大化 UDU - D

输入格式

第一行包含一个整数 NN,表示停车位等级数或订阅等级数。

第二行包含 NN 个整数 x0,x1,,xN1x_0, x_1, \ldots, x_{N-1},表示各等级的停车位数量。

第三行包含 NN 个整数 y0,y1,,yN1y_0, y_1, \ldots, y_{N-1},表示各订阅等级的用户数量。

输出格式

输出一个整数,表示通过最优分配用户到停车位可获得的最大 UDU - D 值。

2
3 3
1 3

2

3
1 1 1
1 1 1

1

6
1 0 1 1 0 1
1 1 0 0 1 0

1

4
2 1 1 8
0 4 4 0

-1

1
1000000000
1000000000

0

数据范围与提示

对于所有输入数据,满足:

  • 1N31051 \leq N \leq 3 \cdot 10^5
  • 0xi,yi1090 \leq x_i, y_i \leq 10^9(对于 i=0,1,,N1i = 0, 1, \ldots, N-1
  • $y_0 + y_1 + \ldots + y_{N-1} \leq x_0 + x_1 + \ldots + x_{N-1} \leq 10^9$

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 1616 N=2,xi100,yi100N = 2, x_i \leq 100, y_i \leq 100
22 99 对于所有 i,ji, jxi=xj=yi=yjx_i = x_j = y_i = y_j,即输入中所有 xxyy 相同
33 1919 xi,yi1x_i, y_i \leq 1
44 2424 N,xi,yi100N, x_i, y_i \leq 100
55 3232 无附加限制