时间限制:0.25s

空间限制:4M

题目大意:

                在从下标1开始素数表里,下标为素数的素数,称为超级素数(Super-prime),给出一个n(n<=10000),求最少能用几个超级素数的和表示,并以降序输出这些超级素数。

Sample Input

6

Sample Output

2

3 3

{=============}

分析:

          读入n以后,先将不大于n的Super-prime筛出,然后DP

简单点的直接用完全背包DP,

稍微优化一点,减少一半的循环次数的话

F[i]=max(f[i],f[j]+f[i-j]);

         

          其它细节要动手做了才知道。

参考代码:

#include <iostream>
#include <cstring>
using namespace std;
int prime[11000], pd[11000], tol, sPrime[1000], sum;
int f[11000][3], n;
void init() {
for (int i = 2; i <= n; i++) {
if (!pd[i]) {
prime[++tol] = i;
for (int j = i + i; j <= n; j += i) pd[j] = 1;
}
}
for (int i = 2; i <= tol; i++)
if (!pd[i]) sPrime[++sum] = prime[i];
memset (pd, 0, sizeof pd);
for (int i = 1; i <= sum; i++)
pd[sPrime[i]] = 1;
}
void write (int x) {
if (f[x][0] == 1) cout << x << ' ';
else
write (f[x][2]), write (f[x][1]);
}
int main() {
cin >> n;
init();
for (int i = 3; i <= n; i++) {
if (pd[i]) f[i][0] = 1;
else {
for (int j = 3; j <= i / 2 + 1; j++){
if (f[j][0] && f[i - j][0] &&
(f[i][0] == 0 || f[i][0] > f[j][0] + f[i - j][0])){
f[i][0] = f[j][0] + f[i - j][0];
f[i][1] = j, f[i][2] = i - j;
}
}
}
}
cout << f[n][0] << endl;
if (f[n][0]) write (n);
return 0;
}

http://www.cnblogs.com/keam37/ keam所有 转载请注明出处

最新文章

  1. WPF 子窗体关闭时显示父窗体
  2. Python函数式编程学习笔记
  3. C++常见gcc编译链接错误解决方法
  4. HTML 块元素
  5. HDOJ 1028 Ignatius and the Princess III (母函数)
  6. 转载 在 Linux 虚拟机中手动安装或升级 VMware Tools
  7. 在cmd命令行下登录本地oracle数据库与服务器上的oracle
  8. c语言的lua库编写
  9. Pahom on Water(最大流)
  10. Oracle 11g oracle客户端(32位)PL/SQL develepment的安装配置
  11. Python基本语法[二],python入门到精通[四] (转)
  12. SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示
  13. 仿网易邮箱5.0(四):信息提示插件(tips.js)
  14. ssm心得
  15. 福大软工 &#183; BETA 版冲刺前准备(团队)
  16. 【工具相关】web-HTML/CSS/JS Prettify的使用
  17. kiss word memory post poly peri out ~p 4
  18. c#在panel或groupbox中添加窗体,实现点击不同按钮或combox时panel中窗体切换,在xtratabcontrol中添加窗体
  19. 20155320 2016-2017-2《Java程序设计》课程总结
  20. 在安卓上,微信公众号无法分享到QQ的解决办法之一

热门文章

  1. BZOJ1606: [Usaco2008 Dec]Hay For Sale 购买干草
  2. PowerDesigner将PDM导出生成WORD文档--温习老知识
  3. 数据结构与算法分析——C语言描述
  4. wmic
  5. scrapy使用代理
  6. 几个 PHP 的“魔术常量”
  7. HDOJ 4696 Answers 乱搞
  8. Android 颜色渲染(三) Shader颜色渲染
  9. perf---LINUX内核研究
  10. Eclipse 每行 80 字符限制的提示线