VIJOS P1119 (NOIP2001 Problem4):Car的旅行路线 Accepted

智能车图像处理22-进阶篇14--小s的判断 这篇文章中主要讲述智能车图像处理中 : 小s的判断方法。 阅读详情
描述 Description  
    又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。
  那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。找出一条从城市A到B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。
   
   
 输入格式 Input Format 
    第一行有四个正整数s,t,A,B。S(0<S<=100)表示城市的个数,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个城市高速铁路单位里程的价格。
   
   
 输出格式 Output Format 
  输出最小费用(结果保留两位小数)

 

最短路问题,用Dijkstra算法可以完美解决。

难点在于建图。

假设未知坐标为p4(x4,y4),已知坐标分别是p1(x1,y1) p2(x2,y2) p3(x3,y3)

先根据垂直向量积为零判断每个矩形缺失的坐标位置,如果p1是p4的对角,则

(x3-x1)(x2-x1)+(y3-y1)(y2-y1)=0

由中点公式易知

x4=x3+x2-x1

y4=y3+y2-y1

下面可以开始构图了。

我构图的方案是以城市为单位,先计算内部火车线路之间的边权(火车价格*距离),然后计算该城市各机场与其他城市每一个机场之间的边权(飞机单价*距离)。这样完成以后就得到一张稠密的无向图。剩下的工作就是最短路径的标程了。

还值得注意的一点是,Dijkstra开始的时候应该把起始城市的4个机场最短距离都设为0。

 

#include<stdio.h>
#include
<math.h>
#include
<stdbool.h>
#define BIG 999999.0

void Dijkstra(void);
float dist(float x1,float y1,float x2,float y2);
void construct(void);

typedef 
struct
{
        
float x,y;
}
Point;
Point ct[
100][4];
int rail[100];
int s,t,a,b;
float dis[100];
float g[400][400];

int main(void)
{
        
int i,j,k;
        
float answer=BIG;
        FILE 
*fin=stdin; 
        fscanf(fin,
"%d %d %d %d ",&s,&t,&a,&b);
        
for(i=0;i<s;i++) 
                fscanf  ( 
                        fin,
"%f %f %f %f %f %f %d ",
                        
&ct[i][0].x,&ct[i][0].y,
                        
&ct[i][1].x,&ct[i][1].y,
                        
&ct[i][2].x,&ct[i][2].y,
                        
&rail[i] 
                        );
        construct();
//构图 
        Dijkstra();
        
for (i=0;i<4;i++){
                
if(dis[(b-1)*4+i]<answer) 
                answer
=dis[(b-1)*4+i];
        }

        printf(
"%.2f ",answer);
        
return 0;
}

void construct(void)
{
        
int i,j,k,l;
        
for (i=0;i<s;i++){ //计算第四个点的坐标 
                if((ct[i][1].x-ct[i][0].x)*(ct[i][2].x-ct[i][0].x)
                
+(ct[i][1].y-ct[i][0].y)*(ct[i][2].y-ct[i][0].y)==0){
                        ct[i][
3].x=ct[i][2].x+ct[i][1].x-ct[i][0].x;
                        ct[i][
3].y=ct[i][2].y+ct[i][1].y-ct[i][0].y;
                }
else if((ct[i][0].x-ct[i][1].x)*(ct[i][2].x-ct[i][1].x)
                
+(ct[i][0].y-ct[i][1].y)*(ct[i][2].y-ct[i][1].y)==0){
                        ct[i][
3].x=ct[i][2].x+ct[i][0].x-ct[i][1].x;
                        ct[i][
3].y=ct[i][2].y+ct[i][0].y-ct[i][1].y;
                }
else if((ct[i][0].x-ct[i][2].x)*(ct[i][1].x-ct[i][2].x)
                
+(ct[i][0].y-ct[i][2].y)*(ct[i][1].y-ct[i][2].y)==0){
                        ct[i][
3].x=ct[i][1].x+ct[i][0].x-ct[i][2].x;
                        ct[i][
3].y=ct[i][1].y+ct[i][0].y-ct[i][2].y;
                }

        }

        
for(i=0;i<s;i++){//以城市为单位构图 
                for(j=0;j<4;j++)//城市内部 
                        for(k=0;k<4;k++)
                                g[
4*i+j][4*i+k]=
                                rail[i]
*dist(ct[i][j].x,ct[i][j].y,ct[i][k].x,ct[i][k].y);
                
for(j=0;j<s;j++){//城市之间 
                        if(j==i)continue;
                        
for(k=0;k<4;k++)
                                
for(l=0;l<4;l++)
                                        g[
4*i+k][4*j+l]=
                                        t
*dist(ct[i][k].x,ct[i][k].y,ct[j][l].x,ct[j][l].y);
                }

        }

}

float dist(float x1,float y1,float x2,float y2)
{
        
return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}

