1 /*
 2 类似完全背包,容量为n的背包用素数填,求满背包的种数
 3 dp(i,j)表示用不超过i的素数组成的j的种数
 4 dp[i][j]=dp[i-1][j],若i为素数则dp[i][j]+=dp[i][j-i]
 5 */
 6 #include <iostream>
 7 #include <cstdio>
 8 #include <cstring>
 9 using namespace std;
10
11 const int maxn=155;
12 int prime[maxn],flag[maxn],num;
13 int dp[maxn][maxn];
14
15 void getprimes()
16 {
17     num=0;memset(flag,1,sizeof(flag));
18     for(int i=2;i<=maxn;i++)
19     {
20         if(flag[i]) prime[num++]=i;
21         for(int j=0;j<=num && prime[j]*i<maxn;j++)
22         {
23             flag[prime[j]*i]=false;
24             if(i%prime[j]==0) break;
25         }
26     }
27 }
28
29 int main()
30 {
31     getprimes();
32     int t,n,i,j,ans;
33     scanf("%d",&t);
34     while(t--)
35     {
36         scanf("%d",&n);
37         memset(dp,0,sizeof(dp));
38         dp[1][0]=1;
39         for(i=2;i<=n;i++)
40         {
41             for(j=0;j<=n;j++)
42                 dp[i][j]=dp[i-1][j];
43             if(!flag[i]) continue;
44             for(j=i;j<=n;j++)
45                 dp[i][j]+=dp[i][j-i];
46         }
47         printf("%d\n",dp[n][n]);
48     }
49     return 0;
50 }

转载于:https://www.cnblogs.com/xiong-/p/4101779.html

hdu 2189 dp相关推荐

  1. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  2. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  3. 【DP】HDU 2189 悼念512汶川大地震遇难同胞——来生一起走

    打一个小于150的素数表 为了分成的组的人数不重复用dp[i][j] 表示 i表示i个人 j表示分成的组内的最大素数序号 #include <stdio.h> #include <s ...

  4. HDU 4832(DP+计数问题)

    HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...

  5. hdu 5086(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...

  6. hdu 2059(dp)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  7. HDU 3646 DP + 二分

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...

  8. Hdu 4293 DP

    题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ ...

  9. hdu 3905(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从 ...

最新文章

  1. 两台SQL Server数据同步解决方案
  2. IEEE Transaction ------laxTex模板,代码以及生成的PDF样式
  3. Spring读取jar包外部的配置文件properties
  4. Linux中cp和scp命令的使用方法
  5. 客户端不支持javascript怎么办
  6. 2013\Province_Java_C\2.组素数
  7. Eclipse集成Maven插件tomcat部署 Debug jar包的源码联结
  8. C++学习之路 | PTA乙级—— 1017 A除以B (20分)(精简)
  9. android sdk 目录说明,Android的sdk、api及工程目录说明
  10. poj2376 区间贪心 挑战程序设计竞赛
  11. POJ 3415 (后缀数组)
  12. 组概念_【收藏】学习质谱一定要知道的6组概念
  13. MATLAB怎么加0x,matlab 0xc0150002的解决办法
  14. Obsidan之数学公式的输入
  15. python-onvif库基本使用
  16. 华住季琦谈未来酒店的趋势:传统星级酒店将会逐渐消亡与演变
  17. 计算机高配方案,电脑主机i5 9400F升10400/GTX1660Super高配吃鸡方案推荐
  18. 阿里云注册商标现身说法成功率打在公屏上
  19. iPhone7 更新iOS13.3软件闪退
  20. 人工智能之路学习计划

热门文章

  1. 硬核!Java方向所有你需要的教程全都有!
  2. paramiko详解
  3. Python使用Turtle画玻利维亚国旗
  4. PTA L1-045:宇宙无敌打招呼 (python)
  5. python word2vec库_python word2vec的使用
  6. 如何将excel表格导入word_「超百科0341」如何批量导入excel数据到指定格式的word表格?...
  7. 又到年底了,明年该学点啥呢?
  8. QUARKXPRESS 2020创建可变页面大小教程
  9. Ubuntu安装 到移动硬盘或U盘--操作系统随身携带
  10. 其实,这就是「幸存者偏差」