20ptsWA俩点求调+玄关
查看原帖
20ptsWA俩点求调+玄关
723205
xjsmsms楼主2024/5/4 19:41

玄关

#include <iostream>
#include <cmath>
#include <limits>
#define DB double
#include <iostream>
using namespace std;

const int N = 1e4+10;


DB a(DB x1, DB y1, DB x2, DB y2, DB x3, DB y3) {
    return 0.5 * abs(x1*(y2 - y3) + x2*(y3 - y1) + x3*(y1 - y2));
}
DB f(DB x1, DB y1, DB x2, DB y2, DB x3, DB y3, DB p) {
    DB x = (1 - p) * x1 + p * x2, y = (1 - p) * y1 + p * y2, z = (1 - p) * x2 + p * x3, w = (1 - p) * y2 + p * y3, v = (1 - p) * x3 + p * x1, u = (1 - p) * y3 + p * y1;
    return a(x, y, z, w, v, u);
}

signed main(void){
	DB l, r, x1, y1, x2, y2, x3, y3;
    cin >> l >> r >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
    DB m = numeric_limits<DB>::infinity(), p = 0;
    for(p = l; p <= r; p+=(r-l)/500){
        DB k = f(x1, y1, x2, y2, x3, y3, p);
		
        if (k < m) m = k;
    }
    cout.precision(15);
    cout<<m<<endl;
    return 0;
}
2024/5/4 19:41
加载中...