最近迈克忙着考前复习,他希望通过出门浮躁来冷静一下。
迈克所在的城市包含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题 ☺译的更多相关文章

  1. Codeforces Round #361 Jul.6th A题 ☺译

    A.迈克和手机 当迈克在沙滩上游泳的时候,他意外的把他的手机扔进了水里.不过你甭担心因为他立马买了个便宜些的代替品,这个代替品是老款九键键盘,这个键盘只有十个等大的数字按键,按以下方式排列: 1 2 ...

  2. Codeforces Round #361 (Div. 2) 套题

    A - Mike and Cellphone 问有没有多解,每个点按照给出的序列用向量法跑一遍 #include<cstdio> #include<cstring> #incl ...

  3. Codeforces Round #378 (Div. 2) D题(data structure)解题报告

    题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...

  4. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  5. Codeforces Round #713 (Div. 3)AB题

    Codeforces Round #713 (Div. 3) Editorial 记录一下自己写的前二题本人比较菜 A. Spy Detected! You are given an array a ...

  6. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  7. ST表入门学习poj3264 hdu5443 hdu5289 codeforces round #361 div2D

    ST算法介绍:[转自http://blog.csdn.net/insistgogo/article/details/9929103] 作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例 方 ...

  8. Codeforces Round #552 (Div. 3) A题

    题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...

  9. Codeforces Round #412 Div. 2 补题 D. Dynamic Problem Scoring

    D. Dynamic Problem Scoring time limit per test 2 seconds memory limit per test 256 megabytes input s ...

随机推荐

  1. Jacoco入门

    Jacoco介绍 转自:wangmuming 的博客 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaA ...

  2. 作业七:团队项目——Alpha版本冲刺阶段002

    今日进展:我们终于安装好了软件,今天开始进行作业设计. 今日安排:今天开始我们要开始我们的框架的设计.

  3. logistc regression练习(三)

    % Exercise 4 -- Logistic Regression clear all; close all; clc x = load('E:\workstation\data\ex4x.dat ...

  4. Python开发入门与实战18-Windows Azure 虚拟机部署

    18. 微软云虚拟机部署 上一章节我们介绍了如何在新浪云部署我们的在python django应用,本章我们来介绍如何Windows Azure上部署我们的应用. 18.1. 注册Windows Az ...

  5. Integer Break(Difficulty: Easy)

    题目: Given a positive integer n, break it into the sum of at least two positive integers and maximize ...

  6. 《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》

    Application和Java Applet的区别.Java语言是一种半编译半解释的语言.Java的用户程序分为两类:Java Application和Java Applet.这两类程序在组成结构和 ...

  7. BackgroundWorker组件的作用

    当构建一个图形化的Windows Form桌面应用程序并且需要执行在应用程序主UI线程之外的线程中长时间的任务时,BackgroundWorker类就很有用了. 要使用BackgroundWorker ...

  8. i2c总线,设备,驱动之间的关系

    ------ 总线上先添加好所有具体驱动,i2c.c遍历i2c_boardinfo链表,依次建立i2c_client, 并对每一个i2c_client与所有这个线上的驱动匹配,匹配上,就调用这个驱动的 ...

  9. 【转】slice,substr和substring的区别

    首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度.直接看下面例子: var test = ' ...

  10. PC端和手机访问调用不同的页面,JS和PHP不同方法

    js方法: var urlqr = location.href;    urlqr = urlqr.replace(/iphoneF_/, "pc")这里写正则替换页面地址 if( ...