洛谷-跳跳!

這題非常水…

貪心策略:

每次都跳到離你所在位置的最遠距離(開始時在0的位置),這樣平方後數會最大,結果也就最大。

注意:

1.此題要開long long ,否則只有50分(窩嘗試過了QwQ)

2.不用考慮距離爲負數,平方後負數會變爲整數

其餘見註釋~~

關愛生命,遠離抄襲:

#include <bits/stdc++.h>
using namespace std;
int a[305],vis[305];//數組大小>300
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)	
		cin>>a[i];//輸入
	sort(a+1,a+n+1);//排序
	int now=0;//最開始在0的位置 now 代表當前位置
	long long ans=0;//三年OI一場空,不開long long見祖宗
	for(int i=1;i<=n;i++) 
	{
		int c=-1,w;
		for(int j=1;j<=n;j++)
		{
			if(!vis[j])
				c=max(abs(a[j]-now),c);//判斷哪裏離當前位置最遠
		}
		for(int j=1;j<=n;j++)//找對應的位置
		{
			if(abs(a[j]-now)==c)//找到了....
			{
				vis[j]=1;//注意!這裏是J
				w=a[j];
				break;//找到了便跳出循環
			}
		}
		ans+=(long long)(w-now)*(w-now);//強制轉換爲long long類型
		now=w;//更新當前在的位置
	}
	cout<<ans;//完美解決QAQ
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章