[状压DP]车
车
车
车
题目描述
在
n
∗
n
n*n
n∗n(
n
≤
20
n≤20
n≤20)的方格棋盘上放置
n
n
n个车(可以攻击所在行、列),有些格子不能放,求使它们不能互相攻击的方案总数。
输入
第一行为棋盘的大小
n
n
n
第二行为障碍的数量
m
m
m
第三行到第
m
+
3
m+3
m+3为
m
m
m个障碍
输出
总数
样例输入
4
2
1 1
2 2
样例输出
14
题目解析
首先,我们看题,想到可以用
D
P
DP
DP来做。以
f
[
i
]
[
j
]
f[i][j]
f[i][j]来储存位置
i
,
j
i,j
i,j的状态。
但考虑到要考虑到棋盘的状态,所以要用状压DP。
状压DP是以DP为基础,将二维压至一维,转化为十进制存储至数组里
然后,我们将
f
[
i
]
[
j
]
f[i][j]
f[i][j]压至一维,并且以一个数值
p
[
i
]
p[i]
p[i]表示
2
2
2的
i
i
i次方
通过一个
a
a
a数组来表示障碍的状态。
通过一位巨佬的指教,我得出了一个转移
a
[
x
]
=
p
[
y
−
1
]
a[x]=p[y-1]
a[x]=p[y−1]
然后以一个c来记录当前的行数,得到状态转移方式
for(t=i & ~a[c];t;t-=t & (-t))
f[i]+=f[i^(t & (-t))];
(其中
1
1
1是不能放,表放过或有障碍;
0
0
0是可以放)
code
#include<stdio.h>
#include<iostream>
using namespace std;
long long n,m,x,y,t,c;
long long a[25],p[25],f[1<<20]={1};
int main ()
{
scanf ("%lld%lld",&n,&m);
p[0]=1;
for (long long i=1;i<21;++i) p[i]=p[i-1]*2;
for (long long i=1;i<=m;++i)
{
scanf ("%lld%lld",&x,&y);
a[x]+=p[y-1];
}
for (long long i=1;i<p[n];++i)
{
for(c=0,t=i;t;t-=t & (-t))c++;
for(t=i & ~a[c];t;t-=t & (-t))
f[i]+=f[i^(t & (-t))];
}
printf ("%lld",f[p[n]-1]);
return 0;
}
[状压DP]车的更多相关文章
- [状压DP]车II
车 I I 车II 车II 题目描述 有一个 n ∗ m n*m n∗m的棋盘 ( n . m ≤ 80 , n ∗ m ≤ 80 ) (n.m≤80,n*m≤80) (n.m≤80,n∗m≤80)要 ...
- 【POJ 2923】Relocation(状压DP+DP)
题意是给你n个物品,每次两辆车运,容量分别是c1,c2,求最少运送次数.好像不是很好想,我看了网上的题解才做出来.先用状压DP计算i状态下,第一辆可以运送的重量,用该状态的重量总和-第一辆可以运送的, ...
- POJ2923--Relocation(01背包+状压dp)
果然对状压DP,我根本就不懂=.= /************************************************** Problem: 2923 User: G_lory Mem ...
- bzoj2004 矩阵快速幂优化状压dp
https://www.lydsy.com/JudgeOnline/problem.php?id=2004 以前只会状压dp和矩阵快速幂dp,没想到一道题还能组合起来一起用,算法竞赛真是奥妙重重 小Z ...
- 【BZOJ】2004: [Hnoi2010]Bus 公交线路 状压DP+矩阵快速幂
[题意]n个点等距排列在长度为n-1的直线上,初始点1~k都有一辆公车,每辆公车都需要一些停靠点,每个点至多只能被一辆公车停靠,且每辆公车相邻两个停靠点的距离至多为p,所有公车最后会停在n-k+1~n ...
- 【bzoj2004】[Hnoi2010]Bus 公交线路 状压dp+矩阵乘法
题目描述 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定按下述规则设计 ...
- 状压dp专题复习
状压dp专题复习 (有些题过于水,我直接跳了) 技巧总结 : 1.矩阵状压上一行的选择情况 \(n * 2^n\) D [BZOJ2734][HNOI2012]集合选数 蒻得不行的我觉得这是一道比较难 ...
- HDU 2923 Relocation(状压dp+01背包)
题目代号:HDU2923 题目链接:http://poj.org/problem?id=2923 Relocation Time Limit: 1000MS Memory Limit: 65536K ...
- [Bzoj2004][Hnoi2010]Bus 公交线路(状压dp&&矩阵加速)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 看了很多大佬的博客才理解了这道题,菜到安详QAQ 在不考虑优化的情况下,先推$dp ...
随机推荐
- cache-control config & http cache storage location control
cache-control config & http cache storage location control cache-control 设置 where is the storage ...
- web testing
web testing cypress https://www.cypress.io/ https://github.com/cypress-io/cypress https://docs.cypre ...
- C++ 中的智能指针-基础
简介 在现代 C++ 编程中,标准库包含了智能指针(Smart pointers). 智能指针用来确保程序不会出现内存和资源的泄漏,并且是"异常安全"(exception-safe ...
- Baccarat如何点燃DEFI市场?
目前DeFi是成为了各大生态的"兵家必争之地",与此同时DeFi的高收益也成为吸引散户入局的一个利器.而虽然流动性挖矿板块近期的温度有所下降,但是这其中不乏还是有很多收益颇丰的De ...
- vue:表格中多选框的处理
效果如下: template中代码如下: <el-table v-loading="listLoading" :data="list" element-l ...
- 链表算法题二,还原题目,用debug调试搞懂每一道题
文章简述 大家好,本篇是个人的第4篇文章. 承接第3篇文章<开启算法之路,还原题目,用debug调试搞懂每一道题>,本篇文章继续分享关于链表的算法题目. 本篇文章共有5道题目 一,反转链表 ...
- 部分rpm包总结描述
acl-2.2.51-15.el7.x86_64 Commands for Manipulating POSIX(可移植操作系统接口 of unix) Access Control Lists.有ge ...
- 恭喜!Apache Hudi社区新晋两位Committer
1. 介绍 经过Apache Hudi项目委员会讨论及投票,向WangXiangHu和LiWei 2人发出Committer邀请,2人均已接受邀请并顺利成为Committer,也使得Apache Hu ...
- CVE-2019-10758-Mongo-express-远程代码执行
漏洞分析 https://xz.aliyun.com/t/7056 漏洞简介 mongo-express是一款mongodb的第三方Web界面,使用node和express开发. 如果攻击者可以成功登 ...
- 翻译:《实用的Python编程》04_03_Special_methods
目录 | 上一节 (4.2 继承) | 下一节 (4.4 异常) 4.3 特殊方法 可以通过特殊方法(或者称为"魔术"方法(magic method))自定义 Python 行为的 ...