P3226-[HNOI2012]集合选数【状压dp】
正题
题目链接:https://www.luogu.com.cn/problem/P3226
题目大意
1∼n1\sim n1∼n选出一些组成集合,一个集合里如果有xxx则不能有2x,3x2x,3x2x,3x。求有多少合法集合。
解题思路
我们可以构造一个矩阵
1 | 3 | 9 | 27 | … |
---|---|---|---|---|
2 | 6 | 18 | … | |
4 | 12 | … | ||
8 | … |
这样选择一个位置后它相邻的位置就不能选择,发现这个矩阵不会很大,可以状压解决状态。
对于没有出现在这个矩阵内的,我们新开一个矩阵作为左上角,每个矩阵之间不会有影响,方案相乘即可。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=20,XJQ=1e9+1;
int n,a[N],f[N][1<<N],line[N],v[110000];
long long ans;
long long solve(int x){line[1]=0;while(x<=n)a[++line[1]]=x,x*=3,v[a[line[1]]]=1;x=1;while(1){x++;line[x]=0;while(line[x]<line[x-1]&&a[line[x]+1]*2<=n)line[x]++,a[line[x]]*=2,v[a[line[x]]]=1;if(!line[x])break;}x--;for(int i=1;i<=x;i++)line[i]=1<<line[i];for(int i=0;i<line[1];i++)f[1][i]=(i&(i<<1))?0:1;for(int i=2;i<=x;i++){for(int j=0;j<line[i];j++){if((j&(j<<1)))continue;f[i][j]=0;for(int k=0;k<line[i-1];k++){if((!(k&(k<<1)))&&!(j&k))(f[i][j]+=f[i-1][k])%=XJQ;}}}long long ans=0;for(int i=0;i<line[x];i++)(ans+=f[x][i])%=XJQ;return ans;
}
int main()
{scanf("%d",&n);ans=1;for(int i=1;i<=n;i++){if(v[i])continue;(ans=ans*solve(i))%=XJQ;}printf("%lld",ans);
}
P3226-[HNOI2012]集合选数【状压dp】相关推荐
- BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...
- [HNOI2012]集合选数 BZOJ2734
分析: 构造法...每次找到一个没有被选过的数,用这个数推出一个表格,之后在表格上跑状压DP,时间复杂度O(n) 附上代码: #include <cstdio> #include < ...
- [HNOI2012]集合选数(思维构造 + 状压dp)
problem 题目链接 solution 从最小一个数 xxx 开始,将其 2x,3x2x,3x2x,3x 放入,再将 2(2x),3(2x),2(3x),3(3x)2(2x),3(2x),2(3x ...
- 【BZOJ】2734: [HNOI2012]集合选数
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2734 考虑$N=4$的情况: \begin{bmatrix} 1&3 &X ...
- [BZOJ5010][FJOI2017]矩阵填数(状压DP)
5010: [Fjoi2017]矩阵填数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 90 Solved: 45 [Submit][Status ...
- 牛客推荐系统开发之选飞行棋子(状压dp)
链接:登录-专业IT笔试面试备考平台_牛客网 牛客的新开发的推荐系统使得牛客的DAU(日活跃用户数量)上升了一个档次,于是牛客的老板组织了一场团建.在团建时,牛牛.牛妹.王清楚和茶山牛四人想要愉快地玩 ...
- 动态规划 —— 状压 DP
[概述] 通常将以一个集合内的元素信息作为状态且状态总数为指数级别的动态规划称为状态压缩动态规划. 其是一类以集合信息为状态的特殊的动态规划问题,主要有传统集合动态规划与基于连通性状态压缩的动态规划两 ...
- 状压DP学习总结 (详解,适合没状压dp基础的人学习,还在更新中,,,,)
本次博客,主要是给学弟学妹们讲解一下状压dp,不适合有基础的同学观看,可能会浪费时间,因为偏基础 先来最简单的一个吧 http://acm.hdu.edu.cn/showproblem.php?p ...
- 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II
文章目录 --2020年12月20日(周日)------------------ 状压DP 一.最短Hamilton路径(模板题) 二.玉米田(P1879 [USACO06NOV]Corn Field ...
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...
最新文章
- unity3d-----Collider 组件参考
- mysql数据库访问300ms以上_[Java教程]一张900w的数据表,16s执行的SQL优化到300ms?...
- c语言fsetpos是什么,fsetpos - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- C++程序代码优化的方法
- 【转】Oracle执行计划解释
- SAP CRM系统UI checkbox的设计与实现
- niosii spi 外部_基于Nios_II的DMA传输总结
- 云南干旱 谁人受损 心有戚戚 愤怒哀伤
- 会议交流|大模型与图学习等知识图谱相关技术实践探索
- 好用的markdown编辑工具Ulysses 25 for Mac
- 连载:面向对象葵花宝典:思想、技巧与实践(32) - LSP原则
- pyecharts基础图表汇总(三国演义可视化)
- 【Web理论篇】Web应用程序安全与风险
- php工具箱怎么换php版本,最新php程序员工具箱 v1.0版本介绍
- Speed Gear(变速精灵XP) V6.0 - 免费版,破解版,绿色版
- windows自动更新导致:无法访问网络位置*:\Program Files(x86)
- idea编辑窗口显示outdated version解决方案
- java bouncycastle,使用BouncyCastle在Java中使用ECIES进行加密
- RV1126笔记二十三:Nginx及cgi移植
- 入职转正后被领导谈话
热门文章
- 字体编辑器_FontLab 7 ——字体编辑器
- 秋招面试我去了拼多多,直接被问JVMGC底层原理和算法,我吊打面试官
- networkx 画有权图_利用NetworkX画网络图
- .gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...
- 剑指 Offer 05. 替换空格(两种做法)
- 计算机等级delphi取消,计算机二级DELPHI控件:DELPHI过滤记录的实现方法
- [JavaWeb-Servlet]Servlet相关配置
- [C++11]自动类型推导auto
- 数据结构与算法--死磕二叉树
- php 接口缓存,php写的一个缓存接口demo,兼容redis和memcache