zoukankan      html  css  js  c++  java
  • 【ZOJ 3897】Candy canes//Fiddlesticks

    题意

      给你一串数,a1...an,从左到右每次让一个数减小c,如果这个数小于c,那就减为0。第n个数减小后,又从第一个开始从左到右。如果这次某个数减小到0,那就改变方向,如果遇到已经是0的,就跳过。且总共最多减少n+5次,求最后变为0的数是第几个。

    分析

    Input

    1

    8 80
    200 100 100 100 100 80 160 200

    Output

    3

    样例分析:

    最多可以减少8+5=13次,于是最后减为0的就是第三个数了:

        200 100 100 100 100 80 160 200 减少次数
    第一轮 120 20 20 20 20 0 160 200  6
    改变方向120 20 20 20 0 0 160 200  7
    改变方向120 20 20 20 0 0 80 120  9
    第二轮 40 0 20 20 0 0 80 120  11
    改变方向 0 0 20 20 0 0 80 120  12
    改变方向 0 0 0 20 0 0 80 120  13

    这题理解了题意,模拟就好啦。

    代码

    #include<cstdio>
    
    int t;
    int n,c;
    int s[50];
    int bite,left;
    int now,next;
    int ans;
    
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&c);
    
            for(int i=0; i<n; i++)
                scanf("%d",&s[i]);
    
            now=0;
            next=1;
            bite=n+5;
            left=n;
    
            while(left&&bite)
            {
                if(s[now]>0)
                {
                    s[now]-=c;
                    if(s[now]<=0)
                    {
                        next=-next;
                        left--;
                    }
                    bite--;
                    ans=now;
                }
                now=(now+next+n)%n;
            }
            printf("%d
    ",ans+1);
        }
        return 0;
    }
  • 相关阅读:
    传参问题-HttpMessageNotReableException
    排序03-简单排序法
    排序02-直接插入排序法
    排序01-冒泡排序法
    书摘
    CS229
    SLAM学习笔记
    形态学图像处理
    SLAM学习笔记
    SLAM学习笔记
  • 原文地址:https://www.cnblogs.com/flipped/p/5188750.html
Copyright © 2011-2022 走看看