戳我下载下发文件。
题目描述
有 2n 个人在走楼梯。
其中有 n 个人在楼梯下面,他们需要上楼梯;另外 n 个人在楼梯上面,他们需要下楼梯。
第 i 个人上楼梯所需时间是 ai,下楼梯所需时间是 bi。第 i 个人上/下楼梯需要等前 i−1 个人上/下完才能进行。
请合理分配这 2n 个人,钦定每个人是上楼梯还是下楼梯,使每个人走楼梯所需时间之和尽可能小。
形式化的,记:
fr(x)={ax,bx,r=0r=1
构造一个长为 2n 的 01 序列 s,满足 s 中恰有 n 个 0 和 n 个 1。试最小化 ∑fsi(i),并构造方案。
输入格式
输入的第一行包含一个整数 n,表示每种类别的人数;
输入的第二行包含 2n 个整数 ai,分别表示第 i 个人上楼梯所需时间。
输入的第三行包含 2n 个整数 bi,分别表示第 i 个人下楼梯所需时间。
输出格式
输出的第一行包含一个整数,表示每个人所需时间之和的最小值。
输出的第二行包含 2n 个整数 si,分别表示分配给每个人的类别。其中,若钦定第 i 个人上楼梯,则 si=0,反之 si=1。
若存在多解,输出其中任一即可。
输入输出样例
2
1 3 2 4
2 3 1 3
8
0 0 1 1
提示
【数据范围】
对于 100% 的数据,1≤n≤5×105,1≤ai,bi≤106。
Point |
n≤ |
Note |
1∼6 |
10 |
No |
7∼8 |
13 |
9∼12 |
103 |
13 |
5×105 |
A |
14∼15 |
B |
16∼20 |
No |
- Note A:ai=bi;
- Note B:序列 a 单调递增,序列 b 单调递减。