[我是传送门]

这是一道很经典的深搜与回溯(难度一般)

可是就这个"普及-"

让本蒟蒻做了一晚上+半个上午(实际我不会深搜回溯,全靠框架+去重);

下面让我分享下本蒟蒻的(全排列+暴搜去重)

#include<bits/stdc++.h>
using namespace std;
int n,r,ttt;//n是总数,r是选的数,ttt是答案
int a[],b2[],c[][];//a用来储存排列的编号,b2用来储存输入的数,c用来去重(储存符合条件的数组的编号)
bool b[];//用来判断是否用过
bool ss2(int t[]){//暴搜判重
int tot=;//计数器
for(int i=;i<=ttt;i++){//循环所有储存的数组
for(int j=;j<=r;j++){//循环r次,比较每一个字符
if(t[j] != c[i][j])//判重
tot++;
}
if(tot==)//如果没有一个不一样的说明重复
return ;
tot=;//一定要清空!!!!
}
return ;//如果全不重复,说明不重
}
bool sus(int y){//判断素数
if(y==||y==)//防止特殊值
return ;
if(y==)
return ;
for(int i=;i<=sqrt(y);i++){//循环到sqrt就够了
if(y%i==)
return ;
}
return ;
}
void print(){//其实不能叫print,因为没有输出 int y=;
int b3[r+];//定义新数组避免动原先(a)数组
for(int i=;i<=r;i++)//判断素数
y+=b2[a[i]];
if(sus(y)==){//不是素数直接跳过
for(int i=;i<=r;i++)
b3[i]=a[i];
sort(b3+,b3+r+);//一定要排序,因为类似"组合"
if(ss2(b3)==){//如果不重复
u++;//这一步可以不要
ttt++;//答案加1
for(int i=;i<=r;i++)
c[u][i]=b3[i] ;//如果不要u++这里u要换成ttt
} } }
void ss(int k){//程序主体
for(int i=;i<=n;i++){
if(b[i] ==){//只要没标记过就能用
a[k]=i;//记录编号
b[i]=;//标记
if(k==r) print();//到了r"输出"
else ss(k+);//否则继续
b[i]=;//回溯
}
}
}
int main(){
cin>>n>>r;//输入
for(int i=;i<=n;i++)
cin>>b2[i];
ss();//深搜
cout<<ttt;//输出答案
return ;
}

洛古P1036 选数 题解的更多相关文章

  1. 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举

    题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k& ...

  2. 【搜索】【入门】洛谷P1036 选数

    题目描述 已知 n个整数x1​,x2​,…,xn​,以及1个整数k(k<n).从nn个整数中任选kk个整数相加,可分别得到一系列的和. 例如当n=4,k=3,4个整数分别为3,7,12,19时, ...

  3. P1036 选数 题解

    题目链接https://www.luogu.org/problemnew/show/P1036 题目描述 已知 nnn 个整数 x1,x2,-,xnx_1,x_2,-,x_nx1​,x2​,-,xn​ ...

  4. 洛谷 P1036 选数

    嗯.... 这种类型的题在新手村出现还是比较正常的, 但是不知道为什么它的分类竟然是过程函数与递归!!!(难道这不是一个深搜题吗??? 好吧这就是一道深搜题,所以千万别被误导... 先看一下题目: 题 ...

  5. (水题)洛谷 - P1036 - 选数

    https://www.luogu.org/problemnew/show/P1036 $n$ 才20的数据量,我当时居然还在想怎么分组组合,直接 $2^{20}$ 暴力搞就行了. $x_i $太大了 ...

  6. 洛谷P1036选数(素数+组合数)

    题目链接:https://www.luogu.org/problemnew/show/P1036 主要考两个知识点:判断一个数是否为素数.从n个数中选出m个数的组合 判断一个数是否为素数: 素数一定是 ...

  7. 洛谷——P1036 选数

    题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12, ...

  8. 【洛谷P1036 选数】

    这个题显然用到了深搜的内容 让我们跟着代码找思路 #include<bits/stdc++.h>//万能头 ],ans; inline bool prime(int n)//最简单的判定素 ...

  9. 洛谷 P1036 选数【背包型DFS/选or不选】

    题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12, ...

随机推荐

  1. Python【pyyaml】模块

    pyyaml模块安装: pip install pyyaml pyyaml导入: import yaml pyyaml使用: 1.使用前,在pycharm中新建一个以yaml或yml结尾的文件,保存为 ...

  2. Pandas系列(四)-文本数据处理

    内容目录 1. 为什么要用str属性 2. 替换和分割 3. 提取子串 3.1 提取第一个匹配的子串 3.2 匹配所有子串 3.3 测试是否包含子串 3.4 生成哑变量 3.5 方法摘要 一.为什么要 ...

  3. Pandas系列(八)-筛选工具介绍

    内容目录 1. 字典式 get 访问 2. 属性访问 3. 切片操作 4. 通过数字筛选行和列 5. 通过名称筛选行和列 6. 布尔索引 7. isin 筛选 8. 通过Callable筛选 数据准备 ...

  4. Redis(REmote DIctionary Server)基础

    Redis(REmote DIctionary Server)基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Redis是一个开放源代码(BSD许可)的内存数据结构存储,用作数 ...

  5. CMDB资产管理系统开发【day25】:需求分析

    本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...

  6. [再寄小读者之数学篇](2014-11-02 Herglotz' trick)

    设 $f$ 是 $\bbR$ 上周期为 $1$ 的连续可微函数, 满足 $$\bee\label{141102_f} f(x)+f\sex{x+\frac{1}{2}}=f(2x),\quad\for ...

  7. Shell 自动安装 JDK

    1. 脚本文件 installjdk.sh 注意: EOF 前后不能有空格 #!/bin/bash BASE_SERVER=192.168.1.11 yum install -y wget wget ...

  8. 🍓rem单位在Chrome中字体大小异常 🍓

    这是一个很少出现,而一旦出现就让人头疼难当的bug.....网上资料比较少. 解决:https://oss.so/article/87 即为html标签设置-webkit-text-size-adju ...

  9. html 超链接标签 锚点 a标签伪类

    一个简易的连接 <a href="01.html">01</a> <body> <a href="01.html" t ...

  10. 「luogu3313」[SDOI2014] 旅行

    题目大意 :有 n 个城市连成一棵树, 每个城市有两个关键字, 一个是该城市的宗教, 另一个是城市的评级;旅行者要在城市间旅行, 他只会在和自己宗教相同的城市留宿;维护四个树上操作 { 1. “CC ...