码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #361 Jul.6th B题 ?译

时间:2016-07-09 19:14:05      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

最近迈克忙着考前复习,他希望通过出门浮躁来冷静一下。
迈克所在的城市包含N个可以浮躁的地方,分别编号为1..N。通常迈克在家也很浮躁,所以说他家属于可以浮躁的地方并且编号为1.迈克从家出发,去一些可以浮躁的地方。迈克从第i个可以浮躁的地方到第j个可以浮躁的地方需要消耗abs(i-j)点精力。迈克花费的精力点数是这样算的,比如他去一组地方p1=1,p2,...,pk就需要技术分享点精力。
当然,如果木有捷径的话走路会很无聊。无论两个地方相隔多远,走捷径的话迈克都只需要消耗1点精力。迈克所在的城市里由N条捷径。第i条捷径表示这条捷径连接了第i处和第ai(i<=ai<=ai+1)处(这条捷径是单向的)。所以说其实每个可以浮躁的地方i都有一条捷径从这开始,到达api处。如果迈克选择了这样一组地方p1=1,p2,...,pk,其中1<=i<k满足api=pi+1,迈克就只需要花费1点精力而不是abs(p[i]-p[i+1])就可以从pi走到pi+1了。再比如迈克选择了这样一个序列去浮躁p1=1,p2=ap1,p3=ap2,...,pk=apk-1,那么只需要k-1点精力就可以从p1走到pk了。因为迈克忙着码代码,所以说他拜托你帮他求出来从家到每个可以浮躁的地方需要耗费的精力点数。
输入:
第1行:一个整数N(1<=N<=200 000)表示迈克所在的城市包含N个可以浮躁的地方(即N条捷径)
第2行:N个整数a1,...,aN(i<=ai<=N,技术分享用来表示第i个地方有到第ai个地方的捷径(捷径都是单向的)。
输出:
第1行:N个整数m1,m2,...,mN表示迈克从家里到第i个地方所需要花费的精力点数。

样例们:

输入:

3

2 2 3

输出:

0 1 2

==============

输入:

5

1 2 3 4 5

输出:

0 1 2 3 4

==========

输入:

7

4 4 4 4 7 7 7

输出:

0 1 2 1 2 3 3

 

Codeforces Round #361 Jul.6th B题 ?译

标签:

原文地址:http://www.cnblogs.com/BraFloGinAtSky/p/5656314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!