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

基于非接触式微波雷达设计的跌倒检测预警系统【短信报警】 本项目选择基于非接触式微波雷达的跌倒检测预警装置作为技术核心,采用云帆瑞达的R60AFD1跌倒检测模组。这一模组能够根据人体的运动变化,如速度、距离和姿态等特征,判断是否发生跌倒,并可以持续监控老年人是否处于危险状态。此外,本项目还结合4G通信技术,通过Air724UG模块实现短信报警功能,一旦检测到跌倒事故,系统将自动通过4G网络向紧急联系人发送短信报警,及时通知亲属或医护人员进行救援。 阅读详情
描述 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];
                }
        
        }
                
}

作为一名爬虫人如何实现千万级数据爬取? 爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro 阅读详情

相关推荐

别再只盯着MES了!半导体/面板厂CIM系统全家桶(EAP/YMS/SPC)保姆级入门指南

本文深入解析半导体制造中的CIM系统,涵盖EAP、YMS和SPC等关键子系统的协同工作。通过实战案例和技术细节,展示如何利用CIM系统提升生产效率、良率管理和设备维护,为半导体/面板厂提供全面的实施指南和优化策略。

weixin_33693070的博客 464

洛谷 P1027 Car的旅行路线

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

HJ921004的博客 311

基于LORA的双机通信的智能农业系统

通过LoRa模块与主机进行通信,监测环境中的温度、湿度、土壤湿度和光照强度等参数,并根据预设的自动控制逻辑或者手动指令控制继电器开关,从而调节风扇、加热器、水泵、喷雾器和灯光等设备,为植物提供适宜的生长环境。使用的Lora是大夏龙雀的感觉这个是我使用过的Lora里面最好用的,因为不用设置频道就可以直接透明传输,使用起来得心应手。就像两个单片机直接串口通信一样,缺点是异步串行,不能同时进行接收和发送。继电器灯亮模拟打开对应的风扇、水泵、灯、喷雾、加热。1.使用温度传感器测当前环境的温湿度。

ssjsjss的博客 1739

[NOIP2001]Car的旅行路线

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

weixin_30578677的博客 172

青龙人形机器人硬件平台设计全解析:从构型到控制系统的实战指南

本文深度解析了青龙人形机器人硬件平台的设计全流程,从需求分析、构型设计到核心系统实现。文章详细阐述了其43个自由度的仿生构型、高动态性下肢设计、灵巧作业系统以及分布式控制架构,并探讨了旋转关节与直线关节等关键技术选型,为开发者提供了从理论到实践的完整硬件设计指南。

weixin_29248313的博客 382

72-dify案例分享-揭秘!如何用 Dify 实现多语言 PDF 文档原格式翻译

本文围绕 Dify 1.6 + 版本,演示搭建 PDF 文档翻译 Agent:配置 MCP 服务、构建 Agent 并以 URL 传文件测试,实现高效翻译,展现 MCP 跨工具复用与简化集成的优势,助力 AI 应用开发。

个人技术 2286

Car的旅行路线(NOIP2001)

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

cggwz的信息飞船 635

搬运机器人系列编程:KUKA KR QUANTEC_(2).KUKA KRL语言编程基础

定义一个函数END!调用函数PRINT "结果: ", result!定义一个过程PRINT msgEND!调用过程printMessage("欢迎使用 KUKA 机器人")!定义搬运零件的起始位置和目标位置!定义焊接路径的各个点!定义喷涂路径的各个点KUKA Robot Language (KRL) 是一种专门为工业机器人设计的编程语言,具有结构化编程、丰富的库函数、实时性以及集成性等特点。

zhubeibei168的博客 1246

[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

Python爬虫实战:东方财富股吧与雪球舆情数据实时爬取与情绪指标挖掘

本文详细介绍如何使用Python爬虫技术实时爬取东方财富股吧和雪球平台的讨论数据,结合股价波动构建情绪分析指标。我们将使用最新的异步爬虫技术、自然语言处理方法和可视化工具,为量化交易提供数据支持。文章包含完整的代码实现和技术细节,适合有一定Python基础的读者学习。

2201_76125261的博客 1224

YOLO蒸馏原理篇之---MGD、CWD蒸馏

本文详细介绍了特征蒸馏中的两种经典有效方法,MGD和CWD蒸馏

qq_41920323的博客 3241

算法训练 Car的旅行路线

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

lyp 297

【Unity引擎技术整合】 Unity学习路线 | 知识汇总 | 持续更新 | 保持乐趣 | 共同成长

本文对Unity引擎的知识进行了一个整理总结,基本包含了Unity中大部分的知识介绍。 网上也有很多Unity相关的学习资料,但大多数都不成体系,学起来的时候难免会东奔西走的摸不着头脑。 本文整理的多数文章都是有对应的系列性文章专栏,可以更方便的进行系统学习相关知识体系。

努力前行,总会成为自己心中的那道光 15万+

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

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

xu326057825的博客 629

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NOIP初赛复习资料(全)

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

Dark White Polyphony 深白复调 3762

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

余额充值