贪吃蛇 题解

题目传送门

前言

让我出大模拟的都是 shaby !!!

先在这里道个歉,题面确实挺屎的,但是这个锅还是让 hb 来背好了

反正是他说的让我们题面复杂点的

还有这个数据是真的很难造啊

看这篇题解的前提条件

你要充分读题,搞明白蛇是怎么走的

长度短的蛇会后空翻 指的是因为尾巴先走再头走,所以长度为 2 2 2 的蛇是可以直接掉头的

正文

讲真我感觉这个真没什么好讲的,都搞这么久竞赛这都不会那马力是有点太弱了,该练练了

搞两个数组,记录当前位置有没有蛇的身体,还有一个记录蛇的走向,然后就没了。

讲几个易错点

看一下自己变量名有没有打错了

看一下每一步操作的顺序
一些记录数据的地方也要看一下会不会因为顺序出问题

结语

其实没有什么结语

感觉你们这一届很强,rp++;

还有保护好肠胃。

Code

/*
t <= 1e6
n <= 1000,m <= 1000
*/
#include<bits/stdc++.h>
const int N = 1100;
const int M = 1e6+10;
#define fi first
#define se second
using namespace std;
int n,m;
int mp[N][N];
int dirx[N][N],diry[N][N];
char op[M];
int q,p;
pair<int,int> food[M];
int hx,hy,tx,ty,cntf = 1,dx,dy; 
int main(){
//	freopen("snake10.in","r",stdin);
//	freopen("snake10.out","w",stdout);cin >> n >> m >> q >> p;for(int i = 1;i <= q; i++){int t;char x;cin >> t >> x;op[t] = x;}for(int i = 1; i <= p; i++) cin >> food[i].fi >> food[i].se;cin >> hx >> hy;
//	cout << hx << " " << hy << endl;tx = hx;ty = hy-1;dirx[hx][hy] = 0;dirx[tx][ty] = 0;diry[hx][hy] = 1;diry[tx][ty] = 1;dx = 0,dy = 1;int t = 0;bool flag = 0;while(++t){if(hx == food[cntf].fi && hy == food[cntf].se) cntf++,flag = 1;
//		cout << cntf ;
//		break;
//		cout << tx << " " << ty << " " << hx << " " << hy  << " " << dx << " " << dy<< endl;if(!flag){mp[tx][ty] = 0;int xx = dirx[tx][ty];int yy = diry[tx][ty];tx += xx;ty += yy;}if(tx <= 0) tx = n;if(tx > n) tx = 1;if(ty <= 0) ty = m;if(ty > m) ty = 1;flag = 0;if(op[t] == 'D') dx = 1,dy = 0;if(op[t] == 'U') dx = -1,dy = 0;if(op[t] == 'R') dx = 0,dy = 1;if(op[t] == 'L') dx = 0,dy = -1;dirx[hx][hy] = dx;diry[hx][hy] = dy;hx += dx;hy += dy;if(hx <= 0) hx = n;if(hx > n) hx = 1;if(hy <= 0) hy = m;if(hy > m) hy = 1;
//		cout << t << ": " << tx << " " << ty << "xxx" << hx << " " << hy << endl; if(mp[hx][hy]) break;mp[hx][hy] = 1;if(t > 1e6){cout << "-1 " << cntf+1 << "\n";return 0;}
//		 if(t >= 4970)cout << tx << " " << ty << " xxx "<< hx << " " << hy << endl;
//		if(t <= 2500) printf("%d %d\n",hx,hy);
//		 if(t >= 44560 && t <= 44800 && t % 14 == 0) cout << hx << " " << hy << endl;}
//	cout << hx << " " << hy << " " << tx << " " << ty << endl;cout << t << " " << cntf+1 << "\n";return 0;
}
/*
1 3 1 2
3 L
1 1
1 2
1 1
*/

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

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

相关文章

No module named ‘sklearn.metrics.ranking‘ 解决方法

错误代码 from sklearn.metrics.classification import * from sklearn.metrics.ranking import * 错误原因 sklearn这个文件夹下的_classification和_ranking前面有下划线&#xff01; 解决方法 第一步&#xff1a;找到sklearn位置&#xff0c;可以打开命令行输入 pip sh…

使用 Spring Boot 配合策略模式增强系统接口扩展能力

使用 Spring Boot 配合策略模式增强系统接口扩展能力 在软件开发中&#xff0c;系统的可扩展性是一个至关重要的方面。而策略模式是一种常见的设计模式&#xff0c;它可以帮助我们实现灵活的算法选择和系统功能扩展。结合 Spring Boot 框架&#xff0c;我们可以更加方便地利用策…

systrace使用

systrace使用 chrome://tracing/ 抓trace方法 1.脚本 在sdk/platformtools/systrace文件目录下执行&#xff1a; python2 systrace.py -b 32000 -o setting_qian.html gfx input view webview wm am audio video camera app ss sched irq freq idle disk load sync workq reg…

Java入门基础学习笔记18——赋值运算符

赋值运算符&#xff1a; 就是“”&#xff0c;就是给变量赋值的&#xff0c;从右边往左边看。 int a 10; // 把数据赋值给左边的变量a存储。 扩展赋值运算符&#xff1a; 注意&#xff1a;扩展的赋值运算符隐含了强制类型转换。 package cn.ensource.operator;public class…

1062: 有向图的边存在判断

解法&#xff1a; #include<iostream> #include<vector> using namespace std; int arr[100][100]; int main() {int n;int x, y;cin >> n >> x >> y;for (int i 0; i < n; i) {for (int j 0; j < n; j) {cin >> arr[i][j];}}if …

