题目要求若出现x,则不能出现2x,3x

所以我们考虑构造一个矩阵

\(1\ 2\ 4 \ 8……\)

\(3\ 6\ 12\ 24……\)

\(9\ 18\ 36……\)

\(……\)

不难发现,对于一个矩阵,若我选择了一个数x,则在矩阵内该数的相邻格子都不能选,题目就被转化成了玉米田了,可以用状压DP解决

但是直接做是不对的,比如5就没有出现在这个序列中

所以我们可以构造多个矩阵,用乘法原理统计答案即可

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define il inline
  4. #define re register
  5. #define debug printf("Now is Line : %d\n",__LINE__)
  6. #define file(a) freopen(#a".in","r",stdin);//freopen(#a".out","w",stdout)
  7. #define int long long
  8. #define inf 123456789
  9. #define mod 1000000001
  10. il int read() {
  11. re int x = 0, f = 1; re char c = getchar();
  12. while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar();}
  13. while(c >= '0' && c <= '9') x = x * 10 + c - 48, c = getchar();
  14. return x * f;
  15. }
  16. #define rep(i, s, t) for(re int i = s; i <= t; ++ i)
  17. #define drep(i, s, t) for(re int i = t; i >= s; -- i)
  18. #define mem(k, p) memset(k, p, sizeof(k))
  19. #define maxn 100005
  20. int n, m, a[20][20], g[1 << 15], vis[maxn], H, L[20], dp[20][1 << 15], ans = 1;
  21. il void martix(int x) {
  22. H = 0;
  23. rep(i, 1, 18) {
  24. a[i][1] = (i == 1) ? x : a[i - 1][1] * 2;
  25. if(a[i][1] > n) break;
  26. ++ H, L[i] = vis[a[i][1]] = 1;
  27. rep(j, 2, 11) {
  28. a[i][j] = a[i][j - 1] * 3;
  29. if(a[i][j] > n) break;
  30. L[i] = j, vis[a[i][j]] = 1;
  31. }
  32. }
  33. }
  34. il int solve() {
  35. rep(i, 0, (1 << L[1]) - 1) dp[1][i] = g[i];
  36. rep(i, 2, H) {
  37. rep(j, 0, (1 << L[i]) - 1) {
  38. if(!g[j]) continue;
  39. dp[i][j] = 0;
  40. rep(k, 0, (1 << L[i - 1]) - 1) {
  41. if(g[k] && (k & j) == 0) dp[i][j] += dp[i - 1][k];
  42. }
  43. }
  44. }
  45. int t = 0;
  46. rep(i, 0, (1 << L[H]) - 1) t = (t + dp[H][i]) % mod;
  47. return t;
  48. }
  49. signed main() {
  50. n = read();
  51. rep(i, 0, (1 << 11) - 1) g[i] = !(i & (i << 1));
  52. rep(i, 1, n) if(!vis[i]) martix(i), ans = ans * solve() % mod;
  53. printf("%lld", ans);
  54. return 0;
  55. }

