1516. 棋盘上的车

☆   输入文件:rook.in   输出文件:rook.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

在n*n(n≤20)的方格棋盘上放置n 个车,求使它们不能互相攻击的方案总数。

【输入格式】

一行一个正整数n。

【输出格式】

一行一个正整数,即方案总数。

【样例输入】

3

【样例输出】

6

【来源】

周伟,《状态压缩》,引例

/*
乘法原理:
第一步有n种决策,第二步有 n-1种决策,…… 第N步有 1种决策
前一步都对后一步产生影响。都对答案有贡献。
因此,ans=n!
*/
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll n,ans=1;
int main(){freopen("rook.in","r",stdin);freopen("rook.out","w",stdout);cin>>n;for(ll i=1;i<=n;i++) ans*=i;cout<<ans;
}

//f[11111]表示在五行每一行都放车的方案数
#include<cstdio>
typedef long long ll;
ll n,f[1<<20];
int main(){freopen("rook.in","r",stdin);freopen("rook.out","w",stdout);scanf("%lld",&n);f[0]=1;for(ll  i=1;i<(1<<n);i++){for(ll S=i;S;S-=(S&-S)){f[i]+=f[i& ~(S&-S)];}}printf("%lld\n",f[(1<<n)-1]);return 0;
}

转载于:https://www.cnblogs.com/shenben/p/6545102.html

1516. 棋盘上的车[组合数学][状态压缩]相关推荐

  1. 【转】状态压缩动态规划

    引入  首先来说说"状态压缩动态规划"这个名称,顾名思义,状态压缩动态规划这个算法包括两个特点,第一是"状态压缩",第二是"动态规划". 状 ...

  2. 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)

    目录 Problem A. 最短Hamilton路径 ProblemB. 蒙德里安的梦想 Problem C. Corn Fields Problem D. 小国王 Problem E. 炮兵阵地 P ...

  3. LeetCode 1066. 校园自行车分配 II(状态压缩DP)

    文章目录 1. 题目 2. 解题 2.1 回溯超时 2.2 状态压缩DP 1. 题目 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工 ...

  4. 状态压缩动态规划 - 总结【普及+,提高-】

    状态压缩动态规划是一类特殊的动态规划,通常有一维用来表示一个二进制状态.状态压缩,顾名思义,就是把原来要一个bool数组表示状态压缩到一个int变量里.围绕状压DP,我们将介绍它的前世今生,领略状压D ...

  5. 第一章 动态规划 状态压缩DP

    1.基本概述 状态压缩dp和状态机一样,都是一种特殊的状态表示方式.状态机用一系列小状态表示某一状态.状态压缩dp用二进制数进行表示.虽然看代码起来时间复杂度比较高,但是很多的情况都给剪枝掉了. 状态 ...

  6. 动态规划——状态压缩dp

    文章目录 概述 状态压缩 使用条件 状压dp 位运算 棋盘(基于连通性)类问题 概述 例题 蒙德里安的梦想 小国王 玉米田 炮兵阵地 集合类问题 概述 例题 最短Hamilton路径 愤怒的小鸟 总结 ...

  7. pat 食物链(状态压缩求哈密顿回路)

    状态压缩求哈密顿回路 #include<bits/stdc++.h> using namespace std; bool dp[23][1<<21]; char s[22][2 ...

  8. POJ-1753 Flip Game 枚举 状态压缩

    刚开始做这题时总是在想应该用何种的策略来进行翻装,最后还是没有想出来--- 这题过的代码的思路是用在考虑到每个点被翻装的次数只有0次或者是1次,所以对于16个点就只有2^16中请况了.再运用位运算将状 ...

  9. 状压DP Hiho-1044 状态压缩

    状态压缩 [HihoCoder - 1044] 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市--那座城市即将举行美食节! 但是不幸的是,小 ...

最新文章

  1. raspberry pi下使用mp3blaster播放mp3音乐
  2. 在字节跳动工作是什么样的体验?
  3. Clipboard类summary
  4. VMware的快照和克隆总结
  5. Tomcat管理平台
  6. javascript --- 利用节点关系访问HTML元素
  7. linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国
  8. 语言程序推箱子课设报告_“延期不延学”第13期 | C++篇 | c++课设建议
  9. css练习github,10个Github上相见恨晚的CSS 奇技淫巧项目,帮你找到写CSS的灵感!
  10. 我是如何把SpringBoot项目的并发提升十倍量级的
  11. 挑选32 2K显示器
  12. 【运动学】基于matlab模拟布朗运动(可输入温度)【含Matlab源码 1610期】
  13. 怎么把音频转换成mp3,一键批量转换法
  14. python 100以内的奇数和_python入门:输出1-100之内的所有奇数和偶数
  15. 构筑“数据连接器”,腾讯云大数据推出“开源开放”战略
  16. 物理机通过Xshell连接不上虚拟机的解决方案
  17. 特种浓缩分离:中药提取液的澄清过滤技术
  18. android 状态栏高度多少像素,Android之获取屏幕的尺寸像素及获取状态栏标题栏高度...
  19. 【原创】Python 使用jmpy模块加密|加固 python代码
  20. android 手机 跑分榜,Android手机哪家强?安兔兔鲁大师榜单见分晓!

热门文章

  1. DWZ 验证 CLASS 规则
  2. filebeat6.2.3收集多个日志源 多个topic输出
  3. zzfrom水木-Linux环境学习和开发心得(作者:lunker)
  4. hdu4685 最大匹配可能性
  5. C语言经典例24-分数累加和
  6. 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )
  7. 【C 语言】数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )
  8. 【字符串】字符串查找 ( Rabin-Karp 算法 )
  9. 【错误记录】Flutter 报错 ( Android Studio 中 main.dart 左侧不显示设备栏 )
  10. 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )