塔子哥刚学完栈这个数据结构,觉得非常的神奇。现在作为acm的预选队员之一,他被学长的一个问题给问趴下了。三天没有任何进展,你能帮帮他吗?
“栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。
塔子哥拿到了两个栈,现在需要将两个栈里面的元素合并为一个n排列。(也就是1~n各出现一次)
现在塔子哥允许有两个操作:
1.选择其中一个栈并弹出栈顶。但是被弹出的元素必须要是两个栈之间的最小值
2.将其中一个栈的栈顶元素弹出,之后放入另外一个栈的栈顶。
求能够完成任务最小操作次数
第一行为n,sz1,sz2。n即为要组成的n排列大小,sz1,sz2为两个栈的大小,其中0<n<1000,sz1+sz2=n
第二行sz1个整数d(0<d<=n),表示第一个栈从栈底到栈顶的sz1个元素
第三行sz2个整数d(0<d<=n),表示第二个栈从栈底到栈顶的sz2个元素
输入
4 2 2
1 3
4 2
输出
6
扫码备注加群即可,期待您的到来~
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.