P1074 靶形数独
正着搜80分,完全倒置95分,完全倒置后左右再倒置,就会A掉,到时候脑洞要大一些。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<queue>
  4. #include<algorithm>
  5. #include<cmath>
  6. #include<ctime>
  7. #include<set>
  8. #include<map>
  9. #include<stack>
  10. #include<cstring>
  11. #define inf 2147483647
  12. #define For(i,a,b) for(register int i=a;i<=b;i++)
  13. #define p(a) putchar(a)
  14. #define g() getchar()
  15. //by war
  16. //2017.11.7
  17. using namespace std;
  18. bool xuse[][],yuse[][];
  19. int a[][];
  20. int ans,n=;
  21. int tot;
  22. void in(int &x)
  23. {
  24. char c=g();x=;
  25. while(c<''||c>'')c=g();
  26. while(c<=''&&c>='')x=(x<<)+(x<<)+c-'',c=g();
  27. }
  28. void o(int x)
  29. {
  30. if(x>)o(x/);
  31. p(x%+'');
  32. }
  33.  
  34. inline bool test(register int step,register int num)
  35. {
  36. register int x=(step/)/*;
  37. register int y=(step%)/*;
  38. For(i,,)
  39. For(j,,)
  40. if(a[x+i][y+j]==num)
  41. return false;
  42. return true;
  43. }
  44.  
  45. inline int get()
  46. {
  47. int cnt=;
  48. int t=;
  49. For(len,,)
  50. {
  51. t++;
  52. For(j,len,n-len)
  53. cnt+=a[len][j]*t;
  54. if(len==)
  55. break;
  56. For(j,len,n-len)
  57. cnt+=a[n-len][j]*t;
  58.  
  59. For(i,len+,n-len-)
  60. cnt+=a[i][len]*t;
  61.  
  62. For(i,len+,n-len-)
  63. cnt+=a[i][n-len]*t;
  64. }
  65. return cnt;
  66. }
  67.  
  68. inline void dfs(register int step)
  69. {
  70. if(step==)
  71. {
  72. ans=max(get(),ans);
  73. tot++;
  74. return;
  75. }
  76. if(a[step/][step%]!=)
  77. dfs(step+);
  78. else
  79. for(register int i=;i>=;i--)
  80. {
  81. if(!xuse[step/][i]&&!yuse[step%][i]&&test(step,i))
  82. {
  83. a[step/][step%]=i;
  84. xuse[step/][i]=true;
  85. yuse[step%][i]=true;
  86. dfs(step+);
  87. a[step/][step%]=;
  88. xuse[step/][i]=false;
  89. yuse[step%][i]=false;
  90. }
  91. }
  92. }
  93.  
  94. int main()
  95. {
  96. for(register int i=;i>=;i--)
  97. For(j,,)
  98. {
  99. in(a[i][j]);
  100. if(a[i][j]!=)
  101. {
  102. xuse[i][a[i][j]]=true;
  103. yuse[j][a[i][j]]=true;
  104. }
  105. }
  106. dfs();
  107. if(ans!=)
  108. o(ans);
  109. else
  110. puts("-1");
  111. return ;
  112. }

P1074 靶形数独的更多相关文章

  1. 洛谷——P1074 靶形数独

    P1074 靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z ...

  2. 洛谷P1074 靶形数独 [搜索]

    题目传送门 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了 ...

  3. 洛谷 P1074 靶形数独 Label:search 不会

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

  4. P1074 靶形数独题解

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  5. P1074 靶形数独 dfs回溯法

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  6. [洛谷P1074] 靶形数独

    洛谷题目链接:靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博 ...

  7. 洛谷 P1074 靶形数独

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

  8. [NOIP2009] 提高组 洛谷P1074 靶形数独

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

  9. luogu P1074 靶形数独

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...

随机推荐

  1. 使用 mod_rewrite 来修改 Confluence 6 的 URLs

    备注:这个页面的文档是 Apache 的配置,而不是 Confluence 自己的配置.Atlassian 将会对 Confluence 的配置提供支持,但是我们不能保证能够对你所有在配置 Apach ...

  2. Confluence 6 影响语言的其他设置

    一个独立的用户可以在 Confluence 中选择应用到界面文字和消息中的语言.请注意,支持的语言类型基于在 Confluence 中安装的语言包. 你登录使用 Confluence 回话的语言基于下 ...

  3. Confluence 6 浏览默认的 Decorators

    在任何时候,你都可以使用 "Site Layouts" 页面中的 "View Default" 来浏览默认的 decorator 文件.模板浏览器允许你查看使用 ...

  4. Confluence 6 创建一个主题

    如果你希望创建你自己的主题,你需要写一个 Confluence 插件.请参考我们开发文档中的下面页面 开始使用 插件开发. 请参考开发者指南的页面来 写一个 Confluence 主题. 使用 主题插 ...

  5. 【mysql】datetime时间比较

    如下,比较的日期用指定格式写出就可以了.不需要日期函数. SELECT * FROM table_a WHERE write_date > "2017-07-17 00:00:00&q ...

  6. Kali安装问题解决方案

    一.对今天安装Kalilinux  失败的原因做一个简单的总结, 1.安装之前的电脑状况,电脑配置Windows7 64位旗舰版配置,虚拟版本是VMware Workstation Pro14 ver ...

  7. easyui组件window拖动时超过浏览器顶部则无法拖回

    项目研发过程中遇到一个问题,easyui的window可以随意拖动或者放大缩小,但是鼠标只有放在“header”上面时鼠标箭头才会变成四个方向的箭头,也就是只有在这时才能拖动窗口:但是当拖动的窗口超过 ...

  8. 数据结构c++实现代码-链表

    /*节点Node的相关声明与定义*/ //Node.h #include<iostream> using namespace std; template<typename T> ...

  9. java Map按Key排序

    public static void main(String[] args) { Map<String, String> map = new TreeMap<String, Stri ...

  10. SQLSERVER 数据量太大,重启服务器后,数据库显示正在恢复

    问题:如题. 解决方法:右键数据库   属性——选项——恢复模式:简单