标签:open lock block live follow back mes math printf
time limit per test : 1 second
memory limit per test : 256 megabytes
input : standard input
output : standard output
The Fair Nut lives in ?? story house. ???? people live on the ??-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 ??-th floor, but ?? hasn‘t been chosen yet. When a person needs to get from floor ?? to floor ??, elevator follows the simple algorithm: Moves from the ??-th floor (initially it stays on the ??-th floor) to the ??-th and takes the passenger.Moves from the ??-th floor to the ??-th floor and lets out the passenger (if ?? equals ??, elevator just opens and closes the doors, but still comes to the floor from the ??-th floor).Moves from the ??-th floor back to the ??-th. The elevator never transposes more than one person and always goes back to the floor ?? before transposing a next passenger. The elevator spends one unit of electricity to move between neighboring floors. So moving from the ??-th floor to the ??-th floor requires |?????| 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 ??-th floor. Don‘t forget than elevator initially stays on the ??-th floor.
The first line contains one integer ?? (1≤??≤100) — the number of floors.
The second line contains ?? integers ??1,??2,…,???? (0≤????≤100) — the number of people on each floor.
In a single line, print the answer to the problem — the minimum number of electricity units.
Examples
3 0 2 1
16
2
1 1
4
In the first example, the answer can be achieved by choosing the second floor as the ??-th floor. Each person from the second floor (there are two of them) would spend 4 units of electricity per day (2 to get down and 2 to get up), and one person from the third would spend 8 units of electricity per day (4 to get down and 4 to get up). 4?2+8?1=16
In the second example, the answer can be achieved by choosing the first floor as the ??-th floor.
枚举答案,在进行验算即可。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#define N 1001
using namespace std;
long long a[N],n,ans=0x7fffffff;
long long _abs(long long k)
{
if(k>=0) return k;
else return (0-k);
}
long long f1(long long x,long long k)
{
long long ret=_abs(x-k)+k+x-2;
ret*=(2*a[k]);
return ret;
}
int main()
{
scanf("%lld",&n);
for(long long i=1;i<=n;i++) scanf("%lld",&a[i]);
for(long long i=1;i<=n;i++)
{
long long ls=0;
for(long long j=1;j<=n;j++) ls+=f1(i,j);
if(ls<ans) ans=ls;
}
printf("%lld\n",ans);
return 0;
}
CodeForces 1084A The Fair Nut and Elevator 题解
标签:open lock block live follow back mes math printf
原文地址:https://www.cnblogs.com/zj-mrz/p/10198977.html