博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1087[SCOI2005]互不侵犯——状压DP
阅读量:6260 次
发布时间:2019-06-22

本文共 752 字,大约阅读时间需要 2 分钟。

题目描述

  在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上

左下右上右下八个方向上附近的各一个格子,共8个格子。

输入

  只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)

输出

  方案数。

样例输入

3 2

样例输出

16
 
 
  n<=9,显然是状压dp,定义状态f[i][j][k]表示枚举到第i行,状态为j,前i行总共放了k个国王的方案数。搜索出一行符合的所有状态,枚举当前行和上一行的状态,判断是否冲突,然后f[i][j][l]+=f[i-1][k][l-t[j]]转移即可。最后答案是∑f[n][j][m]
#include
#include
#include
#include
#include
#include
using namespace std;long long f[12][2000][200];int cnt;int n,m;int s[2000];int t[2000];long long ans;void dfs(int x,int y,int sum){ if(y>=n) { s[++cnt]=x; t[cnt]=sum; return ; } dfs(x,y+1,sum); dfs(x|(1<

转载于:https://www.cnblogs.com/Khada-Jhin/p/9301774.html

你可能感兴趣的文章
无法打开SQL Server的连接
查看>>
java泛型中的对象
查看>>
进程和线程区别理解
查看>>
php创建token
查看>>
Android 系统API实现数据库的增删改查和SQLite3工具的使用
查看>>
95、Android下在onCreate中获取控件的宽度和高度(通过回调)
查看>>
UML在需求分析阶段的应用
查看>>
JavaScript:JavaScript事件的处理
查看>>
WEB安全测试的类型
查看>>
ES6笔记(7)-- Promise异步编程
查看>>
早睡早起
查看>>
C#软件监控外部程序运行状态
查看>>
几款开源的图形化Redis客户端管理软件推荐
查看>>
数据库设计中常见表结构的设计技巧
查看>>
CVPR论文《100+ Times Faster Weighted Median Filter (WMF)》的实现和解析(附源代码)。...
查看>>
MATLAB模糊逻辑(2)
查看>>
linux 内核模块管理
查看>>
【每日一摩斯】-【序列】-续-RAC and Sequences (853652.1)
查看>>
把一个select查询结果插入到一个表(可选指定字段和值实例)
查看>>
使用windbg抓取崩溃文件和分析的过程
查看>>