【SDOI2015】排序
2024-09-18 16:24:22
#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);
}
最新文章
- Server-Sent Events(HTML5 服务器发送事件)
- [Java面试十一]数据库总结.
- Django笔记-数据库操作(多对多关系)
- Facebook React.js库 入门实例教程
- C#获取局域网中的所有正在使用的IP地址
- 提取日志中的json请求发送到另外一台机器
- spring mvc 的Controller类默认Scope是单例(singleton)的
- 安装percona-toolkit提示的报错
- IT技术开发人员35岁之前应该做的十件事
- 关于remote访问中的flex端配置问题
- tomacat 配置ssl协议
- Visual Assist X 快捷键
- Java heap space
- javascript代码的小小重构
- 安卓电量优化之AlarmManager使用全部解析
- DB2开发系列之三——SQL函数
- DB 查询分析器7.01 新增的保存执行结果到多个文件功能
- (转)Jquery on()事件委派
- docker for windows 部署gitlab
- linux下mysql-5.6忘记root密码,重置root密码详细过程
热门文章
- 关于CSDN获取博客内容接口的x-ca-signature签名算法研究
- easui datagrid 行获取后台sql所有数据:支持行chockbox多选,输出选中行任意属性;支持点击表中属性实现跳转;支持分页。
- Oracle 插入时间戳id函数func_getnewid()
- ArcObjects SDK开发 007 自定义App-Command-Tool框架
- WeetCode3 暴力递归->;记忆化搜索->;动态规划
- Linux 系统用户文件缺失造成“bash-4.2$”错误的解决办法
- 什么是django中间件?(七个中间件-自定义中间件)
- 常用模块二——hashlib加密模块,subprocess模块,logging日志模块
- “喜提”一个P2级故障—CMSGC太频繁,你知道这是什么鬼?
- JDBC中文乱码问题