void Dijkstra(void)
{
        
int i,j;
        
int min=BIG,minn;
        
bool vis[100];
        memset(vis,
0,sizeof(vis));
        
for(i=0;i<s*4;i++)
                dis[i]
=BIG;
        dis[a
-1]=dis[a]=dis[a+1]=dis[a+2]=0;
        
for(i=0;i<s*4;i++){
                min
=BIG; 
                
for(j=0;j<s*4;j++){
                        
if(!vis[j] && dis[j]<min){
                                min
=dis[j];
                                minn
=j;
                        }

                }

                vis[minn]
=true; 
                
for(j=0;j<4*s;j++){
                        
if(min+g[minn][j]<dis[j]) 
                                dis[j]
=dis[minn]+g[minn][j];
                }
        
        }
                
}

使用STM32制作智能窗帘控制 以上就是一个简单的基于STM32的智能窗帘控制代码案例。通过感知光线强度和控制步进电机的旋转,我们可以实现智能窗帘的自动开启和关闭。通过定时器的中断来控制步进电机的旋转,从而实现窗帘的开启和关闭动作。最后,我们需要实现主函数和中断函数。在主函数中,我们需要初始化硬件资源,然后进入一个无限循环来不断检测光敏电阻的值,并根据其值来控制窗帘的开启和关闭。接下来,我们需要编写功能函数,用于控制窗帘的开启和关闭。然后,我们需要配置STM32开发环境,并创建一个新的工程。接下来,我们初始化相关的硬件资源。 阅读详情

相关推荐

Cadence笔记--原理图导入PCB

根据PCB尺寸画PCB外观尺寸,这里注意X\Y不能超过指定的区域,X\Y的最大值在setuo的grids里设置,画完后保存并关闭工程然后重新打开(不理解为何)由于只画了一个PMU6050,所以这里只有一个器件。工程选择board,选择存储路径和名称。6、重新网格导入,保证网表导入无误;注意网表保存的路径。

weixin_51418325的博客 1958

洛谷 P1027 Car的旅行路线

P1027 Car的旅行路线 题目描述 又到暑假了,住在城市AA的CarCar想和朋友一起去城市BB旅游。她知道每个城市都有44个飞机场,分别位于一个矩形的44个顶点上,同一个城市中22个机场之间有11条笔直的高速铁路,第II个城市中高速铁路了的单位里程价格为T_iTi​,任意两个不同城市的机场之间均有航线,所有航线...

HJ921004的博客 311

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4500

[NOIP2001]Car的旅行路线

题目描述 Description 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两 个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。 那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这...

weixin_30578677的博客 172

从零到一:树莓派上的YOLO目标检测实战指南

本文详细介绍了如何在树莓派上部署和优化YOLO目标检测模型,从硬件选型到系统配置,再到模型转换与推理优化。通过对比不同树莓派型号的性能差异,提供实用的配置方案和代码示例,帮助开发者快速实现高效的边缘计算视觉系统。特别推荐使用ONNX格式进行模型转换,以提升在树莓派上的推理效率。

weixin_29046035的博客 1063

java实现mavlink协议解析与封包上传数据,实现mavlink数据交互,附带代码、详解

本篇文章介绍了使用java来进行mavlink协议解析,封包与解包的过程,并附带源码供大家使用。MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)或云端服务器之间通讯,以及无人飞行器之间通讯最常用的协议。它已经在PX4、APM、PIXHAWK和Parrot AR.Drone飞控平台上进行了大量测试。

qq_30279827的博客 1449

Car的旅行路线(NOIP2001)

