80分WA 3 4
查看原帖
80分WA 3 4
146852
RocksonLee楼主2022/3/21 21:22
#include <bits/stdc++.h>
using namespace std;

#define il inline
#define INF 0x3f3f3f3f
#define cl(a, b) memset(a, b, sizeof(a))
typedef long long ll;
typedef unsigned long long ull;

int n, now, ans = INF;

#define N 1000

int a[N];

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    //sort(a + 1, a + n + 1);
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (a[i] + 17 < a[j]) now += (a[j] - a[i] - 17) * (a[j] - a[i] - 17);
            if (a[i] > a[j]) now += (a[i] - a[j]) * (a[i] - a[j]);
        }
        ans = min(ans, now);
        now = 0;
    }
    printf("%d\n", ans);
    return 0;
}

你在解决的时候不能只考虑最低点在不在 a[i]a[i] 中挑选,如果这样就会WA 3 4 两个点

#include <bits/stdc++.h>
using namespace std;

#define il inline
#define INF 0x3f3f3f3f
#define cl(a, b) memset(a, b, sizeof(a))
typedef long long ll;
typedef unsigned long long ull;

int n, now, ans = INF;

#define N 1000

int a[N];

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    sort(a + 1, a + n + 1);
    for (int i = a[i]; i <= a[n]; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (a[j] + 17 < i) now += (i-a[j] - 17) * (i-a[j] - 17);
            if (a[j] > i) now += (a[j]-i) * (a[j]-i);
        }
        ans = min(ans, now);
        now = 0;
    }
    printf("%d\n", ans);
    return 0;
}
2022/3/21 21:22
加载中...