题解 CF178A1【Educational Game】
概述
题号 | 难度 | \(AC\)时间及记录 |
---|---|---|
\(\texttt{CF178A1}\) | \(\texttt{洛谷难度:暂无评定}\) | \(\texttt{On 2021/03/16}\) |
解析
这是一道简单题。
题意不难理解。
我们考虑暴力。
\(P.S. \huge\texttt{Don't use long long.}\)
不用开 \(long\ long\) 啦!
最暴力的办法,枚举一下每个数要移到哪里去。
用二进制的方法计算代价。
不难算出最小答案。
因为数据小,所以我们打了一个 \(\mathcal{O(n^3logn)}\),\(AC\) 了。
代码
/*
Author:Xsmyy
Problem:CF178A1
Date:2021/03/16
*/
#include<bits/stdc++.h>
#define BetterIO ios::sync_with_stdio(false)
using namespace std;
int N;
int Dp[1001];
int Array[1001];
inline int Cut(int X)
{
return X?Cut(X&(X-1))+1:0;
}
int main(void)
{
BetterIO;
#ifndef ONLINE_JUDGE
freopen("SampleIN.in","r",stdin);
#else
#endif
register int i,j,k;
cin>>N;
for(i=1;i<=N;i++)cin>>Array[i];
for(i=1;i<N;i++)
{
register int Ans;
Ans=0;
for(j=1;j<=N;j++)Dp[j]=2147483647;
for(j=1;j<=i;j++)for(k=i+1;k<=N;k++)Dp[j]=min(Dp[j],Cut(k-j));
for(j=1;j<=i;j++)Ans+=Dp[j]*Array[j];
cout<<Ans<<endl;
}
return 0;
}
不要妄图追上西坠的太阳,而是要在黎明前就等着它!