#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL; const int N = 1 << 13;
int n , a[N];
LL ans , fac[13]; inline bool check(int len)
{
for(register int i = 1; i <= 1 << n - len; i++)
if (a[(i - 1) * (1 << len) + 1] + (1 << len - 1) != a[(i - 1) * (1 << len) + 1 + (1 << len-1)])
return false;
return true;
} inline void sswap(int s , int t , int len)
{
for(register int i = 0; i < len; i++)
swap(a[s + i] , a[t + i]);
} inline void dfs(int len , int step)
{
if (len && !check(len)) return;
if (len == n)
{
ans += fac[step];
return;
}
dfs(len + 1 , step);
int tot = 0 , c[5];
for(register int i = 1; i <= 1 << n - len; i += 2)
if (a[(i - 1) * (1 << len) + 1] + (1 << len) != a[i * (1 << len) + 1])
{
if (tot >= 4) return;
c[++tot] = i , c[++tot] = i + 1;
}
if (!tot) return;
for(register int i = 1; i <= tot; i++)
for(register int j = i + 1; j <= tot; j++)
{
sswap((c[i] - 1) * (1 << len) + 1 , (c[j] - 1) * (1 << len) + 1 , 1 << len);
dfs(len + 1 , step + 1);
sswap((c[i] - 1) * (1 << len) + 1 , (c[j] - 1) * (1 << len) + 1 , 1 << len);
}
} int main()
{
scanf("%d" , &n);
for(register int i = 1; i <= (1 << n); i++) scanf("%d" , &a[i]);
fac[0] = 1;
for(register int i = 1; i <= n; i++) fac[i] = fac[i - 1] * 1LL * i;
dfs(0 , 0);
printf("%lld" , ans);
}

最新文章

  1. Server-Sent Events(HTML5 服务器发送事件)
  2. [Java面试十一]数据库总结.
  3. Django笔记-数据库操作(多对多关系)
  4. Facebook React.js库 入门实例教程
  5. C#获取局域网中的所有正在使用的IP地址
  6. 提取日志中的json请求发送到另外一台机器
  7. spring mvc 的Controller类默认Scope是单例(singleton)的
  8. 安装percona-toolkit提示的报错
  9. IT技术开发人员35岁之前应该做的十件事
  10. 关于remote访问中的flex端配置问题
  11. tomacat 配置ssl协议
  12. Visual Assist X 快捷键
  13. Java heap space
  14. javascript代码的小小重构
  15. 安卓电量优化之AlarmManager使用全部解析
  16. DB2开发系列之三——SQL函数
  17. DB 查询分析器7.01 新增的保存执行结果到多个文件功能
  18. (转)Jquery on()事件委派
  19. docker for windows 部署gitlab
  20. linux下mysql-5.6忘记root密码,重置root密码详细过程

热门文章

  1. 关于CSDN获取博客内容接口的x-ca-signature签名算法研究
  2. easui datagrid 行获取后台sql所有数据:支持行chockbox多选,输出选中行任意属性;支持点击表中属性实现跳转;支持分页。
  3. Oracle 插入时间戳id函数func_getnewid()
  4. ArcObjects SDK开发 007 自定义App-Command-Tool框架
  5. WeetCode3 暴力递归-&gt;记忆化搜索-&gt;动态规划
  6. Linux 系统用户文件缺失造成“bash-4.2$”错误的解决办法
  7. 什么是django中间件?(七个中间件-自定义中间件)
  8. 常用模块二——hashlib加密模块,subprocess模块,logging日志模块
  9. “喜提”一个P2级故障—CMSGC太频繁,你知道这是什么鬼?
  10. JDBC中文乱码问题