蓝桥杯 算法训练 Car的旅行路线

问题描述

  又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。
  那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。
  找出一条从城市A到B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。

输入格式

  的第一行有四个正整数s,t,A,B。
  S表示城市的个数,t表示飞机单位里程的价格,A,B分别为城市A,B的序号,(1<=A,B<=S)。
  接下来有S行,其中第I行均有7个正整数xi1,yi1,xi2,yi2,xi3,yi3,Ti,这当中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第I个城市中任意三个机场的坐标,T I为第I个城市高速铁路单位里程的价格。

输出格式

  共有n行,每行一个数据对应测试数据,保留一位小数。

样例输入

1
1 10 1 3
1 1 1 3 3 1 30
2 5 7 4 5 2 1
8 6 8 8 11 6 3

样例输出

47.55

数据规模和约定

  0<S<=100,

借鉴一位大佬的:

#include<bits/stdc++.h>
using namespace std;
int x[101*4],y[101*4];
double price[401][401]={0};
int value[101];
const double inf=999999;
void makesqrt(int k){       //求出第四个点 
    if(abs((x[k*4]-x[k*4+1])*(x[k*4]-x[k*4+2]))==abs((y[k*4]-y[k*4+1])*(y[k*4]-y[k*4+2]))){
        x[k*4+3]=x[k*4+1]+(x[k*4+2]-x[k*4]);
        y[k*4+3]=y[k*4+1]+(y[k*4+2]-y[k*4]);
    }
    else if(abs((x[k*4+1]-x[k*4])*(x[k*4+1]-x[k*4+2]))==abs((y[k*4+1]-y[k*4])*(y[k*4+1]-y[k*4+2]))){
        x[k*4+3]=x[k*4]+(x[k*4+2]-x[k*4+1]);
        y[k*4+3]=y[k*4]+(y[k*4+2]-y[k*4+1]);
    }
    else{
        x[k*4+3]=x[k*4]+(x[k*4+1]-x[k*4+2]);
        y[k*4+3]=y[k*4]+(y[k*4+1]-y[k*4+2]);
    }
}
int main(){
    int s,t,A,B;
    scanf("%d%d%d%d",&s,&t,&A,&B);
    for(int i=0;i<s;i++){
        scanf("%d%d%d%d%d%d%d",&x[i*4],&y[i*4],&x[i*4+1],&y[i*4+1],&x[i*4+2],&y[i*4+2],&value[i]);
        makesqrt(i);
    }
    for(int i=0;i<4*s;i++){         //price二维数组初始化 
        for(int j=0;j<4*s;j++){
            price[i][j]=inf;
            if(i==j) price[i][j]=0; 
        }
    }
    for(int i=0;i<4*s;i++){
        for(int j=0;j<4*s;j++){
            if(i/4==j/4){
                price[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])*1.0+(y[i]-y[j])*(y[i]-y[j])*1.0)*value[i/4];   //城市间的高速路 
            }else{
                price[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])*1.0+(y[i]-y[j])*(y[i]-y[j])*1.0)*t;            //不同城市飞机钱 
            }
        }
    }
    for(int b=0;b<4*s;b++){
        for(int i=0;i<4*s;i++){
            for(int j=i+1;j<4*s;j++){
                price[i][j]=min(price[i][j],price[i][b]+price[b][j]);
            }
        } 
    }
    double ans=inf;
    for(int i=(A-1)*4;i<=(A-1)*4+3;i++){
        for(int j=(B-1)*4;j<=(B-1)*4+3;j++){
            ans=min(ans,price[i][j]);
        }
    }
    printf("%.1lf\n",ans);
    return 0;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Siam-CAR(Siamese Correlation Attention Mechanism for Continuously Attention Reasoning)算法是一种计算机视觉任务的注意力机制。该算法在许多视频目标跟踪任务得到了广泛应用,例如视频目标检测和识别等。 Siam-CAR算法通过使用“Siamese”网络架构来学习目标在不同帧的特征表示。网络使用相同的参数来提取目标在不同帧的特征,并通过相关性计算来检测目标的位置。该算法还通过注意力机制来确定对目标位置的关注,从而提高了算法的准确性。 总的来说,Siam-CAR算法是一种灵活、高效和准确的视频目标跟踪方法,在许多实际应用场景得到了成功应用。 ### 回答2: Siam-CAR算法是一种用于目标跟踪的深度学习算法。它是基于孪生网络的Siamese网络架构来进行目标跟踪的。该算法结合了样本标记和在线学习,以提高目标跟踪的精确度和鲁棒性。 Siam-CAR算法的核心思想是将目标跟踪问题转化为一个二分类问题。它首先使用孪生网络分别提取模板图像和搜索图像的特征表示。其,模板图像包含初始帧的目标,而搜索图像是随后的视频帧。 然后,算法使用带有Cross-correlation操作的互相关滤波器来计算两个特征表示之间的相似度。互相关滤波器通过在模板特征表示上滑动来搜索图像的目标位置。通过计算滑动窗口与模板之间的相似度,可以确定目标的位置。 为了提高算法的鲁棒性,Siam-CAR算法引入了模板更新机制。在每个新的视频序列算法会使用模板特征表示来训练一个线性分类器,以将正负样本进行标记。然后再利用新的模板进行目标位置的跟踪。 Siam-CAR算法的优点包括:高效性、准确性和鲁棒性。它能够在较快的时间内进行目标跟踪,并且具有较低的计算复杂度。该算法在目标跟踪的挑战性数据集上取得了良好的性能,证明了它在目标跟踪任务的有效性。 总体而言,Siam-CAR算法通过利用孪生网络的特性和互相关滤波器的相似度计算方法,实现了高效、准确和鲁棒的目标跟踪。它具有广泛的应用前景,可用于视频监控、自动驾驶、智能交通等领域。 ### 回答3: Siam-CAR(Siam-Compare and Rank)算法是一种用于目标跟踪的深度学习算法。该算法主要适用于单目标跟踪任务,通过提取目标特征并将其与候选框进行比较和排序,来实现目标的准确定位和跟踪。 Siam-CAR算法主要包含以下几个步骤: 1. 提取目标特征:使用预训练的卷积神经网络(CNN)提取目标的高层特征表示。一般采用的是基于ResNet等结构的预训练模型,在目标跟踪领域进行微调得到更好的特征表示。 2. 基于特征比较:将当前帧的目标特征与候选框的特征进行比较,计算它们之间的相似度。一般使用余弦相似度或欧氏距离来度量特征之间的相似性。 3. 候选框排序:根据特征相似度,对候选框进行排序。相似度较高的候选框排在前面,较低的排在后面。 4. 目标定位和跟踪:根据排序结果,选择相似度最高的候选框作为目标的位置估计,并进行目标的跟踪。在后续的帧,将使用该估计结果进行下一帧的目标特征提取和相似度计算,从而实现连续的目标跟踪。 Siam-CAR算法相比于其他的目标跟踪算法具有较高的准确性和实时性。它通过利用深度学习的强大特征表示能力,能够更好地处理目标的形变、遮挡和光照变化等问题,同时采用候选框排序的方法,能够提高目标定位的准确性,使得跟踪结果更加稳定。因此,Siam-CAR算法在目标跟踪领域得到了广泛的应用和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值