Sumsets(数学)
| 
 Time Limit: 2000MS  | 
 Memory Limit: 200000K  | 
|
| 
 Total Submissions: 14964  | 
 Accepted: 5978  | 
Description
1) 1+1+1+1+1+1+1 
2) 1+1+1+1+1+2 
3) 1+1+1+2+2 
4) 1+1+1+4 
5) 1+2+2+2 
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
Input
Output
Sample Input
7
Sample Output
6
简单的找规律的题,算不上DP
#include<cstdio>
const int maxn = 1000000 + 1;
int a[maxn]; int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i,j;
a[1] = 1;
a[2] = 2;
for(i=3; i<=maxn; i++)
{
if(i%2 == 1)
a[i] = a[i-1];
else
{
a[i] = a[i-2] + a[i/2];
a[i] = a[i]%1000000000; //?
}
}
printf("%d\n",a[n]);
}
return 0;
}
题解:可以直接列举递推:
n: ans:
1 1
2 2
3 2
4 4
5 4
6 6
7 6
8 10
9 10
10 14
11 14
12 20
...... ......
if(n&1) a[n]=a[n-1]
if(n%2==0) a[n]=(a[n-2]+a[n>>1])%1000000000
由上述递推过程很容易发现递推结果,不过可能会由于列举的数字不多,只列举了前7个,误认为递推关系是 if(n&1) a[n]=a[n-1]; if(n%2==0) a[n]=n 弱鸡的我就是这么想的(;′⌒`)。
还有一种利用二进制递推的方式,讨论区看来的啦:
可以将n用二进制表示.
n=1,只有1种表示方法。
n=2,10(2),二进制表示下,可以分拆成{1,1},{10}有两种表示方法
n=3, 11(2),可以分拆成{1,1,1},{10,1}.
n=4, 100(2),{1,1,1,1},{10,1,1},{10,10},{100}.
.........
总结:如果所求的n为奇数,那么所求的分解结果中必含有1,因此,直接将n-1的分拆结果中添加一个1即可 为s[n-1]
如果所求的n为偶数,那么n的分解结果分两种情况
1.含有1 这种情况可以直接在n-2的分解结果中添加两个1即可,这种情况有 s[n-1]
2.不含有1 那么,分解因子的都是偶数,将每个分解的因子都除以2,刚好是n/2的分解结果,并且可以与之一一对应,这种情况有 s[n/2]
Sumsets(数学)的更多相关文章
- poj 2229 Sumsets(dp 或 数学)
		
Description Farmer John commanded his cows to search . Here are the possible sets of numbers that su ...
 - 数学思想:为何我们把 x²读作x平方
		
要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...
 - 速算1/Sqrt(x)背后的数学原理
		
概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...
 - MarkDown+LaTex  数学内容编辑样例收集
		
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
 - 深度学习笔记——PCA原理与数学推倒详解
		
PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...
 - Sql Server函数全解<二>数学函数
		
阅读目录 1.绝对值函数ABS(x)和返回圆周率的函数PI() 2.平方根函数SQRT(x) 3.获取随机函数的函数RAND()和RAND(x) 4.四舍五入函数ROUND(x,y) 5.符号函数SI ...
 - *HDU 2451 数学
		
Simple Addition Expression Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
 - 如何解决Maple的应用在数学中
		
对任意数学和技术学科的研究员.教师和学生而言,Maple是一个必备的工具.通过Maple,教师将复杂数学问题注入生命,学生的精力集中在概念理解上而不是如何使用工具上,研究员可以开发更复杂的算法或模型. ...
 - 如何让Maple中的数学引擎进入你的桌面应用程序和网站
		
MapleNET数学服务套件将Maple 2015强大的数学引擎引入您的应用程序和网站.使用MapleNET,您可以添加数学计算和可视化功能到网页和桌面程序中,通过互联网/局域网分享“活”的Maple ...
 
随机推荐
- Elasticsearch-PHP 处理JSON数组和对象
			
PHP中处理JSON数组和对象 客户端有一些混淆的资源是围绕着JSON的数组和对象,以及如何在PHP中指定它们.特别是,问题是由空对象和空数组导致的.这篇文章回告诉你一些在Elasticsearch ...
 - Linux实战教学笔记41:企业级SVN版本管理与大型代码上线方案
			
第1章 SVN服务实战应用指南 1.1 SVN介绍 1.1.1 什么是SVN(Subversion)? Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN ...
 - zabbix自定义key监控nginx和fpm(网站并发数)
			
一. nginx编译参数 监控nginx,主要讲解监控并发数 --prefix=/usr/local/nginx --with-http_stub_status_module zabbix编译参数的查 ...
 - orcle clob字段查询
			
select utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(column,2000,1)) from t
 - noi2729 Blah数集
			
Blah数集 大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下: (1) a是集合Ba的基,且a是Ba的第一个元素: (2)如果x在集合Ba中,则2x+1和3x ...
 - 1517 u Calculate e
			
1. 最前面的格式要记得输入. 2. 计算的时候要从3开始重新计算, 否则会丢失精度. 3. 更快的方式就是打表. #include <iostream> using namespace ...
 - Perl 学习笔记-正则表达式基础篇
			
1.Perl中的正则表达式 在Perl中叫做模式, 是一个匹配(或不匹配)某字符串的模板, 是一种小程序, 对于一个字符串, 要么匹配, 要么不匹配. 使用简易模式: 将模式写在一对正斜线(/)中即可 ...
 - Jrebel 独立部署tomcat 远程同步项目
			
一直在用 jrebel 感觉热部署的 功能,修改xml配置文件等,省去了很多的重新启动的时间. 由于偶然间发现 jrebel 还有remote 路由功能.这样,在服务器端用jrebel部署的项目和本地 ...
 - SQL数据透视
			
透视是一种通过聚合和旋转把数据行转换成数据列的技术.当透视数据时,需要确定三个要素:要在行(分组元素)中看到的元素,要在列(扩展元素)上看到的元素,要在数据部分看到的元素(聚合元素). SQL Ser ...
 - 在Chrome 39中无法使用插件
			
在chrome 42+版本中在开启npapi选项. 1.打开插件面板,在地址栏中输入 chrome://plugins 2.找到npScreenCapture插件,点击始终允许选框 3允许控件