牛客网 德玛西亚万岁 状压DP
德玛西亚万岁
德玛西亚是一个实力雄厚、奉公守法的国家,有着功勋卓著的光荣军史。这里非常重视正义、荣耀、职责的意识形态,这里的人民为此感到强烈自豪。有一天他们想去制裁邪恶的比尔吉沃特,于是派遣了自己最优秀的战士。结果比尔吉沃特领土太小,只有长为n宽为m共计n*m块土地,其中有些土地标记为0表示为高山峻岭或者深海湖泊,英雄们无法在其中站立,只有标记为1的土地才能容纳一个英雄。德玛西亚的英雄们战斗时有一个特点,他们不希望队友站在自己旁边显得很暧昧。请问最多能有多少种安排德玛西亚英雄的方法?
dp[i][j] 代表第i行 状态为j时的策略个数, j 为二进制的串 ,1 代表有英雄 ,0 代表无 ,然后从第一行开始枚举每种情况,然后每行的个数是上面一行转移过来的,所以要加上,详细解释见代码。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <cstring>
#include <string>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=100000000;
const int N = 13;
ll mp[N], dp[N][1 << N];
int main()
{int n,m,x;while(cin>>n>>m){memset(dp,0,sizeof(dp));memset(mp,0,sizeof(mp));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>x;mp[i]=(mp[i]<<1)+x; //二进制存图}}dp[0][0]=1; // 第i行 第j种(二进制串)存储的方式有几种 第0行只有0 --》 所以第一行都可以放英雄for(int i=1;i<=n;i++){for(int j=0;j<(1<<m);j++){ //枚举这一行可能的状态if(j&(j<<1)||(mp[i]&j)!=j) continue;// j&(j<<1) 此行不相邻,(mp[i]&j)!=j 英雄战立在1上for(int k=0;k<(1<<m);k++){ //枚举上一行的所有状态if(j&k) continue; //和上一行不相邻dp[i][j]=(dp[i][j]+dp[i-1][k])%mod;}}}ll ans=0;for(int i=0;i<(1<<m);i++){ans=(ans+dp[n][i])%mod;}cout<<ans<<endl;}return 0;
}
牛客网 德玛西亚万岁 状压DP相关推荐
- 德玛西亚万岁-----状压dp
德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意识形态,这里的人民为此感到强烈自豪. 有一天他们想去制裁邪恶的比尔吉沃特,于是派遣了自己最优秀的战士. ...
- nowcoder 多校算法寒假训练营(第二场)F 德玛西亚万岁(状压DP,位运算)
状态DP中很经典的一道题,除了从牛变成人之后好像就没什么变化了吧. 可以预处理出同一行内不会相邻的所有状态. 地图的每一行的01互换后,用一个数字储存. 对于每一个状态,若其与地图&运算的结果 ...
- 牛客网Chino with Queue【状压DP】
Chino的数学很差,因此Cocoa非常担心.今天,Cocoa准备教Chino和排队有关的问题. 我们总是会学各种排列组合的问题,那些题目大多数都是套路.而Cocoa不喜欢套路. 通常来说,每个人在排 ...
- 牛客15034 德玛西亚万岁(状压dp)
题意: 有一个n*m的01矩阵,标记为1的位置表示被阻碍,不能放东西. 现在要在这个矩阵上放棋子,要求棋子之间不能相邻,问有多少种放置方法. 答案对1e8取模 数据范围:n,m<=12 解法: ...
- F-德玛西亚万岁(状压DP)(2018年全国多校算法寒假训练营练习比赛(第二场))
题目链接: https://www.nowcoder.com/acm/contest/74/F 题目大意: 给你n*m大小的棋盘,其中1可以放置英雄,0不能放置.而放置英雄的格子的上下左右不能 ...
- 牛客题单_动态规划课程状压dp习题
牛客题单_动态规划课程状压dp习题 文章目录 牛客题单_动态规划课程状压dp习题 NC14732 锁 NC15034 德玛西亚万岁 NC16418 宝藏 NC17061 多彩的树 NC17890 方格 ...
- 牛客网多校训练 德玛西亚万岁
题目描述 来源 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意识形态,这里的人民为此感到强烈自豪. 有一天他们想去制裁邪恶的比尔吉沃特,于是派遣 ...
- 牛客每日练习----德玛西亚万岁,求最值,小牛再战
我喜欢给自己压力,必须得定一个很高的目标,逼自己朝着这个目标前进,不管会不会实现,都是一个动力. ----喻言 链接:http ...
- 状压dp板子 德玛西亚万岁
好吧,虽然它是道板子题,但我还是做了很久,wa了n发,主要还是不能很清晰的整理思路,并且多组样例的清空也总是有遗漏...(真是个菜鸡) 链接:登录-专业IT笔试面试备考平台_牛客网 n*m的土地,要求 ...
最新文章
- 几个C++问题提示的莫名其妙,附录解决方法
- Linux系统下的/etc/nsswitch.conf文件
- 数据量大mysql当月_mysql 1.5倍数据量导致20多倍的执行时间?
- Windows核心编程 第十七章 -内存映射文件(上)
- 【NLP】 NLP中应用最广泛的特征抽取模型-LSTM
- java程序错误类型及异常处理
- 牛客练习赛36 F-Rabbit的蛋糕 (叉积求面积, 记录前缀)
- 计算机英语 传输介质,计算机英语实用教程unit7
- WIAC上,华为展区都有点儿啥?
- orm2 中文文档 3.3 模型钩子
- create报错不是函数_node.js – sequelize .create不是函数错误
- 基础:新建个maven项目
- 华为云怎么样_为什么阿里云要迁移到华为云?详细过程分析
- 无法读源文件或磁盘_拯救动态磁盘的一些尝试
- 从事计算机专业的人职业道德,计算机专业技术人员职业道德建设研究
- vue修改默认V型图标
- 洛谷T37537 公主的考验
- Python学习笔记之基础练习(一)
- 在华为公司的项目总结
- 通过SqlDbx导出*.sql,然后倒入到SQLServer2005