题目链接: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代码:

 #include<bits/stdc++.h>
using namespace std;
# define inf 0x3f3f3f3f
# define ll long long
const int maxn = 1e5+;
const int mod = 1e9+;
int vis[maxn];
int a[][],n;
int f[][maxn];
int bin[],b[];
int cal(int t)
{
memset(b,,sizeof(b));
a[][]=t;
for(int i=; i<=; i++)
{
if(a[i][]*<=n)
{
a[i+][]=a[i][]*;
}
else
{
a[i+][]=n+;
}
}
for(int i=; i<=; i++)
{
for(int j=; j<=; j++)
{
if(a[i][j-]*<=n)
{
a[i][j]=a[i][j-]*;
}
else
a[i][j]=n+;
}
}
for(int i=; i<=; i++)
{
for(int j=; j<=; j++)
{
if(a[i][j]<=n)
{
b[i]+=bin[j-];
vis[a[i][j]]=;
}
}
}
for(int i=; i<=; i++)
{
for(int j=; j<=b[i]; j++)
{
f[i][j]=;
}
}
f[][]=;
for(int i=; i<=; i++)
{
for(int j=; j<=b[i]; j++)
{
if(f[i][j])
{
for(int k=; k<=b[i+]; k++)
{
if(((j&k)==)&&(k&(k>>))==)
{
f[i+][k]=(f[i][j]+f[i+][k])%mod;
}
}
}
}
}
return f[][];
}
int main()
{
scanf("%d",&n);
bin[]=;
for(int i=; i<=; i++)
{
bin[i]=bin[i-]<<;
}
ll ans=;
for(int i=; i<=n; i++)
{
if(vis[i])
continue;
ans=ans*cal(i)%mod;
}
printf("%lld\n",ans);
return ;
}

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. Directory操作

    操作文件夹 CreateDirectory() 创建新文件夹 Delete() 删除 Move() 剪切 Exists() 判断文件夹是否存在 //获取当前目录下所有文件夹的路径 Directory. ...

  2. Mysterious Bacteria LightOJ - 1220

    题意: 给出一个数x 求 x = bp  的p的最大值 解析: 算术基本定理 分解质因数 任何一个数x都可以表示为  x == p1a1   *  p2a2  *  ````` * pnan 即  b ...

  3. 在 Linux 上安装配置 BitTorrent Sync [转]

    背景介绍:目前我们线上的前端服务器数量比较多,超过200多台,每次发布新应用的时候,都是将软件包放在一台专门的Push服务器上,再由所有的前端服务器通过rsync自动同步.但随着前端服务器的数量越来越 ...

  4. Android canvast View 代码实例

    package com.app.canvastest; import android.content.Context; import android.graphics.Bitmap; import a ...

  5. 并发容器——ConcurrentHashMap

    ConcurreentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的HashMap. 为什么要使用ConcurrentHashMap 在并发编程中使用HashMa ...

  6. 使用“DiskGenius”精确隐藏硬盘坏道

    现在大家手中可能都有些有坏道的硬盘,也可能现在机器上的硬盘也出问题了.硬盘有坏道,肯定不会全部都是坏道,不能使用了.但我们因此而不能使用了,那么就太可惜了.所以,只要把有坏道的区域隐藏起来,就如同使用 ...

  7. [IOI2018] seats 排座位

    [IOI2018] seats 排座位 IOI2018题解 压缩状态思想很不错的 每次把原来的贡献减掉,新来的再加上 最多涉及10个点 注意: 1.去重 2.下标从0开始 3.线段树初始的最小值个数都 ...

  8. poj3660(Cow Contest)解题报告

    Solution: 传递闭包 //if a beats b and b beats c , then a beats c //to cow i, if all the result of conten ...

  9. Linux追加文件内容并在内容前加上该文件名(awk, FILENAME功能妙用)

    假如有三个文件file1.txt,file2.txt,file3.txt 每一个文件内容如下: 现在打算提取每一个文件字符为16的行,打印该行所有的内容.以及该文件名,并追加到file4.txt,则可 ...

  10. 去除外显子低质量reads时弹出错误“Invalid quality score value (char '#' ord 35 quality value -29) on line 4”和“Invalid quality score value (char '.' ord 46 quality value -18) on line 12”的解决方法

    楼主跑以下程序时分别弹出了“fastq_quality_filter: Invalid quality score value (char '.' ord 46 quality value -18) ...