[HNOI2012]集合选数(状压DP+构造)的更多相关文章

  1. [HNOI2012]集合选数 --- 状压DP

    [HNOI2012]集合选数 题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出\({1,2,3,4,5}\)的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x ...

  2. bzoj 2734: [HNOI2012]集合选数 状压DP

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 560  Solved: 321[Submit][Status ...

  3. BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...

  4. $HNOI2012\ $ 集合选数 状压$dp$

    \(Des\) 求对于正整数\(n\leq 1e5\),{\(1,2,3,...,n\)}的满足约束条件:"若\(x\)在该子集中,则\(2x\)和\(3x\)不在该子集中."的子 ...

  5. 洛谷$P3226\ [HNOI2012]$集合选数 状压$dp$

    正解:$dp$ 解题报告: 传送门$QwQ$ 考虑列一个横坐标为比值为2的等比数列,纵坐标为比值为3的等比数列的表格.发现每个数要选就等价于它的上下左右不能选. 于是就是个状压$dp$板子了$QwQ$ ...

  6. bzoj 2734 [HNOI2012]集合选数 状压DP+预处理

    这道题很神啊…… 神爆了…… 思路大家应该看别的博客已经知道了,但大部分用的插头DP.我加了预处理,没用插头DP,一行一行来,速度还挺快. #include <cstdio> #inclu ...

  7. 【BZOJ-2732】集合选数 状压DP (思路题)

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1070  Solved: 623[Submit][Statu ...

  8. 【BZOJ-2734】集合选数 状压DP (思路题)

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1070  Solved: 623[Submit][Statu ...

  9. BZOJ_2734_[HNOI2012]集合选数_构造+状压DP

    BZOJ_2734_[HNOI2012]集合选数_构造+状压DP 题意:<集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x ...

  10. 2734: [HNOI2012]集合选数

    2734: [HNOI2012]集合选数 链接 分析: 转化一下题意. 1 3 9 27... 2 6 18 54... 4 12 36 108... 8 24 72 216... ... 写成这样的 ...

随机推荐

  1. 简简单单的Vue1(MVVM与Vue的双向绑定原理)

    既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 Vue 在此之前的文章我们讲述了前端开发的工具,语言的知识,接下来我们从头开始学习一个 ...

  2. 使用go, gin, gorm编写一个简单的curd的api接口

    go 是一门非常灵活的语言,既具有静态语言的高性能,又有动态语言的开发速度快的优点,语法也比较简单,下面是通过简单的代码实现了一个简单的增删改查 api 接口 hello world 常规版 新建 d ...

  3. 002. https通信(CA证书认证 + 密钥商定 )

    服务端与客户端建立https通信的过程: 一.认证:客户端第一次访问服务端时,要求服务端证明自己可被信任 1.证书:由服务端申请.第三方CA颁发的,存放在服务端的证书: 证书包含:服务端的公钥.服务端 ...

  4. 升级WIN10 (9879)后IE无响应的解决办法

    身为程序猿,当然有了新系统就要尝尝鲜,有WIN8时,哥是朋友圈第一个用的,有WIN8.1时哥也是第一个升级的. 现在WIN10来了,当然也得赶紧尝尝鲜.直接下载了 9879版的预览版本安装. 要说WI ...

  5. APP 技术支持

    APP使用过程中,有任何问题,可以在此博客下方留言. 或者,发送邮件到邮箱:nbglsoft@163.com 反馈的任何问题,我们将在2个工作日内进行响应. 感谢大家的支持!

  6. 小程序应用的Python服务器部署高配,依然是腾讯云秒杀阿里云!

    上一篇文章,“小程序创业最低配置部署,腾讯云折扣秒杀阿里云!”介绍了小程序项目启动时的最低配置服务器选择,但当项目良好发展时,还是要把服务器配置调整到标准水平,承受住日益增长的流量访问. 随着Pyth ...

  7. 两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)

    一个HTML页面只能显示HTML代码信息,不能与数据库进行数据的交互.asp.net方案提供了网页与数据库交互的方法,这里举出两种:①aspx文件 ②ashx文件+ajax技术 一.创建数据库 这里以 ...

  8. Odoo / PS Cloud12版本中,产品变体功能如何使用

    场景: 产品:陶瓷马克杯 产品颜色变体:红色.蓝色.白色 产品尺寸变体:10CM.12CM.15CM 每个变体都有不同价格维度 odoo / PS Cloud 专业实施开发 EMAIL:1715860 ...

  9. typescript的函数

    1:默认参数(传入值会覆盖默认参数,不传值也行) function getinfo(name:string,age:number=20):string{ return `${name}---${age ...

  10. (办公)工作中的编码不良习惯Java(不定时更新)

    1.别瞎写,方法里能用封装好的类,就别自己写HashMap. 2.方法名,整的方法名都是啥?退出close,用out. 3.git提交版本,自己写的代码,注释,提交版本的时候,一定要清理掉.每个判断能 ...