UVa 1213 (01背包变形) Sum of Different Primes
题意:
选择K个质数使它们的和为N,求总的方案数。
分析:
虽然知道推出来了转移方程, 但还是没把代码敲出来,可能基本功还是不够吧。
d(i, j)表示i个素数的和为j的方案数,则 d(i, j) = sigma d(i-1, j-p[k]) ,其中p[k]表示第k个素数
注意递推的顺序是倒着推的,否则会计算重复的情况。
代码中第二重和第三重循环的顺序可互换。
#include <cstdio>
#include <cmath> const int maxp = ;
const int maxn = ;
int cnt = ;
int prime[maxp];
bool vis[maxn + ]; int d[][maxn + ]; void Init()
{
int m = sqrt(maxn + 0.5);
for(int i = ; i <= m; ++i) if(!vis[i])
for(int j = i * i; j <= maxn; j += i) vis[j] = true;
for(int i = ; i <= maxn; ++i) if(!vis[i]) prime[cnt++] = i;
} void dp()
{
d[][] = ;
for(int i = ; i < cnt; ++i)
for(int j = ; j > ; --j) //j个质数的和
for(int k = maxn; k >= prime[i]; --k) //为k
d[j][k] += d[j-][k-prime[i]];
} int main()
{
//freopen("in.txt", "r", stdin);
Init();
dp();
int k, n;
while(scanf("%d%d", &n, &k) == && n) printf("%d\n", d[k][n]); return ;
}
代码君
UVa 1213 (01背包变形) Sum of Different Primes的更多相关文章
- 紫书 例题 9-5 UVa 12563 ( 01背包变形)
		
总的来说就是价值为1,时间因物品而变,同时注意要刚好取到的01背包 (1)时间方面.按照题意,每首歌的时间最多为t + w - 1,这里要注意. 同时记得最后要加入时间为678的一首歌曲 (2)这里因 ...
 - 【01背包变形】Robberies HDU 2955
		
http://acm.hdu.edu.cn/showproblem.php?pid=2955 [题意] 有一个强盗要去几个银行偷盗,他既想多抢点钱,又想尽量不被抓到.已知各个银行 的金钱数和被抓的概率 ...
 - FZU 2214 Knapsack problem 01背包变形
		
题目链接:Knapsack problem 大意:给出T组测试数据,每组给出n个物品和最大容量w.然后依次给出n个物品的价值和体积. 问,最多能盛的物品价值和是多少? 思路:01背包变形,因为w太大, ...
 - codeforce  Gym 101102A Coins (01背包变形)
		
01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
 - HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
		
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
 - CF#214 C. Dima and Salad 01背包变形
		
C. Dima and Salad 题意 有n种水果,第i个水果有一个美味度ai和能量值bi,现在要选择部分水果做沙拉,假如此时选择了m个水果,要保证\(\frac{\sum_{i=1}^ma_i}{ ...
 - 紫书 习题 10-5 UVa 1213(01背包变形)
		
这里就是01背包多了一维物品个数罢了 记得不能重复所以有一层循环顺序要倒着来 边界f[0][0] = 1 #include<cstdio> #include<vector> # ...
 - Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)
		
传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Ha ...
 - POJ 3211 Washing Cloths(01背包变形)
		
Q: 01背包最后返回什么 dp[v], v 是多少? A: 普通01背包需要遍历, 从大到小. 但此题因为物品的总重量必定大于背包容量, 所以直接返回 dp[V] 即可 update 2014年3月 ...
 
随机推荐
- 求小于等于n的所有素数
			
题目:要求输出所有小于等于n的素数(n>=2,且为正整数) 要求:1.每行输出10个素数 2.尽可能采用较优算法 #include<iostream> #include<cma ...
 - fedora 安装chrome
			
1. 下载chrome的rpm安装包 2. 安装lsb: sudo yum install redhat-lsb.x86_64 3. rpm -i google-chrome-{xxxxx}.rp ...
 - couldnt resolve host mirrorlist.centos
			
解决centos 6.3 yum安装软件时找不到镜像问题 [root@nagios-server ~]# yum update –y Loaded plugins: fastestmirror Lo ...
 - gridView AspNetPager 翻页时 弹出窗体关闭报错
			
gridView AspNetPager 翻页后,你右击刷新或F5会发现弹出一个刷新页面. 这是因为默认翻页都是用dopostback方式回发的.因为这时的页面已经不是原来的页面.所以会弹出提示. 这 ...
 - String声明为NULL和""的区别
			
代码虐我千百遍,我待代码如初恋. String 声明为 NULL 则声明了一个变量不指向任何一块地址,则 length()会出现错误. 声明为"",则是一个长度为0的字符串.
 - 实时数据处理环境搭建flume+kafka+storm:4.storm安装配置
			
1.解压 apache-storm-0.9.3.tar.gz 2.修改配置文件 conf/storm.yaml --zk地址 storm.zookeeper.servers: - " ...
 - [转载]jquery获取元素索引值index()方法:
			
jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的 ...
 - suse pshell连接不上
			
/etc/ssh/sshd_config #PasswordAuthentication no改成yessuse默认为密钥认证
 - 搭建 Android 开发环境,初试HelloWorld (win7) (上) (转)
			
搭建Android开发环境主要有以下几步要做: 1.JDK安装 2.Eclipse安装 3.Android SDK安装 4.ADT安装 5.创建AVD 1.JDK(Java Development K ...
 - smarty foreach 最全用法
			
<?php$search_condition = "where name like '$foo%' ";$sql = 'select contact_id, name, ni ...