湖南省交通建设质量安全监督管理局网站西安电商网站

news/2025/10/5 11:43:41/文章来源:
湖南省交通建设质量安全监督管理局网站,西安电商网站,中国市场网,网站开发后台用什么语言GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 以三个点的当前位置作为状态#xff0c;广度优先遍历#xff0c;找到终点即为最短次数。 注意#xff1a; 一次可以移动多个点#xff0c;但是每个点只能移动一步。在同一次中#xf…GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 以三个点的当前位置作为状态广度优先遍历找到终点即为最短次数。 注意 一次可以移动多个点但是每个点只能移动一步。在同一次中B可以移动到A离开前的位置上即如果A走了B可以去A之前的位置。因此这三个点的移动和判断是有先后顺序的。对每个状态遍历时情况实际上有 3的全排列值为6以及每个点移动的可能四种位置 3! * 4^3。当然因为墙的存在因此并没有这么多。 由于最高只有3因此我的全排列写的不怎么优雅直接嵌套循环完成了。注意每个点可以动也可以不动因此我们要考虑只有一个点动两个点动的情况。写全排列时。如果第一个点动了大现已经遍历过这时候不能放入队列因为在其他点不动的情况下这个状态已经遍历过了。但是如果后面的点还继续动那么这并不是一个完整的状态因此不应该终止全排列。 按照上面的方法做的话耗时很久我扣了点细节最后终于压线AC。时间限制12000ms 1. 根据题目描述很多节点周围都是墙因此用邻接表效率更高一些。 2. 一个点的坐标位置为1-16 x和y很容易放到一个数字中存储的。相对于每次计算x1 x2 y1  y2 一个数字的计算次数更少。其实三个结点的xy位置应该可以整合为一个数字的这样效率会更高。  3. 我的答案中用到了struct一些辅助的判断函数使用引用而不是直接将整个对象值作为参数性能会提高一些。 #include stdio.h #include string.h #include queue #include vectorusing namespace std;int graph[20][20]; vectorint graphVec[300]; int w, h, n;struct Point {char ch;int pos; }; Point initPoints[3]; Point suppPoints[3];struct Status {int pos[3];int step; }; Status origin, terminal;bool access[300][300][300];int steps[4][2] { {1, 0}, {-1, 0}, {0, 1}, {0, -1} };bool sameLetter(char small, char big) {return small big - A a; } bool statusEqual(Status s1, Status s2) {for (int i 0; i n; i) {if (s1.pos[i] ! s2.pos[i]) return false;}return true; }int xy2Num(int x, int y) {return x * 17 y; }void num2XY(int num, int *x, int *y) {*x num / 17;*y num % 17; }bool judgeAcc(Status s) {if (n 1) return access[s.pos[0]][0][0];if (n 2) return access[s.pos[0]][s.pos[1]][0];if (n 3) return access[s.pos[0]][s.pos[1]][s.pos[2]]; }void setAcc(Status s) {if (n 1) access[s.pos[0]][0][0] true;if (n 2) access[s.pos[0]][s.pos[1]][0] true;if (n 3) access[s.pos[0]][s.pos[1]][s.pos[2]] true; }void printStatus(Status s) {int x, y;for (int i 0; i n; i) {num2XY(s.pos[i], x, y);printf([%d %d] , x, y);}printf( %d\n, s.step); }void printGraphVec() {int i, j, x, y;for(i 0; i 300; i) {if(graphVec[i].size()) {num2XY(i, x, y);printf(%d %d - , x, y);for(j 0; j graphVec[i].size(); j) {num2XY(graphVec[i][j], x, y);printf([%d %d] , x, y);}putchar(\n);}}putchar(\n); }void init() {int i, j, k, initLen 0, suppLen 0;int x, y;memset(access, 0, sizeof(access));for(i 0; i 300; i) {graphVec[i].clear();}for (i 1; i h; i) {while (getchar() ! \n) ;for (j 1; j w; j) {graph[i][j] getchar();if (graph[i][j] a graph[i][j] z)initPoints[initLen] {char(graph[i][j]), xy2Num(i, j)};if (graph[i][j] A graph[i][j] Z)suppPoints[suppLen] {char(graph[i][j]), xy2Num(i, j)};}}for(i 2; i h; i) {for (j 2; j w; j) {if(graph[i][j] #) continue;for(k 0; k 4; k) {x i steps[k][0];y j steps[k][1];if(graph[x][y] #) continue;graphVec[xy2Num(i, j)].push_back(xy2Num(x, y));}}}// printGraphVec();for (i 0; i n; i) {origin.pos[i] initPoints[i].pos;for (j 0; j n; j) {if (sameLetter(initPoints[i].ch, suppPoints[j].ch)) {terminal.pos[i] suppPoints[j].pos;break;}}}origin.step 0;terminal.step 0;setAcc(origin);// printStatus(origin);// printStatus(terminal); }bool judgePos(Status s) {int i, j;for (i 0; i n; i) {for (j 0; j n; j) {if (i j) continue;if (s.pos[i] s.pos[j]) return false;}}return true; }int compute() {int i, j, k, a1, a2, a3;int num1, num2, num3, len1, len2, len3;queueStatus qu;Status s0, s1, s2, s3;qu.push(origin);while (!qu.empty()) {s0 qu.front();qu.pop();// putchar(\n);// printStatus(s0);s0.step;for (i 0; i n; i) {num1 s0.pos[i]; len1 graphVec[num1].size();for (a1 0; a1 len1; a1) {s1 s0;s1.pos[i] graphVec[num1][a1];if (!judgePos(s1)) continue;if (!judgeAcc(s1)) {// printStatus(s1);setAcc(s1); qu.push(s1);}if (statusEqual(s1, terminal)) return s1.step;for (j 0; j n; j) {if (i j) continue;num2 s1.pos[j]; len2 graphVec[num2].size();for (a2 0; a2 len2; a2) {s2 s1;s2.pos[j] graphVec[num2][a2];if (!judgePos(s2)) continue;if (!judgeAcc(s2)) {// printStatus(s2);setAcc(s2); qu.push(s2);}if (statusEqual(s2, terminal)) return s2.step;for (k 0; k n; k) {if (k i || k j) continue;num3 s2.pos[k]; len3 graphVec[num3].size();for (a3 0; a3 len3; a3) {s3 s2;s3.pos[k] graphVec[num3][a3];if (!judgePos(s3)) continue;if (!judgeAcc(s3)) {// printStatus(s3);setAcc(s3); qu.push(s3);}if (statusEqual(s3, terminal)) return s3.step;}}}}}}} }int main() {while (scanf(%d %d %d, w, h, n) 3 w ! 0) {init();printf(%d\n, compute());}return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

