POJ 1124 Oh, Those Achin' Feet

【MFRC522】STM32与MFRC522的SPI通信优化及常见问题解析 本文深入解析了STM32与MFRC522进行SPI通信的优化方法与常见问题。从基础的硬件连接到SPI时序优化,再到关键的寄存器配置(如RFCfgReg设为0x4F以提升读卡稳定性),文章提供了详细的调试技巧和实战排坑指南,帮助开发者实现稳定高效的IC读卡应用。 阅读详情

http://acm.pku.edu.cn/JudgeOnline/problem?id=1124

/*
    利用DFS回溯求所有最短路径(最短路径可能不止一条)
    行走的时候只有当下一个点是终点或者下一点是街道时才可以继续走到下一个点
    注意剪枝
    注意entrance/exit不参与load,只有街道参与load,即最终结果里凡是非街道结点都要输出0
    */
#include <iostream>
#include <map>
#include <string>
#include <memory>
#define MAX_N 20
#define QSIZE 500
using namespace std;

char graph[MAX_N + 1][MAX_N + 1]; //记录输入的图
double res[MAX_N + 1][MAX_N + 1]; //记录最终的结果,即每个街道的load值
int pre[MAX_N + 1][MAX_N + 1][2]; //记录每个结点前驱的坐标
int vTime[MAX_N + 1][MAX_N + 1];  //记录在找一对entrance和exit之间最短路径时,路径上每个点出现的次数,用于计算每个点需要分到的load值
int pos[MAX_N + 1][2];            //记录每个entrance/exit的坐标,index是:当前字符 - 'A'
bool v[MAX_N + 1][MAX_N + 1];     //DFS时标识这个点是否被访问过,访问时置1,回溯时置0


int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; //遍历的四个方向

map<string, int> load;            //记录输入里每个entrance/exit对的load总和,对于AB 2 BA 1,要把BA转换成AB,所以最终是AB 3
map<string, int>::iterator itr;

int rowN, colN, srcR, srcC, destR, destC, pathNum, minLen; //计算时用到的相关变量

string temp;

//判断当前点是否可走
bool inRange(int curR, int curC)
{
    char type = graph[curR][curC];
    //是否在坐标轴内
    bool t1 = (curR >= 1 && curR <= rowN && curC >= 1 && curC <= colN);
    //是否是终点或者是街道,否则不可走
    bool t2 = ((curR == destR && curC == destC) || type == '.');
    return t1 && t2;
}
void dfs(int curR, int curC, int len)
{
    int d, nextR, nextC, tR, tC;
    if(curR == destR && curC == destC)
    {
        //超过了当前最短的,直接忽略掉
        if(len > minLen)
            return;
        //新的路径更短
        else if(len < minLen)
        {
            //重置数据
            memset(vTime, 0, sizeof(vTime));
            pathNum = 1;
        }
        //路径长度和最优的相等,则路径数增加1
        else
            pathNum++;
        minLen = len;
               
        //遍历路径,为每个节点的load比重加1
        nextR = pre[curR][curC][0];
        nextC = pre[curR][curC][1];
        while(!(nextR == srcR && nextC == srcC))
        {
            vTime[nextR][nextC]++;
            tR = pre[nextR][nextC][0];
            tC = pre[nextR][nextC][1];
            nextR = tR, nextC = tC;
        }
        return;
    }
    //剪枝
    if(len >= minLen)
        return;
   
    //遍历四个方向
    for(d = 0; d < 4; d++)
    {
        nextR = curR + dir[d][0], nextC = curC + dir[d][1];
        //判断是否可走
        if(v[nextR][nextC] || !inRange(nextR, nextC)) continue;
        v[nextR][nextC] = true;
        pre[nextR][nextC][0] = curR, pre[nextR][nextC][1] = curC;
        //继续走
        dfs(nextR, nextC, len + 1);
        //回溯
        v[nextR][nextC] = false;
       
    }
}

