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

TCN+iTransformer时间序列预测实战:从风电功率预测到源码解析(附完整代码) 本文深入探讨了TCN与iTransformer融合模型在时间序列预测,特别是风电功率预测中的应用。通过解析iTransformer‘倒置’视角的创新架构与TCN强大的局部时序捕捉能力,文章提供了完整的融合方案设计、源码实现及实战调优经验,旨在构建更强大的下一代预测引擎。 阅读详情
描述 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];
                }
        
        }
                
}

京东豆自动领取脚本配置教程 腾讯云/阿里云服务器(Docker环境):全自动跑脚本领京豆(无需本地代理,使用加速源) 阅读详情

相关推荐

DeepL Pro免费使用技巧与API调用优化方案

机器翻译技术通过神经网络模型实现跨语言语义转换,其核心价值在于保持专业术语准确性的同时实现自然语言流畅度。现代翻译工具如DeepL采用注意力机制等深度学习技术,在医疗、法律等专业领域展现出接近人工翻译的质量。针对API调用场景,开发者可通过请求模拟实现小批量自动化处理,而文档预处理和术语库优化则能显著提升免费额度使用效率。本文重点解析如何通过字符计算优化、临时接口调用等工程实践方法,在合规前提下最大化利用免费翻译资源。

weixin_29038303的博客 265

洛谷 P1027 Car的旅行路线

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

HJ921004的博客 311

实战解析:如何用Python逆向破解FastMoss的TikTok数据加密签名(附完整代码)

本文详细解析了如何用Python逆向破解FastMoss平台的TikTok数据加密签名机制,包括MD5加密算法和JS逆向分析。通过完整的Python代码示例,帮助开发者理解签名生成原理并实现自动化请求,提升数据获取能力。

weixin_30955617的博客 557

[NOIP2001]Car的旅行路线

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

weixin_30578677的博客 172

TMS320F280039 CMD文件配置避坑指南:从.map文件看懂内存分配与溢出排查

本文详细解析了TMS320F280039芯片的CMD文件配置问题,通过.map文件分析内存分配与溢出排查。文章提供了实用的诊断技巧和解决方案,帮助开发者有效应对段溢出、地址重叠和栈堆冲突等常见问题,优化DSP程序的内存管理。

weixin_29168813的博客 443

字符集的选择

字符集的选择 一:背景介绍 DICOM特定字符集(0008,0005) 此标签获得不同的值就代表使用不同的语言进行解码。 以下为多家CT厂商的(0008,0005)取值: 字符集: unicode是字符集,ASCII、GB2312、GBK、GB18030既是字符集也是编码方式,UTF-8只是编码方式。 二:中文字符集介绍 世界通用字符集——UTF 中文字符集——GB2312、GBK、GB18030 字符集的详细介绍 一:UTF-8 程序是把一个字节一个字节的来读取,然后再根据字节中开头的bit

qq_41972968的博客 1520

Car的旅行路线(NOIP2001)

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

cggwz的信息飞船 635

链路状态路由协议 OSPF (一)

本章将会学习链路状态路由协议OSPF,理解OSPF的基本概念,工作原理,掌握OSPF配置基本命令。本章重点,OSPF的基本概念,OSPF配置。

yj11290301的博客 3475

[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

g2o&PCL 四阶多项式拟合

g2o&PCL 四阶多项式拟合

dayuhaitang1的博客 140

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 489

算法训练 Car的旅行路线

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

lyp 297

多模型机器学习生存预测分析:AUC比较、生存分层与SHAP解释

本文研究了多种机器学习模型在心力衰竭患者生存预测中的应用。通过比较逻辑回归、随机森林、XGBoost、LightGBM和梯度提升机五种模型的AUC表现,选择最优预测模型。基于最优模型的预测概率对患者进行风险分层,并使用Kaplan-Meier生存分析和log-rank检验验证分层的有效性。最后采用SHAP方法解释模型决策过程,识别关键预测因素。研究提供了从模型构建、评估到解释的完整技术流程,为临床预后预测提供了可复现的分析框架。

AI的内部世界的博客 157

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

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

xu326057825的博客 629

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NOIP初赛复习资料(全)

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

Dark White Polyphony 深白复调 3762

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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、付费专栏及课程。

余额充值