可以将棋子分为9种类型。且可以通过合并使得两个不同种类棋子转换为另一种棋子(不过要注意棋盘大小,有的时候硬要合并会到棋盘外面,可以先把棋盘全部转换,然后枚举每一个棋子的转换)。然后把状态压成一个十位的十进制数就可以记忆化搜索了。

 #include<bits/stdc++.h>
using namespace std;
#define LL long long
#define id(i,j) ((i-1)*3+j-1);
struct point{
int a,b;
}p[];
int k,n,m,x,y,g[][],tot[],change[][];
const int dir[][]={,,,-,,,-,,,,,-,-,,-,-};
LL bg,fin,bin[];
bool flag;
map<LL,int>lis;
bool dfs(LL st){
if(lis[st]){
if(lis[st]==) return true;
return false;
}
if(st==fin) return true;
LL tmp;
for(int i=;i<;i++)
if((st%bin[i+])/bin[i]>){
for(int j=;j<;j++)
if(change[i][j]!=- && (st%bin[j+])/bin[j]>){
tmp=st,tmp=tmp-(bin[i]+bin[j])+bin[change[i][j]];
if(dfs(tmp)) {lis[tmp]=; return true;}
}
}
lis[st]=;
return false;
}
int main(){
bin[]=;
for(int i=;i<=;i++) bin[i]=bin[i-]*;
while(scanf("%d%d%d%d%d",&k,&n,&m,&x,&y)!=EOF){
lis.clear(); bg=; flag=;
int num=id(((x-)%+),((y-)%+));
fin=bin[num];
memset(tot,,sizeof(tot));
memset(change,-,sizeof(change));
for(int a,b,i=;i<=k;i++) {
scanf("%d%d",&a,&b);
p[i]=(point){a,b};
int num=id(((a-)%+),((b-)%+));
tot[num]++;
if(tot[num]==) puts("No"),flag=;
else bg+=bin[num];
}
if(flag) continue;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
g[i+][j+]=id((i%+),(j%+));
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
for(int d=;d<;d++){
int ta=i+*dir[d][],tb=j+*dir[d][];
if(ta< || ta>n || tb< || tb>m) continue;
change[g[ta-dir[d][]][tb-dir[d][]]][g[i][j]]=change[g[i][j]][g[ta-dir[d][]][tb-dir[d][]]]=g[ta][tb];
}
if(dfs(bg)) puts("Yes");
else puts("No");
}
return ;
}

【BZOJ】2719 银河之星的更多相关文章

  1. bzoj 1923 [Sdoi2010]外星千足虫(高斯消元+bitset)

    1923: [Sdoi2010]外星千足虫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 634  Solved: 397[Submit][Status ...

  2. BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]

    1923: [Sdoi2010]外星千足虫 对于 100%的数据,满足 N≤1,000,M≤2,000. 裸高斯消元解异或方程组 给定方程顺序要求用从上到下最少的方程,那么找主元时记录一下最远找到哪个 ...

  3. BZOJ 1923: [Sdoi2010]外星千足虫

    Description 给出几个异或方程组求解,\(n \leqslant 2000\) Sol 高斯消元. 直接消元就行,遇到自由元就直接输出,同时记录一下用到的最高行数. 复杂度不科学就可以用 b ...

  4. bzoj2719[Violet 4]银河之星

    Description Input Output 一道坑爹的搜索……题意是可以往任意方向移动3格,或者如果旁边有格子的时候可以越过它移动,然后把它吃掉.要求吃到最后一个的位置在x0,y0 注意到可以越 ...

  5. BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)

    题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...

  6. BZOJ 1923 SDOI2010 外星千足虫 异或方程组+bitset

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1923 懒得贴题目了......这就是解一个异或方程组的裸题...... YY了一下异或方程 ...

  7. bzoj 1923: [Sdoi2010]外星千足虫【高斯消元】

    裸的异或高斯消元 #include<iostream> #include<cstdio> using namespace std; const int N=2005; int ...

  8. BZOJ 1923: [Sdoi2010]外星千足虫 高斯消元+bitset

    高斯消元求解异或方程组,可以多学一下 $bitset$ 在位运算中的各种神奇操作. #include <cstdio> #include <bitset> #define N ...

  9. bzoj violet系列 (2708~2725)

    cbh大爷说:写博客不能弃坑. orz cbh 那我就来更新博客了. violet这个系列的题好神啊……出题人好劲啊…… ……怎么最近都在理性愉悦啊…… 另外bzoj400题纪念~ 2708: [Vi ...

随机推荐

  1. 2.1.5 计算机网络协议: TCP/IP

    应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter].此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCP/IP 的应用层: 应用层:由应用层提供的 HTTP 通讯协议 ...

  2. 关于webservice大数据量传输时的压缩和解压缩

    当访问WebSerivice时,如果数据量很大,传输数据时就会很慢.为了提高速度,我们就会想到对数据进行压缩.首先我们来分析一下. 当在webserice中传输数据时,一般都采用Dataset进行数据 ...

  3. create thread的时候发生core dump

    #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...

  4. [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化)

    Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...

  5. js与jsp

    jsp :j2ee 中的一样模版技术,运行于服务器端javascript :一种运行于客户端的脚本语言,动态性.JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的 ...

  6. Android自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  7. async和await浅析

    要理解async和await的用法,首先要了解Task相关知识,这里不做说明,因为这不是本文的重点. 如果你已经对Task很了解,那么如何使用async和await,在此主要总结了以下三点: 只有在a ...

  8. Hibernate的关联映射——双向1-N关联

    Hibernate的关联映射--双向1-N关联 对于1-N的关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而是用N的一端控制关联关系.双线的1-N关联和N-1关联是两种相同 ...

  9. 登录锁定状态下Win7关机技巧总结

    登录锁定状态下Win7关机技巧总结 一般在锁定状态都是有个关闭电脑的图标的.但是如果你的系统没有,那么怎么样关机呢,所谓的锁定状态通常是指电脑在登录界面,具体的实现如下,感兴趣的朋友可以参考下 现在大 ...

  10. Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED

    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip install virtua ...