//利用DFS遍历所有的entrance/exit对找出所有的最短路径,并按照比例对相同的最短路径上的几点进行load均分
void travel()
{
    int lVal, i, j;
    for(itr = load.begin(); itr != load.end(); itr++)
    {
        //相关初始化
        temp = itr->first;
        lVal = itr->second;
        srcR = pos[temp[0] - 'A'][0], srcC = pos[temp[0] - 'A'][1];
        destR = pos[temp[1] - 'A'][0], destC = pos[temp[1] - 'A'][1];
        memset(v, 0, sizeof(v));
        memset(vTime, 0, sizeof(vTime));
        pre[srcR][srcC][0] = -1;
        v[srcR][srcC] = true;
        pathNum = 0;
        minLen = INT_MAX;

        //遍历
        dfs(srcR, srcC, 0);

        //按照各点的比重均分
        for(i = 1; i <= rowN; i++)
        {
            for(j = 1; j <= colN; j++)
                res[i][j] += ((double)vTime[i][j] / pathNum) * lVal;
        }
    }
}
int main()
{
    int i, j, l;
    char c;
    //输入格式化
    cin>>colN>>rowN;
    for(i = 1; i <= rowN; i++)
        for(j = 1; j <= colN; j++)
        {
            cin>>c;
            graph[i][j] = c;
            if(c >= 'A' && c <= 'O')
            {
                pos[c - 'A'][0] = i;
                pos[c - 'A'][1] = j;
            }
        }
    while(cin>>temp>>l && temp != "XX")
    {
        if(temp[0] > temp[1])
        {
            c = temp[0];
            temp[0] = temp[1];
            temp[1] = c;
        }
        itr = load.find(temp);
        if(itr == load.end())
            load[temp] = l;
        else
            load[temp] += l;
    }
    //遍历
    travel();
    //输出结果
    for(i = 1; i <= rowN; i++)
    {
        for(j = 1; j <= colN; j++)
        {
            //保留小数点后两位,进行四舍五入
            double temp = res[i][j];
            int t = temp * 1000 + 5;
            t = t / 10 * 10;
            temp = (double)t / 1000;
            printf("%7.2f", temp);
        }
        printf("/n");
    }
    return 0;
}

传感器采集信息的频率(采样频率) 较高的采集频率通常能提供更详细的信息,但也会增加数据处理和存储的负担。在某些应用中,较高的采样频率可能是必要的,而在其他情况下,则可能会选择适当的低采样频率以降低功耗和数据处理压力。传感器采集信息的频率(采样频率)是指传感器在一定时间内对输入信号进行采样的次数。对于一些需要快速检测和响应的应用,如运动传感器、声音传感器等,高采样频率是至关重要的。高采样频率通常需要更多的功耗和更大的存储容量,因为产生的数据量更大。例如,对于快速运动的对象,较低的采样频率可能无法捕捉到运动的真实轨迹。 阅读详情

相关推荐

手把手教你配置MCAL中的CAN模块:从基础参数到实战避坑指南

本文提供了一份详尽的MCAL CAN模块配置指南,涵盖从基础参数设置到实战避坑的全过程。文章深入解析了CAN控制器核心参数、硬件对象配置、数据流处理及常见问题排查,并结合源码分析,帮助嵌入式开发者构建稳定高效的CAN通信链路,是汽车电子领域通信开发的实用参考。

weixin_29165465的博客 336

zoj题目分类

饮水思源---zoj 转载自:http://bbs.sjtu.edu.cn/bbscon,board,ACMICPC,file,M.1084159773.A.html 注:所有不是太难的题都被归成了“简单题”,等到发现的时候已经太晚了,我太死脑筋 了……:( 有些题的程序我找不到了,555……:( SRbGa的题虽然都很经典……但是由于其中的大部分都是我...

446

Voxel Hashing技术解析:如何解决TSDF内存爆炸问题?

本文深入解析Voxel Hashing技术如何有效解决TSDF内存爆炸问题。通过动态内存分配和空间哈希函数设计,该技术将内存占用降低96.6%,同时保持高精度重建。文章详细介绍了GPU加速实现、现代系统演进及实践指南,为实时3D重建提供工程解决方案。

m2n3b4v5c6的博客 714

poj1124 Oh, Those Achin' Feet dfs+bfs最短路

Oh, Those Achin' Feet Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 490   Accepted: 131 Description In recent days, a number of people have been injured afte

Dave_lzw的博客 651

Python实战:5分钟搞定抖音无水印视频下载(附完整代码)

