Sheep Eat Wolves

news/2024/10/7 1:04:35/文章来源:https://www.cnblogs.com/watersail/p/18449689
  • 【具体问题具体分析】通过bfs遍历状态空间
  • STL tuple(元组)
  • j>i+q 隐含前提:i,j>0(理解式子,自己写出来)
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int x,y,p,q;
bool v[105][105][2];
bool check(int i,int j,int opt)
{if(v[i][j][opt]==true){return false;}if(!opt){i=x-i;j=y-j;}if(i>0&&j>0&&j>i+q){return false;}return true;
}
typedef tuple<int,int,int,int> t1;
queue<t1>cur; 
void dp(int i,int j,int opt,int step)
{cur.push(make_tuple(i,j,opt,step));v[i][j][opt]=true;while(!cur.empty()){t1 n1=cur.front();cur.pop();int i=get<0>(n1),j=get<1>(n1),opt=get<2>(n1),step=get<3>(n1);if(i==0){cout<<step<<endl;return;}if(opt==0){for(int k=0;k<=i;k++){for(int l=0;l<=j&&k+l<=p;l++){if(check(i-k,j-l,1)){v[i-k][j-l][1]=true;cur.push((t1){i-k,j-l,1,step+1});}}}}else{for(int k=0;k<=x-i;k++){for(int l=0;l<=y-j&&k+l<=p;l++){if(check(i+k,j+l,0)){v[i+k][j+l][0]=true;cur.push((t1){i+k,j+l,0,step+1});}}}}}cout<<-1<<endl;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin>>x>>y>>p>>q;dp(x,y,0,0);return 0;
}

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

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

相关文章

.net8系列-07图文并茂手把手教你连接SqlServer数据库使用log4net记录.net日志

@目录前情提要步骤概览下载依赖下载安装成功数据库准备脚本准备执行脚本,创建所需数据库创建成功,查看日志表准备代码初始代码配置数据库开启数据库写入日志逻辑开启日志运行测试删除之前的编译文件重新编译运行测试本地日志测试成功数据库日志测试成功结语欢迎路过的小哥哥小…

全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用

Python 的 re 模块提供了强大的正则表达式操作功能,用于在字符串中搜索、匹配、替换等,正则表达式是一种匹配字符串的模式。通过正则表达式,可以轻松地查找特定模式的字符串片段,如匹配电子邮件地址、手机号、特定格式的日期等。全网最适合入门的面向对象编程教程:56 Pyth…

【安全运营】漏洞全流程自动化动态清零运营与实践

一、战术思路二、技战法详情三、应用效果原创 杨启维 安全村SecUN随着各类安全漏洞频出,极易造成漏洞修复不及时系统被入侵;与此同时,银行的应用系统关联关系复杂,而漏洞的修复大部分会改变系统的全局参数,极有可能影响业务连续性。如何快速对接多源头漏洞数据,缩短风险窗…

【linux+权限提升】利用iptables提权

原创 柠檬赏金猎人声明 仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。iptables和iptables-save链接在一起实现任意代码执行。 以下三个步骤 1.使用提供的注释功能将…

mysql安装及配置

MySQL 1.安装 & 配置 & 启动 1.1 win系统 第1步:下载安装https://downloads.mysql.com/archives/community/第2步:解压至任意文件夹 建议解压至软件安装目录【我一般习惯安装到C盘根目录,方便查找】第3步:创建配置文件 在MySQL的安装目录下创建 my.ini 的文件,作为…

使用云服务器搭建RustDesk实现远程控制

RustDesk它是一个远程控制的方案,目前处于免费阶段,一种链接使用RustDesk自己的服务器来转发,另一种则是使用自己服务器搭建的进行转发,其实Teamview,向日葵,Todesk之所有流畅就是背后服务器的支持,而在这里使用普通的云服务器就可以流程使用了, 官方地址 https://rust…

【主机持久化】注册表自动运行

HKCU 和 HKLM 中的 AutoRun 值允许应用程序在开机时启动,通常这些值用于启动本机和第三方应用程序,例如软件更新程序、下载助手、驱动程序实用程序等 beacon> cd C:\ProgramData beacon> upload C:\Payloads\http_x64.exe beacon> mv http_x64.exe updater.exe beac…

pbootcms模板如何调用时间 时间格式大全

PbootCMS列表页和详情页中时间格式化的不同样式及其效果:场景 标签 参数 效果列表页 [list:date] 无参数 2021-12-06 09:12:30列表页 [list:date style=Y-m-d] style=Y-m-d 2021-12-06列表页 [list:date style=Y] style=Y 2021列表页 [list:date style=m-d] style=m-d 12-06列…

宝塔面板修改端口号,无法访问_宝塔修改端口后无法访问

宝塔面板修改端口号后无法访问的解决步骤:确认新端口号:确保已正确记下新的宝塔面板端口号。检查防火墙设置:如果服务器有防火墙(如iptables或ufw),确保新的端口已被添加到防火墙规则中允许外部访问。更新DNS解析或hosts文件:如果原来通过域名直接访问宝塔面板,可能需要…

连接Mysql时出现的“no database selected”错误该如何解决?

遇到“no database selected”错误通常是因为在尝试执行SQL查询时没有明确指定要使用的数据库。以下是解决这个问题的步骤:确认连接时已选择数据库在连接数据库之后,确保已经选择了具体的数据库。例如,在MySQL中,可以使用 USE <database_name>; 语句来选择一个数据库…

打开网页显示数据库连接出错

当打开网页时出现“数据库连接出错”的提示,通常意味着网站后端尝试与数据库建立连接时遇到了问题。这可能是由以下几个原因造成的:数据库服务器未启动:确保数据库服务正在运行。 网络问题:检查数据库服务器和应用服务器之间的网络连接是否正常。 配置错误:确认应用程序中…

Navicat连接数据库遭遇1045错误:如何解决及预防措施

遇到 Navicat 连接 MySQL 数据库时出现 1045 错误(访问被拒绝,用户名或密码错误),可以通过以下几个步骤来解决和预防这个问题: 解决方法确认用户名和密码确认在 Navicat 中输入的用户名和密码是否正确。 可以尝试在 MySQL 命令行中验证用户名和密码是否正确。重置密码如果…