辣鸡
辣鸡
(spicychicken.cpp/c/pas)
【问题描述】
辣鸡选手wyz喜欢辣鸡。
wyz在后院养了许多辣鸡。wyz的后院可以看成一个A*B的矩形,左下角的坐标为(0,0),右上角的坐标为(A,B)。
wyz还在后院里建了许多栅栏。有n个平行于y轴的栅栏a1..an,表示挡在(ai,0)到(ai,B)之间。有m个平行于x轴的栅栏b1..bn,表示挡在(0,bi)到(A,bi)之间。这样,平面被划成了(n+1)*(m+1)块辣鸡的活动区域。
为了方便辣鸡的活动,wyz现在要去掉某些栅栏的一部分,使得每一块活动区域都连通。
同时,每次修改栅栏只能去掉从某个交点到另一个交点的一整段栅栏。举(打)个比(栗)方(子):
原来是这样的布局,经过修改可以变成这样:(0:space)
+---+--+
|000|00|
+---+--+
|000|00|
|000|00|
+---+--+
现在,wyz想知道,要使得每一块辣鸡活动区域都联通,最少需要去掉多少长度的栅栏。
+---+--+
|000000|
+---+00+
|000000|
|000000|
+---+--+
【输入格式】
输入到spicychicken.in
第一行4个正整数A、B、n、m,描述了后院的大小和两种栅栏的数目。
第2行到第n+1行,每行1个正整数,第i+1行的数描述了a[i]。
第n+2行到第n+m+1行,每行1个正整数,第n+i+1行的数描述了b[i]。
【输出格式】
输出到spicychicken.out
一行一个整数表示需要去掉的栅栏的最小长度总和。
【输入输出样例】
spicychicken.in spicychicken.out
15 15 5 2
2
5
10
6
4
11
3 44
【数据范围】
对于10%的数据,A,B<=1000,n,m<=20
对于30%的数据,A,B<=1000,000,n*m<=25,000
对于40%的数据,n*m<=250,000
对于50%的数据,n*m<=4,000,000
对于100%的数据,1<=A,B<=1000,000,000,1<=n,m<=25,000
数据保证0<a[i]<A,0<b[i]<B
信息
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 7
- 已通过
- 1
- 通过率
- 14%
- 上传者