眼瞎 求解
  • 板块题目总版
  • 楼主Deltary_
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/5/10 17:20
  • 上次更新2023/10/23 16:10:47
查看原帖
眼瞎 求解
831011
Deltary_楼主2023/5/10 17:20
#include <bits/stdc++.h>
using namespace std;
long long n,h[500],ans,point=1;
//开数组,不解释

int main(){
   cin >> n;
   for(int i=1;i<=n;i++)cin >> h[i];
   sort(h,h+n+1);//排升序
   int l=0,r=n;//初始化两个游标
   while(r>l){ //如果游标相等或者左边的游标更小那就退出
       ans+=pow(h[r]-h[l],2);//计算跳一次后增加消耗的体力值
       l++;
       ans+=pow(h[l]-h[r],2);
       r--;//循环一次之后发现,回到了原来的样子,不过问题规模缩小了,要考虑的n少了两个
     
   }
   cout << ans;
   return 0;
}
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
namespace co7{
	int dis(int a,int b){
		return (a-b)*(a-b);
	}
}
int main(){
	int n,h[314],ans=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&h[i]);
	sort(h+1,h+n+1);
	int i=1,j=n;
	while(j>i){
		ans+=co7::dis(h[i],h[j]);
		++i;	
		ans+=co7::dis(h[i],h[j]);
		--j;
	}
	cout<<ans<<endl;  
	return 0;
}

上面是题解,下面是我的代码。

数据范围检查过没有问题, while 那一段中间的函数也没有问题,求助。

看两节课了还没看出来……眼睛已经瞎了

2023/5/10 17:20
加载中...