状态:f[i][j][k]表示第i行放了j个皇帝,状态为k的方案。

那么首先预处理出所有可行的方案,以及两两可以相互转移的答案。

b状态转移到a状态就是 :\(f[i][j][a] += f[i - 1][j - count(a)][b]\)

小tips:

判断两行有没有相邻的一可以判断: \((a \,\, \& \,\, b) == 0\),\(a \,\, \& \,\, b\)一定要加括号,判断当两个在前后两行的皇帝是否能斜着攻击到:即\(a | b\)不能有相邻的1

#include <iostream>
#include <vector>
#include <algorithm> using namespace std; typedef long long LL; const int N = 15, M = 110, K = 1 << 10; LL f[N][M][K]; //第i行 放了j个皇帝 状态为k的方案集合
int n, m;
vector<int> legal;
int cnt[K + 10];
vector<int> head[K]; bool check(int num) { //没有相邻
for (int i = 0; i < n; i++) {
if ((num >> i & 1) && ((num >> i + 1) & 1)) return false;
} return true;
} int count(int num) {
int cnt = 0;
while (num) num -= (num & -num), cnt++;
return cnt;
} int main() {
cin >> n >> m;
for (int i = 0; i < 1 << n; i++) {
if (check(i)) {
legal.push_back(i);
cnt[i] = count(i);
}
} for (int i = 0; i < legal.size(); i++) {
for (int j = 0; j < legal.size(); j++) {
int a = legal[j], b = legal[i];
if ((a & b) == 0 && check(a | b))
head[i].push_back(j); //由j可以转移到i
}
} f[0][0][0] = 1;
for (int i = 1; i <= n; i++) { //枚举行
for (int j = 0; j <= m; j++) { //枚举有多少个皇帝
for (int a = 0; a < legal.size(); a++) { //枚举可转移的状态
for (int b = 0; b < head[a].size(); b++) {
int c = cnt[legal[a]];
if (j >= c) f[i][j][a] += f[i - 1][j - c][head[a][b]];
}
}
}
} LL res = 0;
for (int i = 0; i < 1 << 10; i++) res += f[n][m][i]; cout << res << endl;
//cout << f[n + 1][m][0] << endl; return 0;
}

AcWing 1064. 小国王的更多相关文章

  1. AcWing 227. 小部件厂 (高斯消元)打卡

    题目:https://www.acwing.com/problem/content/description/229/ 题意:有很多个零件,每个零件的生产时间都在3-9天之间,现在只知道每个工人的生产部 ...

  2. AcWing 251. 小Z的袜子| 分块+莫队

    传送门 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿. 终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命. 具体来说,小Z把这N只袜子从 ...

  3. acwing 算法面试、笔试题公开课整理记录

    week1 Google KickStart 2019 A轮 讲解视频地址AcWing 549. 训练   tag: 排序 遍历 在线练习地址AcWing 550. 包裹       在线练习地址Ac ...

  4. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

  5. NOIP2012国王游戏

      题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在 ...

  6. 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  7. BZOJ3174 Tjoi2013 拯救小矮人(贪心+DP)

    传送门 Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个 ...

  8. 【NOIP2012】国王游戏

    这一次高精度完美地过辣好开心OvO,还get到了非常方便的高精度除小于10000的方法,这个是我自己脑出来的OvO 看来下午高精度傻逼得值qvq 原题: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个 ...

  9. bzoj 3065: 带插入区间K小值 替罪羊树 && AC300

    3065: 带插入区间K小值 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1062  Solved: 253[Submit][Status] Des ...

  10. COJ 0260 HDNOIP201204四个国王

    HDNOIP201204四个国王 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 在N*M的棋盘上摆国际象棋中的“国王”.如果两 ...

随机推荐

  1. 2022-1-11 面板控件学习1 Canvas、WrapPanel、StackPanel、DockPanel、Grid

    Canvas WrapPanel 让控件横向排列 StackPanel 控件竖向排列 DockPanel 自由布局,LastChildFill防止最后一个控件自动填充满 Grid 使用*和2*可以分配 ...

  2. Linux 标准目录结构 FHS ——原文链接https://www.cnblogs.com/woider/p/6618295.html

    因为利用 Linux 来开发产品或 distribution 的团队实在太多了,如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰.所以,后来就有了 Filesystem H ...

  3. 日历插件zaneDate 不依赖任何第三方插件 简单高效

    先来找图看看时间选择器的效果:             没错就是这个吊样,如果你不需要这个色调,你可以fork我的github项目任意修改美美的色调. 当然也欢迎你给我提很多很多的bug让我改不停 . ...

  4. Git-入门使用资料

    一.Git入门教程 Git入门视频,针对于小白快速入门,时常约2~3小时 Git入门视频 相关课件资料: https://pan.baidu.com/s/1U-s4OmkToXJ5Y7BbJ7w2Ww ...

  5. AgileConfig-1.7.0 发布,支持 SSO 🎉🎉🎉

    AgileConfig 已经好久好久没有更新过比较大的功能了.一是 AgileConfig 本身的定位就是比较轻量,不想集成太多的功能.二是比较忙(懒).但是本次升级给大家带来了一个比较有用的功能 S ...

  6. 《Kali渗透基础》01. 介绍

    @ 目录 1:渗透测试 1.1:安全问题的根源 1.2:安全目标 1.3:渗透测试 1.4:标准 2:Kali 2.1:介绍 2.2:策略 2.3:安装 3:Kali 初步设置 3.1:远程连接 3. ...

  7. 基于ASP.NET ZERO,开发SaaS版供应链管理系统

    前言 在园子吸收营养10多年,一直没有贡献,目前园子危机时刻,除了捐款+会员,也鼓起勇气,发篇文助力一下. 2018年下半年,公司决定开发一款SaaS版行业供应链管理系统,经过选型,确定采用ABP(A ...

  8. MQTT vs. XMPP,哪一个才是IoT通讯协议的正解

    MQTT vs. XMPP,哪一个才是IoT通讯协议的正解 这是个有趣的话题! 先来聊几个小故事. 关于我和MQTT 我在人生第一个IoT项目里,第一次接触到MQTT协议. 我很快就理解了这个协议.因 ...

  9. 给你的模糊测试开开窍——定向灰盒模糊测试(Directed Greybox Fuzzing)综述

    ​ 本文系原创,转载请说明出处 Please Subscribe Wechat Official Account:信安科研人,获取更多的原创安全资讯 原论文:<The Progress, Cha ...

  10. windows10 jdk下载及环境配置

     一.环境准备 windows10 系统 jdk 各种版本(配置大同小异) 二.下载并安装jdk 下载地址:http://www.oracle.com/technetwork/java/javase/ ...