251005

目录JT-JY7T1S1-1JT-JY7T1S1-2FT-(TEDs&VOAs) JT-JY7T1S1-1Good morning, i am flying to the TRT airport next weekend, and i need to get to a town called MERT. Could you tell how i can get there? MERT …

【光照】Unity如何在Cubemap中采样反射信息?

Cubemap是游戏渲染中常用的技术,由6个2D纹理组成立方体,用于环境映射、反射和折射效果。其核心原理是利用方向向量进行纹理采样,通过反射公式R=I-2*dot(N,I)*N计算反射向量。Unity URP通过PLATFORM_SAMPLE_TEXTUREC…

US$365.75 Mercedes-Benz Authorization License For CGDI A2 Key Programmer

Mercedes-Benz Authorization License For CGDI A2 Key ProgrammerFor CGDI A2 Key Programmer1. Activate BENZ authorization to unlock Mercedes IMMO capabilities.2. No Need Shipping. License authorization on…

2025/10/3

2025/10/3休息

移动端网站建设的意义为什呢网站打开wordpress很慢

目录 引言1 智能家居的崭新时代2 无人驾驶的崭新时代3 虚拟现实的扩展与改进4 人工智能的综合应用5 云计算的可持续性结语 引言 时光荏苒,科技的飞速发展已经成为当今社会的标志之一。在这个数字化时代,云计算已经成为推动技术革新和生活方式改变的关键…

深入解析:TCP三次握手/四次握手-TCP/IP四层模型-SSL/TLS-HTTP-HTTPS

深入解析:TCP三次握手/四次握手-TCP/IP四层模型-SSL/TLS-HTTP-HTTPSpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

2025测振仪厂家最新企业品牌推荐排行榜,自动诊断测振仪,防爆测振仪,智能测振仪,诊断故障测振仪推荐!

