首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
UVA1213
】的更多相关文章
[UVa1213]Sum of Different Primes(递推,01背包)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3654 题意:把n拆成k个不同素数的和,有多少种拆法. dp(i,j)表示数字为i时,有j个不同素数和的组合数. 先枚举素数的上界k,注意是不同素数,那就再在k个素数中做01背包,dp(i,j)+=dp(i-p,j-1)统计出现次数就行了. #include <bits/st…
UVA1213
先打表,再回溯+剪枝 AC代码: #include<cstdio> #include<cstring> #include<cmath> const int maxn=10000+5; int cnt,vis[maxn],sum; void dfs(int n,int index,int sum,int flag) { if(sum==n){ cnt++; return; } for(int i=index;i<=n;++i) { if(sum+i>n) re…
Uva1213(线性筛模板+dp)
题意: 把n拆成k个不同素数的和,有多少种拆法. 解法: 打表后dp即可,这个dp的问题可以归纳为:在n个数中选k个数,使得和m的方案数 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ]; ]; ][]; ; void generate_prim(int n) { memset(visit, true, sizeof(visit)); ; i <= n; ++…
UVA 1213 Sum of Different Primes
https://vjudge.net/problem/UVA-1213 dp[i][j][k] 前i个质数里选j个和为k的方案数 枚举第i个选不选转移 #include<cstdio> #define N 1121 using namespace std; ][][N]; bool v[N]; int main() { ;i<N;i++) { if(!v[i]) { v[i]=true; p[++cnt]=i; } ;j<=cnt;j++) { if(i*p[j]>=N) b…