本文系统介绍了抖音无水印视频下载的多种技术方案,重点解析了抖音视频的获取逻辑与去水印原理。文章提供了从零代码的浏览器插件到可编程的Python脚本的完整实现路径,并附带了详细的代码示例,帮助用户快速构建自己的抖音视频下载工具箱。

weixin_29089057的博客 847

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

POJ 1124 Oh, Those Achin' Feet 笔记

人行道的承载量。X*Y的城市。字符.代表道路,字符X代表建筑,A到O代表出入口,出入口属于建筑。给出出入口承载的人数,在选择最短路径的情况下,求人行道每点的负载。如果一对出入口有多条最短路径,每条道路负载是其平均值。

woniupengpeng的专栏 457

非目标代谢组学(untargeted metabolomics)中常用的方法学考察的方法(四)

最早使用的一种方法,从QC样本的总离子流图中选择具有代表性的离子峰(覆盖不同的保留时间,不同的强度),在对QC样本进行重复检测之后,计算这些离子的保留时间以及峰面积的相对标准偏差(RSD),用以考察分析方法的稳定性以及重复性。所有样品检测完之后,收集所有的QC样本的原始数据进行数据预处理,包括(峰提取,排列,归一化等),经过数据过滤(80%规则)之后,计算剩下的峰的峰面积的RSD值。由于QC样本是 等量混合了所有的被检测样本,理论上QC样本包含了所有样本中的代谢物,因此QC样本理论上会。

hlllllllhhhhh的博客 1490

POJ 刷题顺序

POJ从简到难(按照AC数目排序)的列表如下,作为小弱的刷题

thestoryofsnow的专栏 31万+

OceanBase迁移平台OMS企业版部署

OceanBase迁移平台OMS企业版部署摘要: 本文档详细介绍了OceanBase迁移平台OMS企业版的部署流程,包含环境准备、OAT部署管理、MetaDB部署等关键步骤。

Sebastien23的博客 521

ENVI无法打开Landsat8的头文件问题和解决

再次将txt文件拖入ENVI中,就会得到7个波段组合后的真彩色图像,而且辐射定标所需的参数信息都已经定义好了。按住CTRL+F,查找GROUP = LEVEL1_PROCESSING_RECORD。第一行GROUP = LANDSAT_METADATA_FILE。会查到两个包含的句子,把这两个中间的部分全部删掉。双击打开该xxx_MTL.txt的头文件。删除空行后,应该为如下图的样子。把LANDSAT改为L1。

所有专家都曾始于新手 9702

GOOGLE的一道笔试题—求给定连通无环无向图可以生成的最小高度树

