poj 2231 牛吼的音量 快排

今天恰逢基数排序,于是乎前往POJ寻找目标练手,看到 frkstyc大牛一句“基数排序”,就来到2231,囧,discuss里米有说用基数的,快排倒有,也有暴力(忽略),就手写了个快排交了,这个T还是有点技巧的,就是牛按位置排序后,算了,举个例子: 34 12 435 2 3共5个牛,排好序后是:2 3 12 34 435 然后开始从右往左计算牛距,呃,说反了,从左往右,因为第i个牛到第i+1个牛的距离必然在第k个牛0<=k<i 到第i个牛的距离之间,所以i前边有几头牛,就要将distace(i,i+1)乘以几,相当于将距离按段分开算,然后合并,比如12到34距离为22,那么 2 到34的距离必然大于22,就将2的距离分成2到3,3到12,12到34;3到34的距离分成3到12,12到34;所以12到34总共要计算3次(就是34之前元素的个数),就要乘以3,那么这段距离就完成了计算,怎么跟前边的累加呢,只需将12到34分段的距离跟3到12的分段距离累加(就这样往前递推),最终就完成了相加,因为12到34的距离跟34到12的距离相等,结果乘以2就不用反过来再那样搞一遍了,over,放码子:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值