样例没过求调
查看原帖
样例没过求调
867904
xinlong666楼主2024/6/7 20:06
#include<bits/stdc++.h>
using namespace std;
#define int long long
double ci[111][5][2];
double mo[111];
double lu[111][5][111][5];
double qz(double a,double b,double c,double d){
	return sqrt((a-c)*(a-c)+(b-d)*(b-d));
}
double qzz(int a,int b,int c,int d){
	return qz(ci[a][b][0],ci[a][b][1],ci[c][d][0],ci[c][d][1]);
}
signed main (){
	ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
    int n;
    cin >> n;
    while(n--){
    	int s,t,a,b;
    	cin >> s >> t >> a >> b;
    	for (int i = 1 ; i <= s ; i ++){
    		cin >> ci[i][0][0] >> ci[i][0][1];
    		cin >> ci[i][1][0] >> ci[i][1][1];
    		cin >> ci[i][2][0] >> ci[i][2][1];
    		cin >> mo[i];
    		if(qzz(i,0,i,1)>qzz(i,0,i,2)){
    			if(qzz(i,0,i,1)>qzz(i,1,i,2)){
    				ci[i][3][0] = ci[i][0][0]-(ci[i][1][0]-ci[i][2][0]);
    				ci[i][3][1] = ci[i][0][1]-(ci[i][1][1]-ci[i][2][1]);
				}else{
					ci[i][3][0] = ci[i][1][0]-(ci[i][2][0]-ci[i][0][0]);
    				ci[i][3][1] = ci[i][1][1]-(ci[i][2][1]-ci[i][0][1]);
				}
			}else{
				if(qzz(i,0,i,2)>qzz(i,1,i,2)){
    				ci[i][3][0] = ci[i][0][0]-(ci[i][2][0]-ci[i][1][0]);
    				ci[i][3][1] = ci[i][0][1]-(ci[i][2][1]-ci[i][1][1]);
				}else{
					ci[i][3][0] = ci[i][1][0]-(ci[i][2][0]-ci[i][0][0]);
    				ci[i][3][1] = ci[i][1][1]-(ci[i][2][1]-ci[i][0][1]);
				}
			}
		}
		for (int i = 1 ; i <= n ; i ++){
			for (int j = 1 ; j <= n ; j ++){
				for (int ii = 0 ; ii <= 3 ; ii ++){
					for (int jj = 0 ; jj <= 3 ; jj ++){
						lu[i][ii][j][jj] = qzz(i,ii,j,jj)*mo[i];
					}
				}
			}
		}
		for (int i = 1; i <= n ; i++ ){
			for (int ii = 0 ; ii <= 3 ; ii ++){
				for (int j = 1 ; j <= n ; j++){
					for (int jj = 0 ; jj <= 3 ; jj ++){
						for (int k = 1 ; k <= n ; k ++){
							for (int kk = 0 ; kk <= 3 ; kk ++){
								lu[i][ii][j][jj] = min(lu[i][ii][j][jj],lu[i][ii][k][kk]+lu[k][kk][j][jj]);
							}
						}
					}
				}
			}
		}
		double ans;
		for (int i = 0 ; i <= 3 ; i ++){
			for (int j = 0 ; j <= 3 ; j ++){
				ans = min(ans,lu[a][i][b][j]);
			}
		}
		cout << fixed<<setprecision(1)<<ans << endl;
	}
	return 0;
}
2024/6/7 20:06
加载中...