AYIT2017暑假集训第二周周三赛 D - Meteor Shower POJ - 3669

避障寻路算法
本文介绍了一种基于广度优先搜索(BFS)的避障寻路算法,旨在帮助角色(如奶牛Bessie)在遭受流星雨袭击的地图上寻找安全路径。该算法通过遍历地图上的格点并避开已被流星摧毁的区域来实现。文章提供了完整的C++代码实现,展示了如何处理障碍物、如何判断安全位置,并最终输出到达安全位置所需的最短时间。

Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash into earth and destroy anything they hit. Anxious for her safety, she vows to find her way to a safe location (one that is never destroyed by a meteor) . She is currently grazing at the origin in the coordinate plane and wants to move to a new, safer location while avoiding being destroyed by meteors along her way.

The reports say that M meteors (1 ≤ M ≤ 50,000) will strike, with meteor i will striking point (XiYi) (0 ≤ X≤ 300; 0 ≤ Y≤ 300) at time Ti (0 ≤ Ti  ≤ 1,000). Each meteor destroys the point that it strikes and also the four rectilinearly adjacent lattice points.

Bessie leaves the origin at time 0 and can travel in the first quadrant and parallel to the axes at the rate of one distance unit per second to any of the (often 4) adjacent rectilinear points that are not yet destroyed by a meteor. She cannot be located on a point at any time greater than or equal to the time it is destroyed).

Determine the minimum time it takes Bessie to get to a safe place.

Input

* Line 1: A single integer: M
* Lines 2..M+1: Line i+1 contains three space-separated integers: Xi,Yi, and Ti

Output

* Line 1: The minimum time it takes Bessie to get to a safe place or -1 if it is impossible.

Sample Input
4
0 0 2
2 1 2
1 1 2
0 3 5
Sample Output

5

题目大概意思就是给你坐标和时间,在时间过后那个地点会遭到轰炸,轰炸过后那个点和他四周的四个点都不能走了,问能否找到一个安全点。如果能的话输出步数,不能输出-1.


#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
int vis[330][330];//存储地图
int next[5][2]= {{0,0},{1,0},{0,1},{-1,0},{0,-1}};//在主函数中因为要把自身的坐标也变化所以加了0,0.
struct note
{
    int x,y,t;
} l[30000];//模拟队列
int bfs()
{
    if(vis[0][0]==0) return -1;//若第一个点时间直接为0,说明直接死了;
    else if(vis[0][0]==-1) return 0;//若第一个点为-1,说明他一个就是安全点
    int head=1,tail=2;
    l[head].x=0;//起始点坐标
    l[head].y=0;
    l[head].t=0;//把时间置为0
    while(head<tail)
    {
        for(int i=1; i<5; i++)
        {
            int tx=l[head].x+next[i][0];
            int ty=l[head].y+next[i][1];//向四个方向进行搜索
            if(tx<0 || ty<0) continue;
            if(vis[tx][ty]==-1)  return  (l[head].t+1);//若找到了vis为-1得点,说明找到了安全点
            if((l[head].t+1)>=vis[tx][ty]) continue;//如果时间大于vis点的值,说明该点之前被轰炸过不能走
            vis[tx][ty]=0;//走过之后把点标记为0.
            l[tail].x=tx;
            l[tail].y=ty;
            l[tail].t=l[head].t+1;//时间加一
            tail++;
        }
        head++;
    }
    return -1;
}

int main()
{
    int m,k,t,x,y,x1,y1;
    scanf("%d",&m);
    memset(vis,-1,sizeof(vis));
    for(int j=0;j<m;j++)
    {
        scanf("%d%d%d",&x,&y,&t);
        for(int i=0; i<=4; i++)
        {
            x1=x+next[i][0];//输入点坐标进行计算,因为被轰炸过所以不能走
            y1=y+next[i][1];
            if(x1<0 || y1<0) continue;
            if(vis[x1][y1]==-1)//假如是安全点把他vis值改变
                vis[x1][y1]=t;
            else
                vis[x1][y1]=min(vis[x1][y1],t);//如果有更小的进行更新,限制路径
        }
    }
    printf("%d\n",bfs());
    return 0;
}

MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
一. 单选题(共30题,85.5分) 1. (单选题) 创建一个到百度的链接,打开页面在新打开的窗口中,可以实现的代码是( )。 A "<a href='http://www.baidu.com' target='_blank'>百度</a>" B "<a href='http://www.baidu.com' target='_self'>百度</a>" 2. (单选题) 在使用iframe这个标签时,需要设置浮动框架的边框显示,设置的属性是() A frameborder B border 3. (单选题) 通过超级链接执行JavaScript语句“alert('你好!欢迎访问我的网站!');”,源端点为文本“执行JavaScript脚本”。可以实现的代码是( ) A “<a href="alert('你好!欢迎访问我的网站!')">执行JavaScript脚本</a>” B “<a href="Javascript:alert('你好!欢迎访问我的网站!')">执行JavaScript脚本</a>” 4. (单选题) 在HTML中,下列哪个元素属于块级元素? A div B a C span D strong 5. (单选题) 能显示如下图所示的无序列表的代码是( ) A " <ul type= "disc" > <li>java </li> <li>C++ </li> <li>python </li> </ul>" B " <ul type= "circle" > <li>java </li> <li>C++ </li> <li>python </li> </ul>" 6. (单选题) 声明有序列表用( )标签。 A <ul> B <dd> C <dl> D <ol> 7. (单选题) 声明无序列表用( )标签。 A <ol> B <ul> C <div> D <em> 8. (单选题) 下列关于HTML元素的说法中,哪一项是正确的? A 块级元素无法嵌套其他元素 B 块级元素默认不会换行 C 行内元素通常用于包裹文本内容 D 行内元素可以设置宽度和高度 9. (单选题) 以下元素是行内元素的有( )。 A span B img C h1~h6 D div 10. (单选题) 以下是块级元素的是( ) A img B p C em D span 11. (单选题) 创建无序列表,需要使用的标签是( ) A ol和dd B ol、dt和dd C ol和li D ul和li 12. (单选题) 以下关于div标签描述不正确的是( ) A div能设置宽度和高度 B div是一个块级元素 C div是一个容器元素 D div不能设置内边距和外边距 13. (单选题) 能显示如下图所示的有序列表的代码是( )。 A " <ol> <li>java </li> <li>C++ </li> <li>python </li> </ol> " B " <ul> <li>java </li> <li>C++ </li> <li>python </li> </ul>" 14. (单选题) 能够实现在浏览器中打开文档的显示的代码是() A "<a href="resource/download.txt">文本显示</a>" B "<a href="resource/download.docx">文本显示</a>" 15. (单选题) 设置页面的基准url为"https://www.ayit.edu.cn" 并且链接打开都在新窗口中,可以实现的代码是( ) A "<base href="https://www.ayit.edu.cn"></base>" B "<base href="https://www.ayit.edu.cn" target="_blank">" 16. (单选题) 在设置有序列表的列表项标号为小写罗马字符是用的属性和值是( ) A "type=a" B "type=A" C "type=I" D "type=i" 17. (单选题) 创建超链接必须具备的条件是同时存在() A 目标端点和href属性 B 源端点和目标端点 18. (单选题) 创建一个超级链接,链接地址为“http://www.baidu.com”,在新窗口内打开页面,显示文本为“百度搜索”,当鼠标放在链接上时显示“你要找什么?,代码可以实现的是() A " <a href="http://www.baidu.com" target="_blank" alt="你要找什么?">百度搜索</a>" B " <a href="http://www.baidu.com" target="_blank" title="你要找什么?">百度搜索</a>" 19. (单选题) 使用超级链接实现在页面标题1处创建书签,书签名为“head”,可以实现的代码是( )。 A “<a href="head"> <h1>标题1</h1> </a>” B “<a id="head"> <h1>标题1</h1> </a>” 20. (单选题) 在使用a标签跳转到书签位置时,创建超级链接可以实现的代码是() A "<a id='#head'>跳转到头部</a>" B "<a href='#head'>跳转到头部</a>" 21. (单选题) 以下关于块级元素描述不正确的是( ) A 块级元素不能设置宽度和高度 B 块级元素不设置宽度样式时,宽度自动撑满父元素宽度 C 块级元素和相邻的块级元素依次垂直排列 D 块级元素独占一行 22. (单选题) 以下标签中,都是块级元素的是( ) A img、span、div B span、div、p C img、div 、p D div 、p、h1 23. (单选题) 在无序列表中,定义列表项用( )标签。 A <ol> B <dd> C <tr> D <li> 24. (单选题) 设置有序列表的列表标号起始编号为3,设置的属性和值是( ) A "type=3" B "start=3" 25. (单选题) 使目标端点在新打开的窗口显示,可以实现的代码是() A "<a href='a001.htm' target=_self>跳转新页面</a>" B "<a href='a001.htm' target=_blank>跳转新页面</a>" 26. (单选题) 以下关于行内块元素描述错误的是( ) A 可以设置宽度和高度 B span是行内块元素 C 和相邻的行内元素以及行内块元素从左向右一次排列在同一行,直到一行排不下时才会换行。 D 可以设置4个方向的内、外边距 27. (单选题) 以下不是块级元素的标签是( ) A div B span C p D section 28. (单选题) 能够实现图片是链接的代码是() A "<a href="http://www.baidu.com"></a><img src='img/logo.png' width=30px>" B "<a href="http://www.baidu.com"><img src='img/logo.png' width=30px></a>" 29. (单选题) 在用a标签创建书签时,能够实现的代码是() A "<a id=head>我是书签</a>" B "<a href=head>我是书签</a>" 30. (单选题) 能显示如下图所示的无序列表的代码是( ) A "<ol type= "I"> <li>java </li> <li>C++ </li> <li>python </li> </ol>" B "<ol type= "i"> <li>java </li> <li>C++ </li> <li>python </li> </ol>" 二. 多选题(共5题,14.5分) 31. (多选题) 下列关于div标签的说法,哪些是正确的? A 默认不会独占一行 B 常用于网页布局 C 是一个块级元素 D 可以嵌套其他HTML元素 32. (多选题) 块级元素的特点有( )。 A 不设置宽度样式时,宽度自动撑满父元素宽度 B 不独占一行 C 独占一行 D 和相邻的块级元素依次垂直排列 E 可以设置宽度、高度、四个方向的内外边距 33. (多选题) 能够设置宽度和高度的元素级别有( )。 A 块内行元素 B 块级元素 C 行内块元素 D 行内级元素 34. (多选题) 以下是行内块元素的是( )。 A input B img C div D span 35. (多选题) 以下是块级元素的是( )。 A h1_h6 B p C span D div E ul
09-26
以下为一些涉及链接创建、标签属性、元素类型等方面的单选题和多选题及解答: ### 单选题 1. 创建超链接时,使用的标签是( ) A. `<img>` B. `<a>` C. `<p>` D. `<ul>` 答案:B。`<a>` 标签用于创建超链接,通过 `href` 属性指定链接的目标地址。`<img>` 用于插入图片,`<p>` 用于创建段落,`<ul>` 用于创建无序列表 [^4]。 2. 以下哪个属性用于设置图片的替代文本( ) A. `src` B. `alt` C. `width` D. `height` 答案:B。`alt` 属性用于为图片提供替代文本,当图片无法显示时,会显示该替代文本。`src` 属性用于指定图片的源文件路径,`width` 和 `height` 分别用于设置图片的宽度和高度。 3. 以下哪种元素属于块级元素( ) A. `<span>` B. `<a>` C. `<div>` D. `<img>` 答案:C。`<div>` 是典型的块级元素,会独占一行,并且可以设置宽度和高度等属性。`<span>` 是行内元素,`<a>` 通常也是行内元素,`<img>` 是替换元素,但默认是行内元素。 ### 多选题 1. 以下哪些属性可以用于 `<a>` 标签( ) A. `href` B. `target` C. `title` D. `src` 答案:ABC。`href` 属性用于指定链接的目标地址,`target` 属性用于指定链接的打开方式(如 `_blank` 表示在新窗口打开),`title` 属性用于为链接提供额外的提示信息。`src` 属性用于指定图片、脚本等资源的源文件路径,不用于 `<a>` 标签。 2. 以下哪些标签属于 HTML5 的语义化标签( ) A. `<header>` B. `<section>` C. `<article>` D. `<footer>` 答案:ABCD。HTML5 引入了一系列语义化标签,如 `<header>` 表示页面或区域的头部,`<section>` 表示文档中的一个章节,`<article>` 表示独立的内容,`<footer>` 表示页面或区域的底部 [^2]。 ```html <!-- 示例代码:使用 a 标签创建链接 --> <a href="https://www.example.com" target="_blank" title="点击访问示例网站">示例网站</a> <!-- 示例代码:使用 HTML5 语义化标签 --> <header> <h1>页面标题</h1> </header> <section> <h2>章节标题</h2> <p>章节内容</p> </section> <article> <h2>文章标题</h2> <p>文章内容</p> </article> <footer> <p>版权信息</p> </footer> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值