bzoj2734 集合选数
Description
《集合论与图论》这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中。同学们不喜欢这种具有枚举性 质的题目,于是把它变成了以下问题:对于任意一个正整数 n≤100000,如何求出{1, 2,..., n} 的满足上述约束条件的子集的个数(只需输出对 1,000,000,001 取模的结果),现在这个问题就 交给你了。
Input
只有一行,其中有一个正整数 n,30%的数据满足 n≤20。
Output
仅包含一个正整数,表示{1, 2,..., n}有多少个满足上述约束条件 的子集。
状压dp
将问题转化为在求图上选不相邻的点的总方案数
1 | 3 | 9 | 27 | 81 |
2 | 6 | 18 | 54 | 162 |
4 | 12 | 36 | 108 | 324 |
8 | 24 | 72 | 216 | ... |
16 | 48 | 144 | ... |
5 | 15 | 45 | 135 |
10 | 30 | 90 | 270 |
20 | 60 | 180 | 540 |
40 | 120 | 360 | ... |
7 | 21 | 63 |
14 | 42 | 126 |
28 | 84 | 252 |
...
取每个表中不超过n的部分分别计算方案数
每个表水平方向最多11列,竖直方向最多17行
由于不同表中选数互不干扰,将每个表的方案数相乘即为最终答案
#include<cstdio>
#define P 1000000001
int n;
long long f[][];
bool hf[];
bool d[];
long long Ans=;
int main(){
f[][]=;
for(int i=;i<;i++)if(!(i&(i>>))&&!(i&(i<<)))hf[i]=;
scanf("%d",&n);
for(int w=;w<=n;w++){
if(d[w])continue;
int pp=,ii=;
long long ans=;
for(int i=w;i<=n;i+=i,ii++){
int a=,b=i;
while(b<=n)d[b]=,b*=,a++;
int pn=<<a;
for(int j=;j<pn;j++){
f[ii][j]=;
for(int k=;k<pp;k++)
if(hf[j]&&hf[k]&&!(j&k))(f[ii][j]+=f[ii-][k])%=P;
}
pp=pn;
}
ii--;
for(int i=;i<pp;i++)(ans+=f[ii][i])%=P;
Ans*=ans;
Ans%=P;
}
printf("%lld",Ans);
return ;
}
bzoj2734 集合选数的更多相关文章
- 【BZOJ2734】【HNOI2012】集合选数(状态压缩,动态规划)
[BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所 ...
- 【BZOJ-2734】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- bzoj2734【HNOI2012】集合选数
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 831 Solved: 487 [Submit][Stat ...
- 【BZOJ-2732】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- bzoj 2734: [HNOI2012]集合选数 状压DP
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 560 Solved: 321[Submit][Status ...
- BZOJ_2734_[HNOI2012]集合选数_构造+状压DP
BZOJ_2734_[HNOI2012]集合选数_构造+状压DP 题意:<集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x ...
- 2734: [HNOI2012]集合选数
2734: [HNOI2012]集合选数 链接 分析: 转化一下题意. 1 3 9 27... 2 6 18 54... 4 12 36 108... 8 24 72 216... ... 写成这样的 ...
- [HNOI2012]集合选数 --- 状压DP
[HNOI2012]集合选数 题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出\({1,2,3,4,5}\)的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x ...
- 状压DP之集合选数
题目 [HNOI2012]集合选数 <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不 ...
随机推荐
- poj 1475 uva 589 - Pushing Boxes
题目大意 人推箱子从起点到终点,要求推箱子的次数最少,并打印出来人移动的路径. 题目分析 对于箱子进行宽搜的同时,要兼顾人是否能够把箱子推到相应的位置 每一次对箱子bfs 然后对人再bfs #incl ...
- iOS学习笔记---网络请求
一.HTTP协议的概念 HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和 ...
- Java-->实现断点续传(下载)
--> 断点续传: 就像迅雷下载文件一样,停止下载或关闭程序,下次下载时是从上次下载的地方开始继续进行,而不是重头开始... --> RandomAccessFile --> poi ...
- dll清理
結束了閉關,又得與人類交流了,只好裝QQ 印象中企鵝手腳一向是BAT中最乾淨的-結果還是裝了不少樂色,一併挖出來除之 C:\program files\common files\tencent\q ...
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求(转载)
转自:http://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html 今天下午17点左右,博客园博客站点出现这样的错误信息: Error Sum ...
- html5的发展历程
20年磨一剑,HTML5作为下一代Web标准,她的语义之美.人性之美.简单之美.实用之美……如同一场革命,将Web从内容平台推向标准化的应用平台,并一统各在平台阵营的标准.2008年,HTML5发布首 ...
- 【BZOJ1010】【HNOI2008】玩具装箱
继续看黄学长代码 原题: P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1.. ...
- 【转】win7 uac关闭
方法1: 原文网址:http://jingyan.baidu.com/article/c275f6bae2650ce33d756795.html 首先点击开始,并在输入框中输入“MSCONFIG”,打 ...
- 归档-ios
/****普通对象归档**/ NSString *homePath=NSHomeDirectory(); NSString *fileName=@"test.vse"; NSStr ...
- 大白话系列之C#委托与事件讲解(二)
什么是事件?EVENT?点击事件?加载事件?一连串的模糊的概念冲击着我们弱小的脑袋 那我们首先来看一下比较正统的感念吧: 事件是类在发生其关注的事情时用来提供通知的一种方式. 事件的发生一般都牵扯2个 ...