链接:https://www.nowcoder.com/acm/contest/74/F
来源:牛客网

题目描述

德玛西亚是一个实力雄厚、奉公守法的国家,有着功勋卓著的光荣军史。
这里非常重视正义、荣耀、职责的意识形态,这里的人民为此感到强烈自豪。
有一天他们想去制裁邪恶的比尔吉沃特,于是派遣了自己最优秀的战士。
结果比尔吉沃特领土太小,只有长为n宽为m共计n*m块土地,其中有些土
地标记为0表示为高山峻岭或者深海湖泊,英雄们无法在其中站立,只有标
记为1的土地才能容纳一个英雄。德玛西亚的英雄们战斗时有一个特点,他
们不希望队友站在自己旁边显得很暧昧。请问最多能有多少种安排德玛西
亚英雄的方法?

输入描述:

输入包含多组测试数据;每组数据的第一行包含2个整数n和m (n <= 12, m <= 12 ),之间用空格隔开;接下来的n行,每行m个数,表示n*m的比尔吉沃特领土。

输出描述:

输出一个整数n代表安排应用的方法。(答案取膜100000000)
示例1

输入

3 3
1 1 1
0 1 1
1 0 0

输出

24

题解

状压$dp$。

$dp[i][j][k]$表示到第$i$层,放置了$j$个人,且第$i$层的放置状态为$k$的方案数。

有很多优化可以做,没做优化也可以过。

#include <bits/stdc++.h>
using namespace std;int n, m;
int a[20][20];
int h[20];long long dp[15][80][4100];
long long mod = 100000000LL;
int cnt[4100], error[4100];int limit = 75;int lowbit(int x) {return x & (-x);
}void init() {for(int i = 1; i < (1 << 12); i ++) {cnt[i] = cnt[i - lowbit(i)] + 1;}for(int i = 0; i < (1 << 12); i ++) {for(int j = 0; j < 12; j ++) {int A = i & (1 << j);int B = i & (1 << (j + 1));if(A && B) error[i] = 1;}}
}int main() {init();while(~scanf("%d%d", &n, &m)) {for(int i = 1; i <= n; i ++) {h[i] = 0;for(int j = 0; j < m; j ++) {scanf("%d", &a[i][j]);h[i] = h[i] * 2 + a[i][j];}}dp[0][0][0] = 1;for(int i = 1; i <= n; i ++) {for(int num = 0; num <= limit; num ++) {for(int now = 0; now < (1 << m); now ++) {dp[i][num][now] = 0;if(error[now]) continue;if((now | h[i]) != h[i]) continue;if(num - cnt[now] < 0) continue;for(int pre = 0; pre < (1 << m); pre ++) {if(pre & now) continue;dp[i][num][now] = (dp[i][num][now]+ dp[i - 1][num - cnt[now]][pre]) % mod;}}}}long long ans = 0;for(int num = 0; num <= limit; num ++) {for(int now = 0; now < (1 << m); now ++) {ans = (ans + dp[n][num][now]) % mod;}}printf("%lld\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/zufezzt/p/8371719.html

2018年全国多校算法寒假训练营练习比赛(第二场)F - 德玛西亚万岁相关推荐

  1. 【题集】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  2. 【题集·待解决】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  3. 2018.1.28 牛客网2018年全国多校算法寒假训练营练习比赛题解

    Pre:DP专场,不得不说出题人脑洞真的大,题目质量真心不错.能将当今比较热门的游戏素材与算法竞赛有机结合,也是肥肠因缺斯汀的呀哈哈哈哈~ 打的最有意思也是最扎心的一场比赛,还是自己菜.DP是需要下慢 ...

  4. 2018年全国多校算法寒假训练营练习比赛(第四场)F:Call to your teacher

    传送门:https://www.nowcoder.net/acm/contest/76/F 题目描述 从实验室出来后,你忽然发现你居然把自己的电脑落在了实验室里,但是实验室的老师已经把大门锁上了.更糟 ...

  5. 2018年全国多校算法寒假训练营练习比赛(第五场)解题报告

    A-逆序数 https://www.nowcoder.com/acm/contest/77/A 题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆 ...

  6. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推

    H.了断局 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcode ...

  7. 2018年全国多校算法寒假训练营练习比赛(第四场)

    地址:点击打开链接 A 石油采集 思路: 二维矩阵四连通图是一个二分图,其实仔细想想就是将相邻的"#"建图,然后在找最大匹配.匈牙利算法即可.也可以dfs,代码如下: 匈牙利: # ...

  8. 牛客网 2018年全国多校算法寒假训练营练习比赛(第四场) 题解

    A-石油采集 题目描述 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业.如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光.这些商人们有一种特殊的飞机,可以一瓢略过整个海 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第五场)题解

    [题目链接] A - 逆序数 经典问题,有很多方法,例如树状数组,线段树,归并排序.分治等.代码不贴了. B - Big Water Problem 单点修改求区间和,树状数组或者线段树都可以. #i ...

  10. 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡

    链接:https://www.nowcoder.com/acm/contest/74/B 来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地 ...

最新文章

  1. JFreeChart插件使用
  2. 计算机专业的学生如何为国防建设做贡献,大学生如何为国防建设做贡献?
  3. 拓扑学+计算机,吴国平: 拓扑学到底有多重要? 在数学中占据多高的地位?
  4. mybatis+dubbo+ springmvc+zookeeper分布式架构
  5. 贵州计算机专业强的专科学校,贵州排名靠前的五年制大专学校--贵州计算机学校...
  6. ajax里怎么添加跳转地址,Ajax中window.location.href无法跳转的解决办法
  7. 十分钟看懂什么是VoLTE【包学包会,否则退款】
  8. 合理使用webpack提高开发效率
  9. android 相机和照片一起_Android相机开发(三): 实现拍照录像和查看
  10. win7电脑桌面壁纸曝光过高影响图标怎么办?亲测实用解决方法
  11. 软件测试简历没有项目经验怎么写?
  12. 免费实时汇率查询接口
  13. 计算机教案 认识键盘,《认识电脑键盘》教案
  14. 用图片替代cursor光标样式
  15. 全国电话区号->地址映射表
  16. 18个最好的代码编辑器/IDE工具
  17. [转载]SAP生产工单结算的差异种类分析
  18. Codility每周一课:P8.2 Dominator
  19. JavaWeb HTTP状态 405 - 方法不允许
  20. 数学建模比赛题型划分、常用算法及其适用场景

热门文章

  1. 七年,神策的不变与变
  2. 掌握随机森林:基于决策树的集成模型
  3. 程序员如何优雅地摆地摊
  4. Ubuntu18.04 安装 sublime3
  5. 360广告投放是怎么收费的,360信息流推广怎么收费
  6. 集成IOS 环信SDK
  7. 蓝桥杯:火柴游戏(经典的博弈算法)
  8. Spirng Boot-Swagger
  9. u盘变o字节怎么修复_u盘显示0字节如何修复
  10. 内向的程序员如何改变自己,试试摆地摊吧