【BZOJ1814】Ural 1519 Formula 1 插头DP

【BZOJ1814】Ural 1519 Formula 1

题意:一个 m * n 的棋盘,有的格子存在障碍,求经过所有非障碍格子的哈密顿回路个数。(n,m<=12)

题解:插头DP板子题,刷板子,附带题解链接。

如何存放状态呢?可以采用hash,我们的hash表形如一个队列,每次新加入一个状态时,就沿着这个状态在队列中对应的hash值不断向后找,直到找到这个状态或者发现一个空位为止。

本题我的状态采用了4进制表示。

 

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const int limit=99991;
int n,m,k,tot[2],nn,mm;
bool v[20][20];
char str[20];
ll tag,ans;
int hs[limit],state[2][limit];
ll dp[2][limit];
inline void upd(ll S)
{register int pos=S%limit;while(hs[pos]){if(state[k][hs[pos]]==S){dp[k][hs[pos]]+=tag;return ;}pos++;if(pos==limit)	pos=0;}hs[pos]=++tot[k],state[k][tot[k]]=S,dp[k][tot[k]]=tag;
}
int main()
{register int i,j,t,u,tmp,p,q,x,y,S,T;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%s",str+1);for(j=1;j<=m;j++)asdasd{v[i][j]=str[j]=='.';if(v[i][j])	nn=i,mm=j;}}tot[0]=1,state[0][1]=0,dp[0][1]=1;for(i=1;i<=n;i++){for(j=1;j<=m;j++){k^=1;memset(hs,0,sizeof(hs));memset(state[k],0,sizeof(state[k][0])*(tot[k]+1));memset(dp[k],0,sizeof(dp[k][0])*(tot[k]+1));tot[k]=0;for(t=1;t<=tot[k^1];t++){S=state[k^1][t],tag=dp[k^1][t],y=j<<1,x=y-2,p=(S>>x)&3,q=(S>>y)&3,T=S^(p<<x)^(q<<y);if(!v[i][j]){if(!p&&!q)	upd(T);continue;}if(p==0&&q==0&&v[i][j+1]&&v[i+1][j]){upd(T|(1<<x)|(2<<y));continue;}if((p==0&&q==1)||(p==1&&q==0)){if(v[i+1][j])	upd(T|(1<<x));if(v[i][j+1])	upd(T|(1<<y));continue;}if((p==0&&q==2)||(p==2&&q==0)){if(v[i+1][j])	upd(T|(2<<x));if(v[i][j+1])	upd(T|(2<<y));continue;}if(p==2&&q==1){upd(T);continue;}if(p==1&&q==2&&i==nn&&j==mm){ans+=tag;continue;}if(p==1&&q==1){for(tmp=0,u=y+2;u<=m+m&&tmp>=0;tmp+=((T>>u)&1)-((T>>(u+1))&1),u+=2);u-=2,upd(T^(3<<u));continue;}if(p==2&&q==2){for(tmp=0,u=x-2;u>=0&&tmp>=0;tmp+=((T>>(u+1))&1)-((T>>u)&1),u-=2);u+=2,upd(T^(3<<u));continue;}}}for(t=1;t<=tot[k];t++)	state[k][t]<<=2;}printf("%lld",ans);return 0;
}

 

转载于:https://www.cnblogs.com/CQzhangyu/p/8010738.html

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

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

相关文章

docker-compose安装问题

&#xff08;一&#xff09;docker-compose安装超时 1、设置一个timeout pip install --default-timeout100 docker-compos2、下载到本地 docker_compose-1.27.0-py2.py3-none-any.whl首先去下载&#xff1a;https://pypi.org/project/docker-compose/#files 然后用xftp上传…

java更改包名称_更改Java包名称如何改变我的系统架构

java更改包名称即使只是少量更改角度&#xff0c;也可能对您如何使用系统产生深远影响。 假设您正在用Java编写Web应用程序。 在系统中&#xff0c;您处理订单&#xff0c;客户和产品。 作为一个Web应用程序&#xff0c;您的类包括诸如Controller&#xff0c;PersonRepository&…

linux系统界面光标不见了---木有了

