学习总结2

解题思路
用bfs进行搜索,标记A罐B罐所保存的水的出现情况,当再次出现的时候停止搜索,然后用数组模拟链表进行保存路径.最后输出.
代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
using namespace std;
int g[120][120];
struct s
{int x;int y;
}d[120*120];
int l,r;
struct ss
{int x;int y;int z;
}j[120][120];
int a,b,c;
int k,i;
int bfs()
{int tx,ty,z;while(l<r){for(z=0;z<6;z++){tx=d[l].x;ty=d[l].y;switch(z){case 0:tx=a;break;case 1:ty=b;break;case 2:tx=0;break;case 3:ty=0;break;case 4:if(tx!=0){if(tx+ty<=b){ty=tx+ty;tx=0;}else{tx=tx-(b-ty);ty=b;}}break;case 5:if(ty!=0){if(tx+ty<=a){tx=ty+tx;ty=0;}else{ty=ty-(a-tx);tx=a;}}break;}if(tx>a||ty>b||tx<0||ty<0)continue;if(tx==c||ty==c){k=tx;i=ty;j[k][i].x=d[l].x;j[k][i].y=d[l].y;j[k][i].z=z;g[tx][ty]=g[d[l].x][d[l].y]+1;return 0;}if(g[tx][ty]==-1){g[tx][ty]=g[d[l].x][d[l].y]+1;d[r].x=tx;d[r++].y=ty;j[tx][ty].x=d[l].x;j[tx][ty].y=d[l].y;j[tx][ty].z=z;}}l++;}return 0;
}void print(int x,int y)
{if(x==0&&y==0)return ;print(j[x][y].x,j[x][y].y);switch(j[x][y].z){case 0:printf("FILL(1)\n");break;case 1:printf("FILL(2)\n");break;case 2:printf("DROP(1)\n");break;case 3:printf("DROP(2)\n");break;case 4:printf("POUR(1,2)\n");break;case 5:printf("POUR(2,1)\n");break;}return ;
}int main()
{scanf("%d%d%d",&a,&b,&c);d[r].x=0;d[r++].y=0;memset(g,-1,sizeof(int )*120*120);g[0][0]=0;bfs();if(k==0&&i==0){printf("impossible\n");}else{printf("%d\n",g[k][i]);print(k,i);}return 0;
}

解题思路
这道题用bfs就行了.以两个人为起点对全图进行搜索,用一个数组保存到每一个地方所用的最短的步数.最后比较两人到所有的kfc所用的步数的总和输出最小的就行了.
代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
using namespace std;
char g[210][210];
int j[210][210];
int j2[210][210];
int ne[5][2]={{1,0},{-1,0},{0,1},{0,-1}};
int n,m;
struct di
{int x;int y;
}sy,sm,kfc[210*210],dl[210*210];
int l,r;
int k;
int sum;int bfs()
{int tx,ty,z;while(l<r){for(z=0;z<4;z++){tx=ne[z][0]+dl[l].x;ty=ne[z][1]+dl[l].y;if(tx<0||tx>n||ty<0||ty>m)continue;if(g[tx][ty]!='#'&&j[tx][ty]==0){j[tx][ty]=j[dl[l].x][dl[l].y]+1;dl[r].x=tx;dl[r++].y=ty;}}l++;}return 0;
}int bfs2()
{int tx,ty,z;while(l<r){for(z=0;z<4;z++){tx=ne[z][0]+dl[l].x;ty=ne[z][1]+dl[l].y;if(tx<0||tx>n||ty<0||ty>m)continue;if(g[tx][ty]!='#'&&j2[tx][ty]==0){j2[tx][ty]=j2[dl[l].x][dl[l].y]+1;dl[r].x=tx;dl[r++].y=ty;}}l++;}return 0;
}int main()
{int x,y,s;while(~scanf("%d%d",&n,&m)){sum=9999999;k=0;for(x=0;x<n;x++){scanf("%s",g[x]);}for(x=0;x<n;x++){for(y=0;y<m;y++){if(g[x][y]=='Y'){sy.x=x;sy.y=y;}if(g[x][y]=='M'){sm.x=x;sm.y=y;}if(g[x][y]=='@'){kfc[k].x=x;kfc[k++].y=y;}}}memset(j,0,sizeof(int)*210*210);l=0;r=0;dl[r].x=sy.x;dl[r++].y=sy.y;bfs();memset(j2,0,sizeof(int)*210*210);l=0;r=0;dl[r].x=sm.x;dl[r++].y=sm.y;bfs2();for(x=0;x<k;x++){if(j[kfc[x].x][kfc[x].y]!=0&&j2[kfc[x].x][kfc[x].y]!=0)if((j[kfc[x].x][kfc[x].y]+j2[kfc[x].x][kfc[x].y])<sum)sum=j[kfc[x].x][kfc[x].y]+j2[kfc[x].x][kfc[x].y];}printf("%d\n",sum*11);}return 0;
}

