NOIP 2002 选数
洛谷 P1036 选数
JDOJ 1297: [NOIP2002]选数 T2
Description
已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
3+7+12=22
3+7+19=29
7+12+19=38
3+12+19=34。
现在,要求你计算出和为素数共有多少种。
例如上例,只有一种的和为素数:3+7+19=29。
Input
n , k (1< =n< =20,k<n) x1,x2,…,xn (1< =xi< =5000000 )
Output
一个整数(满足条件的种数)。
Sample Input
4 3 3 7 12 19
Sample Output
1
题解:
本题考查的知识点:递归生成全排列,质数判断。
递归生成全排列的相关知识:
思路:
我们要枚举\(n\)数中\(k\)个数的全排列之和有多少是质数,需要生成全排列再判断一下质数即可,如果依次枚举无疑会超时,所以我们想出递归深搜来优化这个问题:
我们搜索的时候需要维护这么几个参数:首先是还剩多少个数没有选进去,然后是已经选进去的和是多少,最后是剩下数字的选取范围。
所以我们有如下的递归思路:
假如k==0,说明我们已经有了一个全排列,这时候需要判断,否则,就进入选取环节:从start到end枚举递归深搜,累加和。这样就得到了我们要求的答案。
代码:
#include<cstdio>
#include<cmath>
using namespace std;
int n,k;
int a[21];
bool check(int x)
{
for(int i=2;i<=sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}
int dfs(int k,int sum,int start,int end)
{
if(k==0)
return check(sum);
int tot=0;
for(int i=start;i<=end;i++)
tot+=dfs(k-1,sum+a[i],i+1,end);
return tot;
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
printf("%d",dfs(k,0,1,n));
return 0;
}
NOIP 2002 选数的更多相关文章
- NOIP 2002 产生数
洛谷 P1037 产生数 https://www.luogu.org/problemnew/show/P1037 JDOJ 1298: [NOIP2002]产生数 T3 https://neooj.c ...
- NOIP 2002提高组 选数 dfs/暴力
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,…, ...
- 1008 选数 2002年NOIP全国联赛普及组
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description ...
- codevs——1008 选数
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知 n ...
- 【BZOJ-2732】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- CODE VS1008选数
#include<cstdlib> #include<cstdio> #include<iostream> #include<cmath> #inclu ...
- BZOJ 3930: [CQOI2015]选数 递推
3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...
- bzoj 2734: [HNOI2012]集合选数 状压DP
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 560 Solved: 321[Submit][Status ...
- BZOJ3930: [CQOI2015]选数
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3930 容斥原理. 令l=(L-1)/k,r=R/k,这样找k的倍数就相当于找1的倍数. 设F[ ...
随机推荐
- centos 修改语言、时区
修改时区 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock -w 修改语言 查看当前语言:echo $LANG vim etc/l ...
- C# HTTP系列2 HttpWebReponse类
系列目录 [已更新最新开发文章,点击查看详细] System.Net.HttpWebReponse 类提供 WebResponse 类的特定于HTTP的实现. 例子 下面的示例返回一个从Htt ...
- App启动时间分析
iOS应用的启动可分为pre-main阶段和main()阶段. 1.pre-main阶段 可以通过配置Scheme,设置DYLD_PRINT_STATISTICS为1,来打印pre-main阶段的时间 ...
- Feign的介绍和使用
一.Feign的简介 Feign是一个声明式 WebService 客户端,使用Feign能够让编写Web Service 客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持J ...
- Ansible16:Playbook高级用法
目录 本地执行 任务委托 任务暂停 滚动执行 只执行一次 设置环境变量 交互式提示 本地执行 如果希望在控制主机本地运行一个特定的任务,可以使用local_action语句. 假设我们需要配置的远程主 ...
- 【2】hexo+github搭建个人博客的简单使用
使用hexo+github搭建一个可以外网访问的个人博客,此文用于记录博客初级的使用方法. 新建-编写-生成-部署文章的全过程 1.使用cmd完成 打开命令提示符[win+r输入cmd] 切换到自己本 ...
- C#中字符串的操作大全
一.C#中字符串的建立过程 例如定义变量 strT="Welcome to "; strT+="www.cuit.edu.cn"; 程序首先创建一个System ...
- saltstack手册(含官方pdf)
官方手册 https://docs.saltstack.com/en/pdf/Salt-2019.2.1.pdf 快速入门 SALTSTACK是什么? Salt是一种和以往不同的基础设施管理方法,它是 ...
- Web Api 模型绑定 一
[https://docs.microsoft.com/zh-cn/aspnet/core/web-api/?view=aspnetcore-2.2]1.模型绑定 简单模型绑定针对简单类型(如stri ...
- centos如何强行踢掉某登录用户
linux是一个多用户操作系统,用户可以在不同的地方链接上LINUX服务器. 在系统中我们可以用w或者who来查看用户: [root@7273 ~]# who root pts/0 2019-04-1 ...