hdu 2189(简单完全背包)
来源:互联网 发布:剑三血痕成男捏脸数据 编辑:程序博客网 时间:2024/05/22 13:46
题意:将n分成若干个素数之和,问有多少中方式。
思路:素数打表,然后完全背包。(也可以用母函数)
#include <limits.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <algorithm>#include <iostream>#include <iterator>#include <queue>#include <stack>#include <string>#include <vector>#include <set>#include <map>//#define ONLINE_JUDGE#define eps 1e-6#define INF 0x7fffffff //INT_MAX#define inf 0x3f3f3f3f //int??????????????????#define FOR(i,a) for((i)=0;i<(a);(i)++) //[i,a);#define MEM(a) (memset((a),0,sizeof(a)))#define sfs(a) scanf("%s",a)#define sf(a) scanf("%d",&a)#define sfI(a) scanf("%I64d",&a)#define pf(a) printf("%d\n",a)#define pfI(a) printf("%I64d\n",a)#define pfs(a) printf("%s\n",a)#define sfd(a,b) scanf("%d%d",&a,&b)#define sft(a,b,c)scanf("%d%d%d",&a,&b,&c)#define for1(i,a,b) for(int i=(a);i<b;i++)#define for2(i,a,b) for(int i=(a);i<=b;i++)#define for3(i,a,b)for(int i=(b);i>=a;i--)#define MEM1(a) memset(a,0,sizeof(a))#define MEM2(a) memset(a,-1,sizeof(a))#define MEM3(a) memset(a,0x3f,sizeof(a))#define LL __int64const double PI = acos(-1.0);template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }template<class T> inline T Min(T a, T b) { return a < b ? a : b; }template<class T> inline T Max(T a, T b) { return a > b ? a : b; }using namespace std;template<class T>T Mint(T a, T b, T c) { if (a>b) { if (c>b) return b; return c; } if (c>a) return a; return c;}template<class T>T Maxt(T a, T b, T c) { if (a>b) { if (c>a) return c; return a; } else if (c > b) return c; return b;}const int maxn=155;int T,n,m,k;int f[37]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,155};int dp[maxn];void completepack(){MEM1(dp);dp[0]=1;int t=upper_bound(f,f+37,n)-f;for(int i=1;i<=t;i++){for(int j=n;j>=2;j--){for(int k=1;k<=j/f[i];k++){dp[j]+=dp[j-k*f[i]];}}}}int main() {#ifndef ONLINE_JUDGEfreopen("test.in","r",stdin);freopen("test.out","w",stdout);#endifsf(T);while(T--){sf(n);completepack();pf(dp[n]);} return 0;}
0 0
- hdu 2189(简单完全背包)
- hdu 1587 简单完全背包
- hdu 2189 完全背包
- HDU 1398 Square Coin(简单完全背包)
- hdu 1114 (完全背包)
- HDU 1114(完全背包)
- hdu 1114(完全背包)
- hdu 4508(完全背包)
- hdu 1203(完全背包)
- HDU 1114(完全背包)
- HDU 1114(完全背包)
- hdu 2546 (完全背包)
- (完全背包)hdu 1114
- HDU 5410(01背包+完全背包)
- 01背包+完全背包 HDU
- 简单01背包 完全背包
- HDU 2159 FATE(二维完全背包)
- hdu 1114 Piggy-Bank(完全背包)
- call_once
- unity 球体表面平均分割点
- 当activity运行时添加fragment(fragment应用的第二种方法)
- Android-Property 动画自定义TypeEvaluator
- android中拨打电话的事件
- hdu 2189(简单完全背包)
- ubuntu配置远程登陆
- leetcode第6题ZigZag Conversion
- 03-Git命令行演练-团队开发
- ssh密钥连接主机
- HDU 3085 Nightmare Ⅱ(双向BFS)
- sprintf() 格式化输出函数(图形)
- POJ 2828 Buy Tickets 题意&题解&代码(c++)
- HTML中的checked问题