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

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define LL long long
  4. #define id(i,j) ((i-1)*3+j-1);
  5. struct point{
  6. int a,b;
  7. }p[];
  8. int k,n,m,x,y,g[][],tot[],change[][];
  9. const int dir[][]={,,,-,,,-,,,,,-,-,,-,-};
  10. LL bg,fin,bin[];
  11. bool flag;
  12. map<LL,int>lis;
  13. bool dfs(LL st){
  14. if(lis[st]){
  15. if(lis[st]==) return true;
  16. return false;
  17. }
  18. if(st==fin) return true;
  19. LL tmp;
  20. for(int i=;i<;i++)
  21. if((st%bin[i+])/bin[i]>){
  22. for(int j=;j<;j++)
  23. if(change[i][j]!=- && (st%bin[j+])/bin[j]>){
  24. tmp=st,tmp=tmp-(bin[i]+bin[j])+bin[change[i][j]];
  25. if(dfs(tmp)) {lis[tmp]=; return true;}
  26. }
  27. }
  28. lis[st]=;
  29. return false;
  30. }
  31. int main(){
  32. bin[]=;
  33. for(int i=;i<=;i++) bin[i]=bin[i-]*;
  34. while(scanf("%d%d%d%d%d",&k,&n,&m,&x,&y)!=EOF){
  35. lis.clear(); bg=; flag=;
  36. int num=id(((x-)%+),((y-)%+));
  37. fin=bin[num];
  38. memset(tot,,sizeof(tot));
  39. memset(change,-,sizeof(change));
  40. for(int a,b,i=;i<=k;i++) {
  41. scanf("%d%d",&a,&b);
  42. p[i]=(point){a,b};
  43. int num=id(((a-)%+),((b-)%+));
  44. tot[num]++;
  45. if(tot[num]==) puts("No"),flag=;
  46. else bg+=bin[num];
  47. }
  48. if(flag) continue;
  49. for(int i=;i<n;i++)
  50. for(int j=;j<m;j++)
  51. g[i+][j+]=id((i%+),(j%+));
  52. for(int i=;i<=n;i++)
  53. for(int j=;j<=m;j++)
  54. for(int d=;d<;d++){
  55. int ta=i+*dir[d][],tb=j+*dir[d][];
  56. if(ta< || ta>n || tb< || tb>m) continue;
  57. 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];
  58. }
  59. if(dfs(bg)) puts("Yes");
  60. else puts("No");
  61. }
  62. return ;
  63. }

【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. 扩大Tomcat内存

    在Eclipse里选:Window->Preference->Installed JREs->Edit(选中jre),在Default VM Arguments里输入-Xms256m ...

  2. 腾讯数据总监:运营人员必须掌握的APP基础数据分析体系(没有比这篇更系统全面的)

    导读:在互联网企业,任何一个APP都要事先规划好数据体系,才允许上线运营,有了数据才可以更好的科学运营.因此本文将为大家介绍APP的基础数据指标体系.主要分为五个维度,包括用户规模与质量.参与度分析. ...

  3. 20160620001 FileUpload控件获取上传文件的路径

    参考地址: http://bbs.csdn.net/topics/350051517 —————————————————————————————— 用js实现 <%@ Page Language ...

  4. mac上安装opencv3

    转载于:http://blog.csdn.net/sanwandoujiang/article/details/51159983 在macosx上安装opencv2 brew tap homebrew ...

  5. visual studio 引用lib

    方法1: 要具有lib文件和.h文件 1.加入语句 #pragma comment(lib, 'C:\\test\\Debug\\test.lib' 2.项目右键-〉属性-〉c++ -〉常规-〉附加包 ...

  6. selenium杀掉浏览器进程方法

    * 杀掉浏览器进程      */     public static void operateWindowsProcess(){         WindowsUtils.tryToKillByNa ...

  7. TortoiseGit 连接每次都要输入用户名和密码

    当你配置好git后,在C:\Documents and Settings\Administrator\ 或者  C:\Users\Administrator 目录下有一个 .gitconfig 的文件 ...

  8. [问题2014A11] 复旦高等代数 I(14级)每周一题(第十三教学周)

    [问题2014A11]  设 \(n\) 阶方阵 \(A,B\) 满足: \((A+B)^2=A+B\), \(\mathrm{r}(A+B)=\mathrm{r}(A)+\mathrm{r}(B)\ ...

  9. [问题2014S11] 解答

    [问题2014S11]  解答 我们先引用一下复旦高代书 P310 的习题 6, 其证明可参考白皮书 P257 的例 8.33: 习题6  设实二次型 \(f(x_1,x_2,\cdots,x_n)= ...

  10. 矩阵的QR分解

    #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...