Einbahnstrasse HDU - 2923 (Floyd, 注意建图)

题目描述

Einbahnstra  e (German for a one-way street) is a street on which vehicles should only move in one direction. One reason for having one-way streets is to facilitate a smoother flow of traffic through crowded areas. This is useful in city centers, especially old cities like Cairo and Damascus. Careful planning guarantees that you can get to any location starting from any point. Nevertheless, drivers must carefully plan their route in order to avoid prolonging their trip due to one-way streets. Experienced drivers know that there are multiple paths to travel between any two locations. Not only that, there might be multiple roads between the same two locations. Knowing the shortest way between any two locations is a must! This is even more important when driving vehicles that are hard to maneuver (garbage trucks, towing trucks, etc.) 

You just started a new job at a car-towing company. The company has a number of towing trucks parked at the company's garage. A tow-truck lifts the front or back wheels of a broken car in order to pull it straight back to the company's garage. You receive calls from various parts of the city about broken cars that need to be towed. The cars have to be towed in the same order as you receive the calls. Your job is to advise the tow-truck drivers regarding the shortest way in order to collect all broken cars back in to the company's garage. At the end of the day, you have to report to the management the total distance traveled by the trucks.


题目大意, 输入 A城市  (方向, 费用) B城市 , 输出最短路。 A <-X  B 表示可以从B城市到A城市 长度为X. 其他同理

思路: 先用map 讲所有城市转换成数字的形式来表示, 输入中间用string 来存, 然后读取方向, 读取长度。 最后跑一下floyd


AC code:

 #include <iostream>
 #include <cstring>
 #include <string>
 #include <map>
 using namespace std;
 #define INF 0x3f3f3f3f
 int mp[1100][1100], cnt;
 map<string, int> city;
 
 int main(void) {
    ios::sync_with_stdio(false);
    int n, c, m, time = 0;
    while (cin >> n >> c >> m && n+m+c) {
        city.clear();
        memset(mp, INF, sizeof(mp));
        string s[1100];
        cnt = 0;
        for (int i = 0; i <= c; i++) {
            cin >> s[i];
            if (!city[s[i]]) city[s[i]] = ++cnt;
        }
        string s1, s2, s3;
        for (int i = 0; i < m; i++) {
            cin >> s1 >> s2 >> s3;
            if (!city[s1]) city[s1] = ++cnt;
            if (!city[s3]) city[s3] = ++cnt;  // 将城市(字符串)转化成 编号(数字)
            
            int num = 0;
            for (int j = 0; j < s2.size(); j++) {
                if (s2[j] >= '0' && s2[j] <= '9') {
                    num = num*10 + (s2[j] - '0');  // 读取中间字符串的数字
                }
            }
            
            if (s2[0] == '<')  // 建图
                if (num < mp[city[s3]][city[s1]]) 
                    mp[city[s3]][city[s1]] = num;
            if (s2[s2.size()-1] == '>') 
                if (num < mp[city[s1]][city[s3]]) 
                    mp[city[s1]][city[s3]] = num;
        }
           
        for (int k = 1; k <= n; k++) {  //floyd
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= n; j++) {
                    if (mp[i][j] > mp[i][k] + mp[k][j])
                        mp[i][j] = mp[i][k] + mp[k][j];  
                }
            }
        }
        
        int ans = 0;
        for (int i = 1; i <= c; i++) {
            ans += mp[1][city[s[i]]] + mp[city[s[i]]][1];
        }
        cout << ++time << ". " << ans << endl;
    }
    return 0;
 }



内容概要:本文介绍了一套针对智能穿戴设备的跑步/骑行轨迹记录系统实战方案,旨在解决传统运动APP存在的定位漂移、数据断层和路径分析单一等问题。系统基于北斗+GPS双模定位、惯性测量单元(IMU)和海拔传感器,实现高精度轨迹采集,并通过卡尔曼滤波算法修正定位误差,在信号弱环境下利用惯性导航补位,确保轨迹连续性。系统支持跑步与骑行两种场景的差异化功能,包括实时轨迹记录、多维度路径分析(如配速、坡度、能耗)、数据可视化(地标注、曲线、3D回放)、异常提醒及智能优化议,并可通过蓝牙/Wi-Fi同步数据至手机APP,支持社交分享与专业软件导出。技术架构涵盖硬件层、设备端与手机端软件层以及云端数据存储,强调低功耗设计与用户体验优化。经过实测验证,系统在定位精度、续航能力和场景识别准确率方面均达到预期指标,具备良好的实用性和扩展性。; 适合人群:具备一定嵌入式开发或移动应用开发经验,熟悉物联网、传感器融合与数据可视化的技术人员,尤其是从事智能穿戴设备、运动健康类产品研发的工程师和产品经理;也适合高校相关专业学生作为项目实践参考。; 使用场景及目标:① 开发高精度运动轨迹记录功能,解决GPS漂移与断点问题;② 实现跑步与骑行场景下的差异化数据分析与个性化反馈;③ 构完整的“终端采集-手机展示-云端存储”系统闭环,支持社交互动与商业拓展;④ 掌握低功耗优化、多源数据融合、动态功耗调节等关键技术在穿戴设备中的落地应用。; 阅读议:此资源以真实项目为导向,不仅提供详细的技术实现路径,还包含硬件选型、测试验证与商业扩展思路,议读者结合自身开发环境,逐步实现各模块功能,重点关注定位优化算法、功耗控制策略与跨平台数据同步机制的设计与调优。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值