算法题 36:搬圆桌(蘑菇街)
题目:现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。
输入描述:
一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000)
输出描述:
输出一个整数,表示答案
输入例子:
2 0 0 0 4
输出例子:
1
*******************************************************************************************************************************
算法题 63:修理桌子(蘑菇街笔试题)
Arthur最近搬到了新的别墅,别墅特别大,原先的桌子显得比较小,所以他决定换一张新的桌子。他买了一张特别大的桌子,桌子是由很多条桌腿进行支撑的,可是回到家之后他发现桌子不稳,原来是桌子腿长度不太相同。他想要自己把桌子修理好,所以他决定移除掉一些桌腿来让桌子变得平稳。
桌子腿总共有n条腿,第i条腿长度为li,Arthur移除第i桌腿要花费代价为di。假设k条腿桌子平稳的条件:超过一半桌腿能够达到桌腿长度的最大值。
例如:一条腿的桌子是平稳的,两条腿的桌子腿一样长时是平稳的。请你帮Arthur计算一下是桌子变平稳的最小总代价。
输入描述:
输入:
第一行数据是一个整数:n (1≤n≤105),n表示桌腿总数。
第二行数据是n个整数:l1, l2, …, ln (1≤li≤105),表示每条桌腿的长度。
第三行数据是n个整数:d1, d2, …, dn (1≤di≤200),表示移除每条桌腿的代价。
输出描述:
输出:
输出让桌子变平稳的最小总代价
输入例子:
样例输入
6
2 2 1 1 3 3
4 3 5 5 2 1
输出例子:
8
*******************************************************************************************************************************
算法题 84:特殊交换(蘑菇街笔试题)
题目:现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。
输入描述:
第一行输入一个正整数n(n≤1000),表示数字序列的元素个数,占一行;接下来一行输入从1到n的n个整数排序,中间用空格隔开
输出描述:
输出序列升序排列需要的最少交换次数
输入例子:
4
4 3 2 1
输出例子:
6