题目链接:https://cn.vjudge.net/contest/281960#problem/B

题目大意:中文题目

具体思路:

我们通过构造矩阵,

x , 3x,9x,27x

2x,6x,18x,54x

............

讲的很好的一篇博客:https://www.cnblogs.com/ljh2000-jump/p/6489018.html

可以看出,只要是选出的是相邻的,就一定是不满足的情况,所以说,我们可以通过构造矩阵将不满足的情况找出来,然后通过状压DP,通过不满足情况的筛选,将满足的情况找出来。

AC代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. # define inf 0x3f3f3f3f
  4. # define ll long long
  5. const int maxn = 1e5+;
  6. const int mod = 1e9+;
  7. int vis[maxn];
  8. int a[][],n;
  9. int f[][maxn];
  10. int bin[],b[];
  11. int cal(int t)
  12. {
  13. memset(b,,sizeof(b));
  14. a[][]=t;
  15. for(int i=; i<=; i++)
  16. {
  17. if(a[i][]*<=n)
  18. {
  19. a[i+][]=a[i][]*;
  20. }
  21. else
  22. {
  23. a[i+][]=n+;
  24. }
  25. }
  26. for(int i=; i<=; i++)
  27. {
  28. for(int j=; j<=; j++)
  29. {
  30. if(a[i][j-]*<=n)
  31. {
  32. a[i][j]=a[i][j-]*;
  33. }
  34. else
  35. a[i][j]=n+;
  36. }
  37. }
  38. for(int i=; i<=; i++)
  39. {
  40. for(int j=; j<=; j++)
  41. {
  42. if(a[i][j]<=n)
  43. {
  44. b[i]+=bin[j-];
  45. vis[a[i][j]]=;
  46. }
  47. }
  48. }
  49. for(int i=; i<=; i++)
  50. {
  51. for(int j=; j<=b[i]; j++)
  52. {
  53. f[i][j]=;
  54. }
  55. }
  56. f[][]=;
  57. for(int i=; i<=; i++)
  58. {
  59. for(int j=; j<=b[i]; j++)
  60. {
  61. if(f[i][j])
  62. {
  63. for(int k=; k<=b[i+]; k++)
  64. {
  65. if(((j&k)==)&&(k&(k>>))==)
  66. {
  67. f[i+][k]=(f[i][j]+f[i+][k])%mod;
  68. }
  69. }
  70. }
  71. }
  72. }
  73. return f[][];
  74. }
  75. int main()
  76. {
  77. scanf("%d",&n);
  78. bin[]=;
  79. for(int i=; i<=; i++)
  80. {
  81. bin[i]=bin[i-]<<;
  82. }
  83. ll ans=;
  84. for(int i=; i<=n; i++)
  85. {
  86. if(vis[i])
  87. continue;
  88. ans=ans*cal(i)%mod;
  89. }
  90. printf("%lld\n",ans);
  91. return ;
  92. }

B - 集合选数 (状压DP)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【BZOJ5010】【FJOI2017】矩阵填数 [状压DP]

    矩阵填数 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定一个 h*w 的矩阵,矩阵的行 ...

  10. HDU 1565 方格取数 状压dp

    题目: 给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大. Input 包括多 ...

随机推荐

  1. mysql and不能同时运用在一个字段上

  2. dfs和bfs(链式前向星实现)

    dfs代码: #include<iostream>#include<Algorithm>#include<cstring>#include<cstdio> ...

  3. map内置函数分析所得到的思路

    map:会根据提供的函数对指定序列做映射. map(func, *iterables) --> map object Make an iterator that computes the fun ...

  4. ef 问题汇总

    持续更新: 一  属性重命名 数据库:UserName Model: [Column("UserName")]public string UserName222 二, 某表多个外键 ...

  5. python中json.load()、json.loads()、json.dump()、json.dumps()的区别

    json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...

  6. HNOI2017影魔

    影魔 这么简单的方法尽然想不到,我是真的菜 对每个点,用单调栈的方式处理出他左右第一个比他大的数的位置,你可以把\(0\)和\(n+1\)设成\(inf\). 显然对于每对\(lef[i]\)和\(r ...

  7. 03 Zabbix4.0添加cisco交换机基本监控步骤

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 03 Zabbix4.0添加cisco交换机基本监控步骤 主题监控一台cisco网络设备的6项内容 ...

  8. [luogu4201][bzoj1063]设计路线【树形DP】

    题目描述 Z国坐落于遥远而又神奇的东方半岛上,在小Z的统治时代公路成为这里主要的交通手段.Z国共有n座城市,一些城市之间由双向的公路所连接.非常神奇的是Z国的每个城市所处的经度都不相同,并且最多只和一 ...

  9. Java NIO -- 通道 Channel

    通道(Channel):由 java.nio.channels 包定义的.Channel 表示 IO 源与目标打开的连接.Channel 类似于传统的“流”.只不过 Channel本身不能直接访问数据 ...

  10. codeforces 793B - Igor and his way to work(dfs、bfs)

    题目链接:http://codeforces.com/problemset/problem/793/B 题目大意:告诉你起点和终点,要求你在只能转弯两次的情况下能不能到达终点.能就输出“YES”,不能 ...