当前位置: 首页 > news >正文

P1896[SCOI2005]互不侵犯 解题笔记

由于答案可能会很大,不难想到使用状压dp解决。

考虑使用二进制来表示:

\[100010_{(2)} = 34_{(10)} \]

这种访问方式比数组寻址更加简单快速,如 \((1 << (k - 1)) \& s\) 可以询问状态 \(s\) 的第 \(k\) 位上是 \(1\) 还是 \(0\)\((j >> k) << k\) 可以把状态 \(j\) 的二进制表示下最右边几位清零,而数组不可以 \(O(1)\) 的时间复杂度清零。

考虑使用 \(f_{i, j, k}\) 表示前 \(i\) 行,第 \(i\) 行状态的二进制表示(十进制下的值)为 \(j\) ,放置了 \(k\) 个国王的方案数,那么状态转移方程:

\(f_{i, j, k} = \sum f_{i - 1, new, k - getlen(j)}\)

其中 \(new\) 表示所枚举的上一行的所有合法状态,\(getlen(j)\) 表示 \(j\) 状态有多少位为 \(1\)

code:

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int dp[20][205][1100], ans, n, K, m, nn, L;
int _get(int x) {int sum = 0;while(x) {if(x & 1) sum ++;x >>= 1;}return sum;
}
bool check(int x, int y) {if(x & y) return 1;if((x << 1) & y) return 1;if((x >> 1) & y) return 1;if((y >> 1) & y) return 1;return 0;
}
signed main() {cin >> n >> K;dp[0][0][0] = 1;nn = (1 << n) - 1;for(int i = 1;i <= n;i ++) {for(int j = 0;j <= K;j ++) {for(int k = 0;k <= nn;k ++) {L = _get(k);if(L > j) continue;if(k & (k >> 1)) continue;for(int l = 0;l <= nn;l ++) {if(check(k, l)) continue;dp[i][j][k] += dp[i - 1][j - L][l];}}}}for(int i = 0;i <= nn;i ++) {ans += dp[n][K][i];} cout << ans;
} 
http://www.zskr.cn/news/24605.html

相关文章:

  • 央企程序员AI创业一个月感受 ✨
  • Write To Spreadsheet labview这是什么
  • 从众多知识汲取一星半点也能受益匪浅【day16(2025.10.18)】(加班但只加到四点半)
  • 模拟赛T4 分析
  • 十月阅读笔记
  • #20232408 2025-2026-1 《网络与系统攻防技术》实验二实验报告 - 20232408
  • 关于我的博客密码
  • 如何选择合适的SAP实施公司?3步锁定靠谱的SAP服务商
  • 25秋周总结5
  • apisix升级完整流程
  • 程序员做视频难在哪?可能是文案这一关
  • 题解:P12003 在小小的奶龙山里面挖呀挖呀挖(加强版)
  • 如何生成逼真的合成表格数据:独立采样与关联建模方法对比
  • Why dont Japanese people reply to messages
  • 关于从使用blender编辑ue动画的设置
  • Python 潮流周刊#73:让我们对 PyPI 温柔一点,好吗?
  • React+Three.js 实现 Apple 2025 热成像 logo
  • 完整教程:【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
  • 数据采集与融合作业1
  • 运算符与自增自减
  • with关键字
  • 2025 年电磁流量计最新推荐榜,聚焦企业技术实力与市场口碑深度解析
  • 练习篇:从零开始了解网络空间安全(网导1)
  • 2025 年超声波流量计最新推荐榜,技术实力与市场口碑深度解析!
  • 2025年安装厂家权威推荐榜单:管道/电气/生物医药工厂机电/暖通空调/空压系统/纯水系统/厂房通风/车间配电/机械设备/工业设备安装公司精选
  • 嵌入式实验3串口通信---任务一串口传输文件实验
  • Spring Cloud RabbitMQ 详解:从基础概念到秒杀实战 - 详解
  • 35跬步本手@数学学习+计算机学习+语言学习@20251019
  • 题解:loj6703 小 Q 的序列
  • 【容器日志采集】【二】fluent-bit配置文件