80 WA 求调,应该不是精度问题
查看原帖
80 WA 求调,应该不是精度问题
1036180
ChampionCyan楼主2025/8/5 12:53
#include <bits/stdc++.h>
#define int long long
using namespace std;
const long double PI = 3.1415926535897932384626433832795;
const int MAXN = 25005, MAXA = 365;
int dp[MAXN], d[MAXA];
signed main() {
    cin.tie(0) -> sync_with_stdio(0);
    int n, a = 0, b = 0;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        string s;
        int x;
        cin >> s >> x;
        if (s[0] == 'f')
            a += x;
        else if (s[0] == 'b')
            b += x;
        else if (s[0] == 'l')
            if (x % 360)
                d[x % 360]++;
        else
            if (x % 360)
                d[360 - x % 360]++;
    }
    dp[0] = 1;
	for (int i = 0; i < 360; i++)
		while (d[i]--)
			for (int j = 20000; j >= 0; j--)
				if (dp[j])
                    dp[j + i]++;
	int minn = 2e9;
	for (int i = 1; i <= 20000; i++)
		if (dp[i])
			minn = min(minn, abs(i % 360 - 180));
    if (minn == 0) {
        printf("%d.000000\n", a + b);
        return 0;
    }
    printf("%.6Lf\n", sqrt((double)a * a + (double)b * b - 2 * (double)a * (double)b * cos((double)(180 - minn) * PI / 180)));
    return 0;
}
2025/8/5 12:53
加载中...