• 电梯问题——致敬ACM


     
    The Fair Nut and Elevator
     

     
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    The Fair Nut lives in nn story house. aiai people live on the ii-th floor of the house. Every person uses elevator twice a day: to get from the floor where he/she lives to the ground (first) floor and to get from the first floor to the floor where he/she lives, when he/she comes back home in the evening.

    It was decided that elevator, when it is not used, will stay on the xx-th floor, but xx hasn't been chosen yet. When a person needs to get from floor aa to floor bb, elevator follows the simple algorithm:

    • Moves from the xx-th floor (initially it stays on the xx-th floor) to the aa-th and takes the passenger.
    • Moves from the aa-th floor to the bb-th floor and lets out the passenger (if aa equals bb, elevator just opens and closes the doors, but stillcomes to the floor from the xx-th floor).
    • Moves from the bb-th floor back to the xx-th.
    The elevator never transposes more than one person and always goes back to the floor xx before transposing a next passenger. The elevator spends one unit of electricity to move between neighboring floors. So moving from the aa-th floor to the bb-th floor requires |ab||a−b|units of electricity.

    Your task is to help Nut to find the minimum number of electricity units, that it would be enough for one day, by choosing an optimal the xx-th floor. Don't forget than elevator initially stays on the xx-th floor.

    Input

    The first line contains one integer nn (1n1001≤n≤100) — the number of floors.

    The second line contains nn integers a1,a2,,ana1,a2,…,an (0ai1000≤ai≤100) — the number of people on each floor.

    Output

    In a single line, print the answer to the problem — the minimum number of electricity units.

    Examples
    input
    Copy
    3
    0 2 1
    output
    Copy
    16
    input
    Copy
    2
    1 1
    output
    Copy
    4
    Note

    In the first example, the answer can be achieved by choosing the second floor as the xx-th floor. Each person from the second floor (there are two of them) would spend 44 units of electricity per day (22 to get down and 22 to get up), and one person from the third would spend 88units of electricity per day (44 to get down and 44 to get up). 42+81=164⋅2+8⋅1=16.

    In the second example, the answer can be achieved by choosing the first floor as the xx-th floor.

     

    题目来源:http://codeforces.com/problemset/problem/1084/A

    其实,这个题目只要理解清楚意思很好写。

    题目大意是说:在一个n层的大楼里的住户每天要上下楼各一次,电梯每移动一层消耗一点电能,求:最少需要消耗的电能。

     

    首先,要清楚题目中的第x层是一个未知的楼层。也就是说,需要找到最优的第x层得出最后的答案。有了这样的思路,题目就很好写了。

     

    其次,注意题目本意是第x层需要返回。也就是说,每次执行上下楼层后都要返回第x层。

     

    最后,话就不多说了,暴力可以解决的问题从来不是问题,如果是问题,那就是不够暴力。代码如下:

     

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        int a[110];//存各楼层人数
        int n;//楼层数
        long long sum,ans=0x3f3f3f3f;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(int i=1;i<=n;i++)//改变x的值
        {
            sum=0;
            for(int j=1;j<=n;j++)
            {
                sum+=(abs(j-i)+abs(i-1)+abs(j-1))*2*a[j];//各次上下楼层消耗电量的和
            }
            ans=min(sum,ans);//找出最优的答案
        }
        printf("%ld
    ",ans);
        return 0;
    }

     

    感觉好水。。。

  • 相关阅读:
    iOS7.0后隐藏状态栏(UIStatusBar)
    UITableView
    UIScrollView
    [IOS]edgesForExtendedLayout、automaticallyAdjustsScrollViewInsets
    UISearchController
    App开发流程之通用宏定义及头文件
    App开发流程之Xcode配置和本地化
    App开发流程之源代码Git管理
    App开发流程之增加预编译头文件
    App开发流程之配置Info.plist文件
  • 原文地址:https://www.cnblogs.com/noback-go/p/10294395.html
Copyright © 2020-2023  润新知