后端常用技能:基于easy-poi实现excel一对多、多对多导入导出【附带源码】

0. 引言 在业务系统开发中&#xff0c;我们经常遇到excel导入导出的业务场景&#xff0c;普通的excel导入导出我们可以利用 apache poi、jxl以及阿里开源的easyexcel来实现&#xff0c;特别easyexcel更是将excel的导入导出极大简化&#xff0c;但是对于一些负载的表格形式&…

MongoDB聚合运算符:$tsIncrement

MongoDB聚合运算符&#xff1a;$tsIncrement 文章目录 MongoDB聚合运算符&#xff1a;$tsIncrement语法使用举例从时间戳字段获取递增序数在变化的数据流游标中使用 $tsIncrement 来监控集合变化 $tsIncrement用来以 long形式返回时间戳的递增序数。当同一秒内发生多个事件时&…

Linux配置两个局域网间的网络转发

网络拓扑如上图所示&#xff0c;有192.168.1.0(255.255.255.0)&#xff0c;192.168.2.0(255.255.255.0)两个局域网。若要使host1可直接通过ip地址访问host3&#xff0c;则需在host2中配置路由转发。 host2 配置静态路由&#xff08;系统一般会自动配置&#xff09; # 添加静…

WEB后端复习——JSP、EL、JSTL

JSP:Java Serve Pages(Java服务器页面) 运行在服务器的脚本、在静态网页HTML代码中嵌入java 优势特点 1.被编译后可以多次直接运行&#xff0c;代码执行效率高&#xff08;一次加载、多次可用&#xff09; 2.动态代码封装&#xff0c;组件可重用性高&#xff08;JavaBean EJ…

GPU常用命令

平台信息 adb shell dumpsys SurfaceFlinger | grep GLES GLES: Imagination Technologies, PowerVR Rogue GE8300, OpenGL ES 3.2 build 1.156070602 负载信息 adb shell dumpsys gpu Stable Game Driver: unsupported Pre-release Game Driver: unsupported Memory snapshot …

《Fundamentals of Power Electronics》——转换器的传递函数

转换器的工程设计过程主要由以下几个主要步骤组成&#xff1a; 1. 定义了规范和其他设计目标。 2. 提出了一种电路。这是一个创造性的过程&#xff0c;利用了工程师的物理洞察力和经验。 3. 对电路进行了建模。组件和系统的其他部分适当建模&#xff0c;通常使用供应商提供的…

前端AJAX与后台交互技术知识点及案例(续2)

以下笔记均为学习哔站黑马程序员AJAX视频所得&#xff01;&#xff01;&#xff01; AJAX作用&#xff1a;浏览器和服务器之间通信&#xff0c;动态数据交互 axios函数 先引入axios库&#xff0c;可在bootcdn中寻找相关js文件或者对应的script标签 axios({url:http://hmajax…

SpringBoot基于微信小程序的星座配对(源码)

博主介绍&#xff1a;✌程序员徐师兄、10年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…

DRAM常用命令

名词解释 RAM 有两大类&#xff0c;一种称为静态RAM&#xff08;Static RAM/SRAM&#xff09;&#xff0c;SRAM速度非常快&#xff0c;是目前读写最快的存储设备了&#xff0c;但是它也非常昂贵&#xff0c;所以只在要求很苛刻的地方使用&#xff0c;譬如CPU的一级缓冲&#xf…

php 检查脚本是否在运行

场景:定时任务启动的时候&#xff0c;由于上一次的任务没执行完&#xff0c;不能同时执行两个定时任务。 if (!function_exists(check_is_running)) {function check_is_running($commandStr){exec("ps aux | grep {$commandStr}",$result);$sum count($result);i…

【Shell】shell编程之循环语句

目录 1.for循环 例题 2.while循环 例题 3.until循环 1.for循环 读取不同的变量值&#xff0c;用来逐个执行同一组命令 for 变量 in 取值列表 do 命令序列 done [rootlocalhost ~]# for i in 1 2 3 > do > echo "第 $i 次跳舞" > done 第 1 次跳舞 第 …

Vue3实战笔记(02)--- 使用VUETIFY图标字体

文章目录 前言一、Material Design 图标二、Font Awesome三、混合方式使用总结 前言 Vuetify 开箱即支持 4 种流行的图标字体库—— Material Design Icons&#xff0c;Material Icons&#xff0c;Font Awesome 4 和 Font Awesome 5。今天为项目安装喜欢的图标。 一、Material…

AI虚拟伴侣方案

打造类似Character AI的产品,现成的训练好的模型方案,适合做陪伴型虚拟女友等项目,近期看到的最佳项目: 1、项目背景: (1)项目动机:角色扮演LLM是AI的第二大消费用例,但通常被开源社区忽视。 (2)行业现状:缺乏与https://character.ai/提供的角色扮演LLM相对应的…

msvcp140dll怎么修复,分享5种有效的解决方法

MSVCP140.dll文件丢失这一现象究竟是何缘由&#xff0c;又会引发哪些令人头疼的问题呢&#xff1f;在探索这个问题的答案之前&#xff0c;我们先来深入了解这个神秘的DLL文件。MSVCP140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;它扮演着至关重要的…

docker运行镜像、docker删除镜像、docker运行容器、docker退出当前容器、docker关闭容器、docker重新回到后台运行的容器命令

docker查看镜像&#xff1a; docker images docker删除镜像&#xff1a; docker rmi IMAGE_NAME:TAG docker运行镜像并进入容器&#xff1a; docker run -it REPOSITORY:TAG /bin/bash docker临时退出当前容器&#xff08;并不关闭容器&#xff0c;容器仍在后台运行&#x…