在工业生产领域,设备振动监测是保障生产安全、提升生产效益的关键环节,测振仪作为核心监测工具,其性能与品质直接影响设备故障诊断的准确性和及时性。当前市场上测振仪品牌数量众多,产品质量参差不齐,部分品牌存在…

西安建站价格谷歌seo关键词排名优化

目录 一、方法一 采用qrcodejs2生成1.1、安装二维码插件qrcodejs21.2、在vue文件中,引入生成二维码插件1.3、构建二维码对象qrCodeDiv 一、方法二 -采用qrcode生成2.1、安装qrcode2.2、页面引入2.3、方法里边使用2.4、options 三、方法三 vue-qr3.1、安装3.2、页面引…

DeepSeek 赋能教育新生态,智能教育机器人开启智慧教学新篇章 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:第1天:认识RNN及RNN初步实验(预测下一个数字)

深入解析:第1天:认识RNN及RNN初步实验(预测下一个数字)2025-10-05 11:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

如何创建一个属于自己的网站什么叫手机网站

涉及技术: 1.使用NMdbus4 库 2.ushort[]转int 记得之前刚学习的时候,是ushort[] → Hex字符串→byte[] → 翻转byte[] →BitConverter.ToInt32(),饶了一大圈;实际上可以直接转;这里也有小细节:使用BitCo…

2025 铜覆钢厂家最新企业品牌推荐排行榜单,铜覆钢接地棒,铜覆钢圆钢,铜覆钢扁钢,铜覆钢圆线公司推荐

在当今的电力、石油化工、通讯等众多领域,铜覆钢圆钢作为重要的接地材料,其质量与性能直接关系到相关工程的安全与稳定。然而,当前铜覆钢圆钢行业却面临着诸多问题。市场上产品质量参差不齐,部分生产商为追求利润,…

【JNI】JNI环境搭建

1 前言 ​ JNI (Java Native Interface) 是 JDK 提供的一种机制,用于实现 Java 代码与其他语言(主要是 C 和 C++)编写的本地代码之间的交互。 ​ JNI 接口详见 JDK 安装目录中的 include/jni.h 文件,Android…

CS自学笔记

上一次那么郑重其事地打开博客园,打算记录一些什么的时候,还是高二牛客多校的记录。 那时的我还不知道几个月后我会因为保守策略差一点再次失去省一; 还不知道之后社交关系崩坏的种种; 还不知道首考的跌宕起伏; 还…

JDBC - Wrapper接口

java.sql.Wrapper javax.sql.DataSource java.sql.Connection java.sql.Statement java.sql.ResultSet java.sql.ResultSetMetaData java.sql.DatabaseMetaData java.sql.ParameterMetaData

asp做网站基本过程商标设计图片

在之前写过一篇关于虚拟环境使用的文章,但是还没有好好的介绍一下 Python 的用户环境,原因是自己一直没遇到要使用 用户环境 的使用场景,所以就一直懒得写。恰巧这两天,自己遇到了一个使用用户环境的体验可以完爆虚拟环境的案例&a…

深入解析:[论文阅读]Poisonprompt: Backdoor attack on prompt-based large language models

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

fasthx fastapi服务器端渲染看框架

fasthx fastapi服务器端渲染看框架fasthx 是一个fastapi 的服务器端渲染框架 包含的特性基于装饰器的语法 内置htmx 支持任何模版引擎,htmy,jinja2,dominate 对于装饰器路路由渲染引擎支持访问所有依赖 支持异步以及…

vue: 报错: vue ResizeObserver loop completed with undelivered notifications.

一,报错信息: vue ResizeObserver loop completed with undelivered notifications. 如图:我没有专门截图,转一张别人发的二,原因 ResizeObserver 警告解释这条警告源于 ResizeObserver 的实现机制。它表示监听了 D…

成都 企业 网站建设计算机多媒体辅助教学网站开发

文章目录 前言一、Bean 的作用域1.1 被修改的 Bean 案例1.2 作用域的定义1.3 Bean 的六种作用域1.4 Bean 作用域的设置 二、Spring 的执行流程 和 Bean 的生命周期2.1 Spring 的执行流程2.2 Bean 的生命周期2.3 Bean 生命周期的演示 前言 Bean 是 Spring 框架中的一个核心概念…