笑死
  • 板块灌水区
  • 楼主vegetable_ste
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/11/20 19:44
  • 上次更新2023/11/3 23:56:41
查看原帖
笑死
305002
vegetable_ste楼主2021/11/20 19:44

为什么这个随便写的东西有12分(T3)

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
#define mp make_pair
typedef long long ll;
template <class T>
T read(T& x) {
	x = 0; T sign = 1, ch = getchar();
	while(!isdigit(ch) && ch != '-') ch = getchar();
	if(ch == '-') { sign = -1, ch = getchar(); }
	while(isdigit(ch)) {
		x = (x << 1) + (x << 3) + ch - '0';
		ch = getchar();
	}
	x *= sign;
	return x;
}
const int N = 10010;
ll n, a[N], b[N];
double aver = 0.0, ans = 0.0, minn = 1e10;
set<double> st;
int main() {
//	freopen("variance.in", "r", stdin);
//	freopen("variance.out", "w", stdout);
	read(n);
	for(int i = 1; i <= n; i ++ ) read(a[i]);
	while(1) {
		memcpy(b, a, sizeof a);
		for(int i = 2; i <= n - 1; i ++ )
			a[i] = a[i - 1] + a[i + 1] - a[i];
		aver = 0.0, ans = 0.0;
		for(int i = 1; i <= n; i ++ ) aver += a[i];
		aver /= n;
		for(int i = 1; i <= n; i ++ )
			ans += (a[i] - aver) * (a[i] - aver);
		ans *= n;
		#ifdef debug
		for(int i = 1; i <= n; i ++ ) cout << a[i] << " ";
		cout << endl << ans << endl << endl;
		#endif
		if(abs(minn - ans) <= 1e-6) break;
		minn = min(minn, ans);
	} 
	printf("%.0lf", minn);
	return 0;
}
2021/11/20 19:44
加载中...