SSL 1382 车 状压dp
来源:互联网 发布:黑客帝国3:矩阵革命mp4 编辑:程序博客网 时间:2024/06/05 05:21
在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),有些格子不能放,求使它们不能互相攻击的方案总数。
我们用ar表示第r行不允许放置的情况,如果第r行某一位不允许放置则ar此位为0,否则为1,这可以在读入数据阶段完成。然后对于需要处理的状态s,用ts=s&ar来代替s进行枚举,即不枚举s中的1转而枚举ts中的1。因为ts保证了不允许放置的位为0,这样就可以不用其它的判断来实现算法
代码:var n,i,t,s,ts,m,x,y:longint; f:array[0..2000000] of int64; a:array[1..20] of longint; begin readln(n); for i:=1 to n do a[i]:=1 shl n-1; readln(m); for i:=1 to m do begin readln(x,y); a[x]:=a[x] xor (1 shl (y-1)); end; f[0]:=1; for i:=1 to 1 shl n-1 do begin t:=i; s:=0; while t>0 do begin inc(s); t:=t xor (t and -t); end; ts:=i and a[s]; while ts>0 do begin f[i]:=f[i]+f[i xor (ts and -ts)]; ts:=ts xor (ts and -ts); end; end; writeln(f[1 shl n-1]);end.
0 0
- SSL 1382 车 状压dp
- SSL 1383 车Ⅱ 状压dp
- SSL 1507 棋盘 状压dp
- SSL 1317 海上搜索 状压dp
- SSL 1565 将功补过 树形dp
- SSL 1033 加分二叉树 dp
- SSL 1605 二叉苹果树 树形dp
- SSL 1230 战略游戏 树形dp
- SSL 1608 皇宫看守 树形dp
- 平衡二叉树 ssl 2633 dp
- SSL 1606 选课 树转二叉树+树形dp
- SSL 1607 没有上司的晚会 树形dp
- SSL
- SSL
- ssl
- SSL
- ssl
- ssl
- 集合补充
- Vijos P1484-ISBN号码
- linux shell 编程笔记 - 后台执行命令&
- Longest Palindromic Substring (Manacher Algorithm)
- hdu 4288 离线线段树+间隔求和
- SSL 1382 车 状压dp
- 工作日志
- C++之多继承
- 构造器、方法重载、继承、方法重写、自动转型、多态课堂笔记
- ab压力测试工具详解
- 经验分享从c到c++
- 盒子模型 制作三角形 圆形 导航
- traincascade相关结构体
- 关于tomcat中虚拟主机的设置,以及为同一个网站添加几个域名的方法