解题思路
用bfs搜索,要注意的是地图是三维的,传送到下一层之后可能的情况(直接见到公主,撞死,进入另一个传送门).
代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
using namespace std;
char g[3][15][15];
int j[3][15][15];
struct ss
{int x;int y;int z;
}d[15*15*3];
int ne[5][2]={{1,0},{-1,0},{0,1},{0,-1}};
int l,r;
int n,m,t;
int bfs()
{int z,tx,ty,tz;while(l<r){for(int z=0;z<4;z++){tx=d[l].x+ne[z][0];ty=d[l].y+ne[z][1];tz=d[l].z;if(tx<0||ty<0||tx>=n||ty>=m)continue;if(g[tz][tx][ty]=='P'){return j[tz][tx][ty]=j[d[l].z][d[l].x][d[l].y]+1;}if(g[tz][tx][ty]!='*'&&j[tz][tx][ty]==-1){j[tz][tx][ty]=j[d[l].z][d[l].x][d[l].y]+1;if(g[tz][tx][ty]=='#'){if(tz==0){tz++;}else{tz--;}if(g[tz][tx][ty]=='#'||j[tz][tx][ty]!=-1){if(tz==0){tz++;}else{tz--;}continue;}if(g[tz][tx][ty]=='*'||j[tz][tx][ty]!=-1){if(tz==0){tz++;}else{tz--;}continue;}if(g[tz][tx][ty]=='P'){return j[tz][tx][ty]=j[d[l].z][d[l].x][d[l].y]+1;}j[tz][tx][ty]=j[d[l].z][d[l].x][d[l].y]+1;}d[r].x=tx;d[r].y=ty;d[r++].z=tz;}}l++;}return 999999;
}
int main()
{int k;scanf("%d",&k);for(int z=0;z<k;z++){memset(j,-1,sizeof(int )*3*15*15);l=r=0;scanf("%d%d%d",&n,&m,&t);for(int x=0;x<n;x++){scanf("%s",g[0][x]);}getchar();for(int x=0;x<n;x++){scanf("%s",g[1][x]);}d[r].x=0;d[r].y=0;d[r++].z=0;j[0][0][0]=0;int sum=bfs();if(sum<=t){printf("YES\n");}else{printf("NO\n");}}return 0;
}
相关文章:
学习总结2
解题思路 用bfs进行搜索,标记A罐B罐所保存的水的出现情况,当再次出现的时候停止搜索,然后用数组模拟链表进行保存路径.最后输出. 代码 #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #in…...
【LeetCode】--- 动态规划 集训(一)
目录 一、1137. 第 N 个泰波那契数1.1 题目解析1.2 状态转移方程1.3 解题代码 二、面试题 08.01. 三步问题2.1 题目解析2.2 状态转移方程2.3 解题代码 三、746. 使用最小花费爬楼梯3.1 题目解析3.2 状态转移方程3.3 解题代码 一、1137. 第 N 个泰波那契数 题目地址:…...
【数据结构与算法】(18):树形选择排序:按照锦标赛的思想进行排序
🤡博客主页:Code_文晓 🥰本文专栏:数据结构与算法 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&…...
统计单词数
统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一个单词࿰…...
c++pair的用法
pair简单来说就是可以存储两种类型数据的一个类,其内部是使用模板实现的,所以可以指定其内部的类型。 pair在#include <utility> pair的构造 pair<int, string> p1({ 1,"张三" });pair<int, string> p2;pair<int, str…...
石油炼化5G智能制造工厂数字孪生可视化平台,推进行业数字化转型
石油炼化5G智能制造工厂数字孪生可视化平台,推进行业数字化转型。在石油炼化行业,5G智能制造工厂数字孪生可视化平台的出现,为行业的数字化转型注入了新的活力。石油炼化行业作为传统工业的重要领域,面临着资源紧张、环境压力、安…...
IP代理技术革新:探索数据采集的新路径
引言: 随着全球化进程不断加深,网络数据采集在企业决策和市场分析中扮演着愈发重要的角色。然而,地域限制和IP封锁等问题常常给数据采集工作带来了巨大挑战。亿牛云代理服务凭借其强大的网络覆盖和真实住宅IP资源,成为解决这些问…...
流畅的 Python 第二版(GPT 重译)(一)
前言 计划是这样的:当有人使用你不理解的特性时,直接开枪打死他们。这比学习新东西要容易得多,不久之后,活下来的程序员只会用一个容易理解的、微小的 Python 0.9.6 子集来编写代码 。 Tim Peters,传奇的核心开发者&am…...
Vue+jquery+jquery.maphilight实现图片热区高亮以及点击效果
//鼠标悬浮效果 mounted() {this.setCurrentTask(0); //对于id为mapAll的热区图,设置鼠标放置在上面有一个颜色 fillColor填充颜色 strokeColor边框颜色 strokeWidth边框宽度 fillOpacity 是设置热区填充颜色的不透明度的属性。 alwaysOn:true 保持常量$(function(…...
靠谱!朋友圈一键转发和自动转发好友朋友圈
微信朋友圈在生活和工作中扮演着重要的社交和信息传播角色。尤其是对于一些企业来说,朋友圈是不可或缺的推广渠道。 今天就给大家分享一个能够实现一键转发和自动转发好友朋友圈的工具——微信管理系统,让大家都能有效的管理朋友圈。 1、定时发圈&…...
线性顺序表算法库
list.cpp 具体函数实现 #include <stdio.h> #include "list.h" #include <malloc.h>/************************************************** ①函数名: CreateList 功 能: 用数组构建顺序表 参 数: ①SqList *&L:传入的线性表 ②ElemType a[]:使用…...
java分割等和子集(力扣Leetcode416)
分割等和子集 力扣原题链接 给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] …...
383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 func canConstruct(ransomNote …...
【二】【单片机】有关独立按键的实验
自定义延时函数Delay 分别用Delay.c文件存储Delay函数。用Delay.h声明Delay函数。每次将这两个文件复制到工程中,直接使用。 //Delay.c void Delay(unsigned int xms) //11.0592MHz {while(xms--){unsigned char i, j;i 2;j 199;do{while (--j);}…...
AJAX踩坑指南(知识点补充)
JWT JSON Web Token是目前最为流行的跨域认证解决方案 如何获取:在使用JWT身份验证中,当用户使用其凭据成功登录时,将返回JSON Web Token(令牌) Token本质就是一个包含了信息的字符串 如何获取Token:登录成功之后,服务…...
备战蓝桥杯Day29 - 拼接最大数字问题
问题描述 有n个非负整数,将其按照字符串拼接的方式拼接为一个整数如何拼接可以使得得到的整数最大? 例: 32,94,128,1286,6,71可以拼接除的最大整数为 94716321286128。 问题思路 1.比较两个字符串的第一个数字,数值大的在前面,数值小的在…...
基于springboot的mysql实现读写分离
前言: 首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库,主库的职能是负责写,从库主要是负责读…...
Python爬虫之Scrapy框架系列(24)——分布式爬虫scrapy_redis完整实战【XXTop250完整爬取】
目录: 每篇前言:1.使用分布式爬取豆瓣电影信息(1)settings.py文件中的配置:(2)spider文件的更改:(3)items.py文件(两个项目一致!&…...
提升效率,稳定可靠:亚信安慧AntDB的企业价值
亚信安慧AntDB分布式数据库凭借平滑扩展、高可用性和低成本三大核心优势,在业界获得了极高的评价和认可。这些优点不仅为AntDB提供了巨大的市场发展潜力,也使其成为众多企业在数据管理上的首选解决方案。 AntDB的平滑扩展特性极大地提升了企业的灵活性和…...
洛谷入门——P1567 统计天数
统计天数 题目描述 炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。 经历千辛万苦,他收集了连续 N ( 1 ≤ N ≤ 1 0 6 ) N(1 \leq N …...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
