题目

源地址:

http://codeforces.com/problemset/problem/11/A

理解

给定一个序列,给定一个递增值。要求计算出最少需要多少步,能将这个序列变为递增数列。 第一个想法就是贪心,甚至都不需要读完数列,直接在输入时处理就可以了。

代码


int n,d;
int t=0,one,two,temp;

int main(int argc, char const *argv[])
{
    while (~scanf("%d%d",&n,&d))
    {
        t=0;
        scanf("%d",&one);
        for (int i=2; i<=n; i++)
        {
            scanf("%d",&two);
            if (one>two)
            {
                temp=(one-two)/d+1;
                t+=temp;
                two+=temp*d;
            }
            else if (one == two)
                t++,two+=d;
            one=two;
        }
        printf("%d\n",t);
    }
    return 0;
}

更新日志

  • 2014年11月16日 已AC。