直接在界面输入命令 echo -e “\033[?25l” 隐藏光标 echo -e “\033[?25h” 显示光标

Java----前端验证之验证码额实现

验证码是常用的登录验证方式之一,最大的作用就是保证安全,验证码的生成在java中实现的方式有很多种,比如后台生成传输到前端页面,在前台直接生成进行验证,下面写一个最简单实现验证码验证登录的例子. 生成验证码: 验证码验证逻辑: From表单登录: 没错,就这么的简单.在scripts生…

使用Spring Boot隔离集成测试和模拟依赖项

集成测试可能很慢且不可靠&#xff0c;因为它们依赖于系统中过多的组件。 在某种程度上&#xff0c;这是不可避免的&#xff1a;这里的集成测试是为了验证系统的每个部分如何与其他内部或外部组件一起玩。 但是&#xff0c;我们可以通过仅分解所需的依赖关系而不是整个系统来改…

CSS浏览器兼容性问题

CSS浏览器兼容性问题 1、浏览器CSS样式初始化 最简单的初始化方法就是&#xff1a;使用通配符&#xff08;*&#xff09;&#xff0c;重置所有的初始样式。 *{margin: 0;padding: 0; } /* 10px1rem */ html {overflow-y:scroll;font-size:62.5%; } a{text-decoration:none; …

Ubuntu 16.04下使用Wine安装Xshell 4和Xftp 4

说明&#xff1a; 1、使用的Wine版本是深度出品&#xff08;Deepin&#xff09;&#xff0c;已经精简了很多没用的配置&#xff0c;使启动能非常快&#xff0c;占用资源小。 2、由于Xshell 5的C库无法在这个Wine版本运行&#xff0c;即使升级官方原版的2版本也无法解决&#xf…

字符串反序输出字符串

Console.Write("请输入一个字符串&#xff1a;"); string str Console.ReadLine(); string reverse "";//用于存放反序后的字符串 for (int i str.Length - 1; i > 0; i--) {   reverse str[i]; } Console.WriteLine(reverse":串符字个一入输…

centos8服务器创建新用户并指定该用户只能打开某个目录文件

ssh -V来查看openssh的版本 需求&#xff1a;sftp组&#xff0c;用户mysftp&#xff0c;该用户不能使用ssh&#xff0c;且sftp登录后只能在自己的主目录下操作&#xff0c;不能访问其他目录 1、创建sftp组 groupadd sftp2、创建一个sftp用户&#xff0c;名为mysftp useradd …

[转载]Oracle ltrim() 函数用法

前面有说到过LPAD和RPAD这两个函数用法的文章&#xff0c;今天发现与之相反意义的另外两个函数&#xff0c;那就是LTRIM() RTRIM()。 这次就挑LTRIM() 这一函数来讲讲&#xff1a; 具体的语法格式如下&#xff1a; LTRIM(c1,[,c2]) 【功能】删除左边出现的字符串 【参数】C1 字…

电脑缺失MSVCP110.dll文件

安装某软件显示如下错误。 错误&#xff1a; 原因&#xff1a;电脑缺少MSVCP110.dll系统文件。C:\Windows\System32目录下没有此文件。 解决&#xff1a; 下载vcredist_x64直接双击安装&#xff0c;安装完成后就可以继续安装之前安装不了的软件了。。 这里是我下载的&#…

js正则 匹配 正则表达式

1.由数字、26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$2.非负整数&#xff08;正整数 0 &#xff09;: ^/d$3.正整数: ^[0-9]*[1-9][0-9]*$4.非正整数&#xff08;负整数 0&#xff09;&#xff1a; ^((-/d)|(0))$5.负整数 ^-[0-9]*[1-9][0-9]*$6.整数: ^-?…

chromedriver链接

http://npm.taobao.org/mirrors/chromedriver/转载于:https://www.cnblogs.com/shuo1208/p/8023827.html

web csrf java_在Java Web应用程序中阻止CSRF

web csrf java跨站点请求伪造攻击&#xff08;CSRF&#xff09;在Web应用程序中非常常见&#xff0c;如果允许&#xff0c;可能会造成重大危害。 如果您从未听说过CSRF&#xff0c;建议您查看有关它的OWASP页面 。 幸运的是&#xff0c;阻止CSRF攻击非常简单&#xff0c;我将向…

MySQL 安全性知识要点

添加、删除用户 1.添加用户 可以使用CREAT USER语法添加一个或多个用户&#xff0c;并设置相应的密码。 语法格式&#xff1a; CREAT USER user [IDENTIFIED BY [PASSWORD] password] [,user [IDENTIFIED BY [PASSWORD] password] ] ... 其中&#xff0c;user的格式为&…

在WildFly的REST Web服务中与Jackson的双向关系

这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例。 假设我们在两个实体Parent和Child之间存在双向关系。 使用MySQL工作台为这两个表生成SQL模式文件。 DROP SCHEMA IF EXISTS bidirectional_schema ; CREATE SCHEMA IF NOT EXISTS bidirectional_schema DEFA…

ICMP Internet控制报文协议

ICMP报文主要有两大功能&#xff1a;查询报文和差错报文。转载于:https://www.cnblogs.com/gardenofhu/p/8027431.html

Postman安装与使用(网络请求神器)--post、get请求

安装 1、Postman最早是作用chrome浏览器插件存在的&#xff0c;所以&#xff0c;你可以到chrome商店搜索下载安装&#xff0c;因为重所周知的原因&#xff0c;所以&#xff0c;大家都会找别人共享的postman插件文件来安装。由于2018年初Chrome停止对Chrome应用程序的支持。 官…

c# 对象 类

类定义中可以使用的访问修饰符组合none or internal 类只能在当前工程中访问public 类可以在任何地方访问abstract or internal abstract 类只能在当前工程中访问&#xff0c;不能实例化&#xff0c;只能继承public abstract 类可以在任何地方访问&#xff0c;不能实例化&#…

openshift用户管理_OpenShift Express Web管理控制台:入门

openshift用户管理本周&#xff0c; 最新版本的OpenShift为已经很棒的PaaS Cloud提供商带来了两个非常好的功能。 首先&#xff0c;JBoss AS已从7.0升级到7.1&#xff0c;并且所有新的Express Web Management Console已作为预览发布。 在本文中&#xff0c;我们将研究如何使用此…