这里写链接内容 这里写链接内容 今天,是个重大一天,因为从今天起,为了大家有更好的体验,我将对我的题解进行全新改版!! (不满的lovechq:你不就还有5天就去备战高考了吗?现在改版有啥用? 来自cgg的答复:虽然,在过几天,我会和大家依依不舍地道别,因为我真的要去备战高考了,但是明年暑假我会强势回归的!请各位放心) 知识点 (cgg解释:这里是为了让大家看到此题涉及的知识点,可...

cggwz的信息飞船 635

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

[Wikioi 1041][NOIP 2001提高组]Car的旅行路线(疑难题)

#include #include #include #include #include #define INF 10000000 #define CTOA(x) (((x-1)<<2)+1) #define DISTANCE(x1,y1,x2,y2) ((double)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))) //自定义宏,开根号操作

某沙茶的OI代码库 3462

YOLOv12改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv12的模型配置文件在中,里面包含yolov12的以及的不同大小的模型,本文将详细介绍一下YOLOv12模型文件中各参数的含义。

Limiiiing的博客 3275

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+

算法训练 Car的旅行路线

算法训练 Car的旅行路线 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 条笔直的高速铁路,第I个城市中高速铁路的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。找出一条从城市A到B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。 输入格式  ...

lyp 297

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

codevs 1041 Car的旅行路线 题解报告

噫,继续我的刷题路。。。题目描述 Description 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不

xu326057825的博客 629

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

USACO Training:Packing Rectangles (IOI95) Accepted

Packing RectanglesIOI 95  The six basic layouts of four rectangles Four rectangles are given. Find the smallest enclosing (new) rectangle into which these four may be fitted without overlapping. By sm

Dark White Polyphony 深白复调 5124

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NOIP初赛复习资料(全)

找这点东西可真不容易。。。这一份是比较系统全面地noip初赛资料了。初赛不过肯定是遭人BS地!不过过分准备同样会遭人BS啊。。。点击下载NOIP初赛复习资料这还有一份OI Store的模拟题(C)及答案,想的真是周到阿

Dark White Polyphony 深白复调 3762

VIJOS p1023 Victoria的舞会3 终于AC了!!!

图论一直以来都很弱,又不懂什么最小点基(实现方法)……AC的时候……真爽啊。。。。。 Victoria的舞会3 Victoria的舞会 系列        

Dark White Polyphony 深白复调 1841

USACO The Castle Eventually Accepted

一个简单的floodfill花了几个晚上来调试,数据几乎是一组一组过的,各种各样稀奇古怪的bug都出来了……狂汗!不过终于……hoho~思路就是floodfill每一个未访问的格子,fill过程中顺便标号(房间号,同时也代表该格已访问过),每次队列空了(也就是访问完了一个房间)返回房间面积。记录最大的面积。然后从最西南格子开始考察拆掉墙(东或北面)以后的面积(墙两侧格子所在房间之和),记下

Dark White Polyphony 深白复调 1742

USACO preface 序言页码 ACed

不明白为什么USACO改序之前把它放在DP的section里,肯定是因为我太菜了,嗯。不过这道题既然被菜鸟我做出来,说明把它放得太靠后不是什么明智的做法……本体关键是弄懂题目给出的罗马数字表示法,通过观察可以发现每一位数字的表示是独立的,比如例中的99就是XC (十位)+ IX(个位)。有了这个基础,解题就容易了。不妨把罗马数字按对应阿拉伯数字位数分成IV/XL/CD/M这样4组,然后

Dark White Polyphony 深白复调 1636

USACO Prime Cryptarithm Accepted

传说这道题容易超时,结果一遍就过了,意外^_^。USACO Training Grader Results for DaN marner [danmarn1]TASK: crypt1LANG: CCompiling...Compile: OKExecuting... Test 1: TEST OK [0.004 secs] Test

Dark White Polyphony 深白复调 1625

TOJ 1072 输出你自己的代码 Accepted

搜了一下,发现思路和别人的很像,就是用一个字符串常量输出,同时要注意处理里面的特殊字符。// TOJ1072 输出你自己的代码 Coded by DaNmarner// 注意!不包括注释!末尾要留一个空行!#include stdio.h>char l=/,y=",c= ;char *s="#include %cchar l=%c%c,y=%c%c,c=%

Dark White Polyphony 深白复调 1497

VIJOS P1234 口袋的天空 Accepted

思路很简单,用kruskal算法生成最小生成森林。kruskal用并查集实现。用堆优化一下才能过。 #includestdio.h>//disjointsetint rank[1001],set[1001];void Makeset(int x)...{        set[x]=x;        rank[x]=0;}int Find(int x)...{        if(s

Dark White Polyphony 深白复调 1225

TOJ 1032 等式问题 Accepted

题很简单,我用的是搜索:P   其实没多少好说的,穷举下 +/-/空白 这三种情况,然后算出来和输入比较就行。计算的时候我想了个虚拟栈的办法,虚拟一个栈顶top,栈顶元素的符号op,初始状态栈从顶到底盛着1-9这9个元素,碰到空白就让栈顶和它下面那个元素融合(也就是把相邻的数连起来),每碰到 +/- 时就把top

Dark White Polyphony 深白复调 1113

AI 原型设计怎么做?以 WorkBuddy 设计旅游景区 APP 为例

本文以一个旅游景区 APP 原型为例,拆解 AI 原型设计中的需求梳理、页面交互与开发验收。重点讨论如何在协作工具中整理用户任务,并将可编辑原型用于评审和后续实现。

2501_94162613的博客 152

智能旅游行程规划Agent系统

本项目基于Vue 3与Flask构建,集成Neo4j知识图谱与GraphRAG智能问答,实现旅游规划、知识服务与多模态大模型应用。支持目的地、酒店、交通、行程管理及攻略资料多格式处理,具备图谱可视化、智能咨询、会话历史与模型配置等功能,适用于个人旅行规划、教学展示与科研实践。

2301_77366341的博客 241
上一篇: 超人归来:VIM+GCC+GDB杀入Win CMD
下一篇: 背包问题
DaNmarner
博客等级 码龄21年 27粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值