[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)统计出现次数就行了。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 typedef long long LL; 5 const int maxn = 1320; 6 bool isprime[maxn]; 7 int prime[maxn]; 8 int pcnt; 9 int n, k; 10 LL dp[maxn][maxn]; 11 12 void init() { 13 memset(isprime, true, sizeof(isprime)); 14 memset(prime, 0, sizeof(prime)); 15 pcnt = 0; 16 } 17 void getPrime() { 18 init(); 19 prime[0] = prime[1] = 0; 20 for(int i = 2; i <= maxn; i++) { 21 if(isprime[i]) prime[++pcnt] = i; 22 for(int j = 1; j <= pcnt; j++) { 23 if(i * prime[j] > maxn) break; 24 isprime[i*prime[j]] = 0; 25 if(i % prime[j] == 0) break; 26 } 27 } 28 } 29 30 int main() { 31 // freopen("in", "r", stdin); 32 // freopen("out", "w", stdout); 33 getPrime(); 34 memset(dp, 0, sizeof(dp)); 35 dp[0][0] = 1; 36 for(int k = 0; k < pcnt; k++) { 37 for(int i = 1120; i >= 0; i--) { 38 int bound = lower_bound(prime, prime+k, i) - prime + 1; 39 for(int j = 1; j < bound; j++) { 40 int& p = prime[k]; 41 if(p > i) break; 42 dp[i][j] += dp[i-p][j-1]; 43 } 44 } 45 } 46 while(~scanf("%d%d",&n,&k) && n+k) { 47 printf("%lld\n", dp[n][k]); 48 } 49 return 0; 50 }
转载于:https://www.cnblogs.com/kirai/p/6096865.html
[UVa1213]Sum of Different Primes(递推,01背包)相关推荐
- P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...
- P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...
- HDU-4278 Faulty Odometer 数学递推 || 八进制
题意 这个里程表当走到3或8的时候就会跳过 给我们这个里程表上显示的数字 让我们求这个里程表的真实数据是多少 分析 由于 3 和 8 不存在 那么就相当于一个八进制数 但是这个八进制中3 是写作4 8 ...
- 数字滤波--递推平均滤波
#define RM_BUF_LEN 10 /*递推数组的长度*/ uint16_t RM_Filter_Buf[RM_BUF_LEN]; /*保存数据的递推数组*/ uint16_t ADCx_Re ...
- 动态规划——01背包
动态规划--01背包 1. 经典"01背包" 2. "01背包"方法归纳 3. 实战 3.1 分割等和子集 3.2 最后一块石头的重量 II 3.3 目标和 3 ...
- 【01背包记录路径】东东开车了
题面 东东开车出去泡妞(在梦中),车内提供了 n 张CD唱片,已知东东开车的时间是 n 分钟,他该如何去选择唱片去消磨这无聊的时间呢 假设: CD数量不超过20张 没有一张CD唱片超过 N 分钟 每张 ...
- 小C的01序列(简单递推)
题目链接:https://www.cometoj.com/contest/84/problem/B?problem_id=4305 令f[i][k]表示第sis_isi中k对应次数,考察序列特征,发 ...
- 【动态规划】0-1背包递推式的剖析(通俗易懂)
(如有错误,恳请斧正) 递推式如下: vi是第i件物品的价值,wi是第i件物品的所占空间. m(i,j) 代表的含义是:目前只考虑第1到第i件物品放入总容量为j的背包所获得的最大价值.(背包总容量不可 ...
- AcWing 蓝桥杯AB组辅导课 01、递归与递推
文章目录 前言 一.递归 知识点 例题 题目1:AcWing 95.斐波那契数列[简单,递归写法] 题目2:AcWing 92.递归实现指数型枚举[简单] 题目3:AcWing 94.递归实现排列型枚 ...
最新文章
- linux能用airport吗_苹果下架最后两款 AirPort 产品,正式退出路由器市场
- 一道经典的JavaScript面试题
- m40型工业机器人_工业机器人在汽车生产中有的应用范围
- 第3章 C# 2008中面向过程的高级元
- 张珺 2015/07/13 个人文档
- 使用API Monitor监测到目标程序对系统API函数的调用(常用分析工具)
- c语言实验作业,C语言实验报告experience_c语言实验报告结果分析
- 谈谈多源数据融合-科普基本概念篇
- 搜狐新闻数据400w+
- 硬盘(IDE硬盘与SCSI硬盘)在Linux标识的命名规则
- 2022-03-25 redis哨兵处理failover
- python控制手机模拟器_Appium+python自动化23-Android夜神模拟器
- 自己编写代码去听网易云音乐的歌曲,以及观看MV,还可以下载奥
- 谷歌浏览器 android 69,如何将谷歌浏览器69及以上版本切换回旧版UI界面
- 开淘宝店被骗,刷信誉被骗
- c语言 return0作用
- 零基础也能快速上手的python实战项目----美多商城
- Lammps实现水分子在纳米颗粒球表面的吸附行为
- 哪个邮箱可以邮件群发?vip邮箱群发邮件软件哪个好?
- 【计算机考研必备常识】24考研你开始准备了吗?