zoukankan      html  css  js  c++  java
  • 普及C组第一题(8.1)

    1999. 【2015.8.6普及组模拟赛】Wexley接苹果(apple)

    题目:

     Wexley最近发现了一个古老的屏幕游戏。游戏的屏幕被划分成n列。在屏幕的底端,有一个宽为m列的篮子(m<n)。在游戏过程中,Wexley能左右移动这个篮子,            Wexley的操作很犀利,移动是瞬间完成的,但是篮子必须始终都在屏幕中。 苹果从屏幕的顶端落下,每个苹果从n列中的某一列顶端掉落,垂直掉落到屏幕的底端。每个苹果总是在上一个苹果掉落到底端的时候开始掉落。Wexley想要通过移动篮子来接住所有的苹果。起先,篮子在屏幕的最左端。
             求出Wexley要接住所有的苹果所需移动的最短距离。 

    输入:

    第一行,两个整数n、m,如题所述
    第二行,一个整数k,表示掉落的苹果总数
    接下来k行,每行一个整数Ai,表示每个苹果掉落的位置

    输出:

    一行一个整数,表示所需移动最短距离

    样例输入

    Sample Input1:
    5 1
    3
    1
    5
    3

    Sample Input2:
    5 2
    3
    1
    5
    3

     

    样例输出

    Sample Output1:
    6

    Sample Output2:
    4

     

    数据范围限制

    【数据范围】
    对于30%的数据,m<n<=5,k<=10
    对于100%的数据,1<=m<n<=10,1<=k<=20

    思路:

    首先是从左往右走,因为是瞬间移动,我们只需要找出篮子的范围,对与超出范围的目标判断是在左边还是右边然后将篮子移动,简单的模拟题,上代码。

    CODE

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int n,m,k,ans=0,way;
    int a[21];
    int main()
    {
        freopen("apple.in","r",stdin);
        freopen("apple.out","w",stdout);
        cin>>n>>m>>k;
        way=m;
        for(int i=1;i<=k;i++)
        cin>>a[i];
        for(int i=1;i<=k;i++)
        {
            if(a[i]>way)
            {
                ans=a[i]-way+ans;
                way=a[i];
                cout<<a[i]<<" "<<way<<" "<<ans<<endl;
            }
            else if(a[i]<way+1-m)
            {
                ans=way-m+1-a[i]+ans;
                way=a[i];
                cout<<a[i]<<" "<<way<<" "<<ans<<endl;
            }
        }
        cout<<ans;
        return 0;
    }

    完结撒花!!!

  • 相关阅读:
    Oracle存储过程格式
    Parallel并行运算实例
    唐让的领航少年
    株洲县阳光三农网
    株洲县招商网
    利用css新属性appearance优化select下拉框
    谈谈我的出差感想
    颜色表及html代码
    jquery中DOM的操作方法
    HTML DOM的nodeName,nodeValue,nodeType介绍
  • 原文地址:https://www.cnblogs.com/YYCether666/p/11281903.html
Copyright © 2011-2022 走看看