/*最近看到一道谷歌笔试题,“已知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)”其实就是给定一个无向连通图,求以哪些顶点为根可以得到深度最小的树,思路比较简单,主要有两个步骤:(1)首先选取1号结点作为树根,进行一遍DFS,在DFS时计算每个节点

bobten2008的专栏 3707

使用Qt和MX Component插件实现与菱PLC的通信

在本文中,我们介绍了如何使用Qt和MX Component插件实现与菱PLC的通信。我们首先安装和配置了MX Component插件,并在Qt项目中初始化和使用MX Component来连接、读取和写入PLC的数据。安装完成后,您需要在Qt项目中配置MX Component的路径,以便Qt可以找到所需的库文件。在本文中,我们将探讨如何使用Qt和MX Component插件来实现与菱PLC的通信。在主函数中,我们将初始化MX Component,并创建一个与PLC通信的示例。在上面的代码中,我们使用了。

TlScratch的博客 996

POJ 1143 Number Game

/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1143 博弈论(DFS + 状态记忆表 + 位运算), 假定一个走的人是A,第二个走的人是B A在当前状态下一定能够取胜的条件是:当前状态下存在一个数字,对于当A取走 这个数字后的状态,B不管怎么取都得输(即B不能够绝对取胜)  有了上面的分析就很容易看出这是一道博弈题,最终会形

bobten2008的专栏 2922

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

POJ 1639 Picnic Planning

 /*这题调得快吐血了,做得真辛苦这题主要就是求最小限度生成树,即给定一棵树,在某个节点上加上这个节点的最大度数,然后求一棵满足这样条件的树且最终的权值和最小。这道题就是在根节点Park上做度数限定,然后求最小限度生成树最小限度生成树的求法与MST(最小生成树密不可分)主要思路有以下几个步骤1)将根节点从图中去除掉2)对去除根节点的图求MST,注意这里去除根后的图可能是

bobten2008的专栏 1864

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

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

POJ Dreisam Equations

DFS + 表达式求值,输入处理很恶心 #include #include #define MAX_N 100using namespace std;int exp[MAX_N + 1];int curExp[MAX_N + 1];int expLen, expVal, curVal;int opType[3] = {-1, -2, -6};bool

bobten2008的专栏 1586

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

POJ 1632 Vase collection

 Vase collectionTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 1536 Accepted: 552DescriptionMr Cheng is a collector of old Chinese porcelain, more spec

bobten2008的专栏 1517

POJ 1186 方程的解数

 方程的解数Time Limit: 15000MS Memory Limit: 128000KTotal Submissions: 4000 Accepted: 1339Case Time Limit: 5000MSDescription已知一个n元高次方程: 其中:x1, x2,...,xn是未知数

bobten2008的专栏 1425

POJ 1103 Maze

/* dfs判断环,建图需要技巧,图变成了三维的(h * w * 2)第三维的2用来表示一个格子被/或者/分 成的两块 核心就是判断环,但是由于这题特殊性使得判断环比较简单;利用分别遍历h * w * 2个点,遍历到的点 设置为visited, 当遇到遍历初始点时且这个初始点不是前驱则表示找到一条环 注意一定要判断是否是前驱,否则会产生判断错误*/#

bobten2008的专栏 1398

POJ 1635 Subway tree systems

 /*主要是根据输入串建树,然后对树DFS,重新获得一个排序后的01串。对两个输入串分别运用上述方法分别得到两个排序后的01串,如果两个串相等则same,否则different关键在于DFS时对子树返回的01串进行存储和排序,然后重组比如对于0100101100100111和0011000111010101,重组后分别变成:0001101100101101和0001110011

bobten2008的专栏 1385

POJ 1078

http://acm.pku.edu.cn/JudgeOnline/problem?id=1078这题是典型的DFS回溯题,主要意思是给定两个整数,要求分别对这两个数进行因子分解,因子必须是100以内且不能重复。问,这两个整数是否存在不相交的因子集,例如:24和12,分别可以分解为2 * 12, 3 * 4,所以存在;而49和343就不行了,49不能分解(否则有7重复了),343只

bobten2008的专栏 1382

POJ 2044 Weather Forecast

/*深度优先搜索,需要记忆状态,状态的记忆包括四个角到目前为止没有下雨的时间+云当前所在的位置+当前的天数,一开始写错了一个地方害我调了N久,最近为啥没状态*/#include #define MAX_N 370#define MAX_S 80000using namespace std;struct day{    int state;}day

bobten2008的专栏 1272

POJ 1826 The Best Farm

The Best FarmTime Limit: 3000MS Memory Limit: 30000KTotal Submissions: 1519 Accepted: 455DescriptionBackground In a fight against invaders, farmer William get the

bobten2008的专栏 1217

POJ 1816 Wild Words

/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1816trie树下的DFS, 感觉非常好的一道题,能说明很多问题*/#include #include #define MAX_M 100000using namespace std;//输入的pattern数以及待匹配的单词数int pNum, strNum

bobten2008的专栏 1206

POJ 1128 Frame Stacking

/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1128DFS回溯实现拓扑排序*/#include #include #include #include #define MAX_N 32#define MAX_L 26using namespace std;char mapv[MAX_N + 1][M

bobten2008的专栏 1104

poj 1416 Shredding Company

/**  * DFS:由于在遍历时,preTemp会随时变化,因此当找到当前最优解时需要用preBest来保存preTemp  */#include #include #define MAX_LEN 6using namespace std;int preTemp[MAX_LEN + 1];int preBest[MAX_LEN + 1];int dis[MAX

bobten2008的专栏 953
上一篇: POJ 1123 For the Porsche
下一篇: POJ 1126 Simple Syntax
bobten2008
博客等级 码龄18年 153粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值