【二进制枚举】【dfs暴搜】
原题链接
这道题,每个物品,就是选与不选两种情况,那么我们就用dfs暴搜,每次dfs要么选这个,要么不选这个
每次都到n+1停止
dfs方法
- 每次都暴力 选与不选两种情况,因为每个物品都有可能选或者不选
- 那么就遍历到n+1处,结束即可
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 15;int n, l, r, x;
int w[N];int dfs(int u, int cnt, int sum, int minw, int maxw)
{if (u == n){if (cnt >= 2 && sum >= l && sum <= r && maxw - minw >= x)return 1;return 0;}int res = 0;res += dfs(u + 1, cnt, sum, minw, maxw);res += dfs(u + 1, cnt + 1, sum + w[u], min(minw, w[u]), max(maxw, w[u]));return res;
}int main()
{cin >> n >> l >> r >> x;for (int i = 0; i < n; i ++ ) cin >> w[i];cout << dfs(0, 0, 0, 1e7, 0) << endl;return 0;
}作者:yxc
链接:https://www.acwing.com/activity/content/code/content/6326578/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二进制枚举
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 15;int n, l, r, x;
int w[N];int main()
{cin >> n >> l >> r >> x;for (int i = 0; i < n; i ++ ) cin >> w[i];int res = 0;for (int i = 0; i < 1 << n; i ++ ){int cnt = 0, sum = 0, minw = 1e7, maxw = 0;for (int j = 0; j < n; j ++ )if (i >> j & 1){cnt ++ ;sum += w[j];minw = min(minw, w[j]);maxw = max(maxw, w[j]);}if (cnt >= 2 && sum >= l && sum <= r && maxw - minw >= x)res ++ ;}cout << res << endl;return 0;
}作者:yxc
链接:https://www.acwing.com/activity/content/code/content/6326578/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【二进制枚举】【dfs暴搜】相关推荐
- 算法提高课-图论-单源最短路的综合应用-AcWing 1135. 新年好:dijkstra和dfs暴搜结合
题目分析 来源:acwing 分析: 先预处理出从1,a,b,c,d,e出发到其他所有点的单源最短路.存在二维数组dist[6][N]中 dfs暴搜所有拜访顺序,共有5!种,对于每一种拜访顺序,可以通 ...
- 和为K(二进制枚举和深搜)
二进制枚举: #include<bits/stdc++.h> using namespace std; int main() {int n,k;int i,j;int a[25] = { ...
- hdu4848 DFS 暴搜+ 强剪枝
题意: 给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms. 思路: ...
- Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
文章目录 题目 题目链接 题目 题目重述:给定一个数n,求一个长度为2n-1的序列:1只出现一次,2~n之间每个数出现2次,并且 对于2 ~n之间的每个数i,两个i之间相差为i,比如n=3,[3,1, ...
- PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历
文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...
- 二进制枚举爆搜DFS
给定一个如下图所示的全圆量角器. 初始时,量角器上的指针指向刻度 0. 现在,请你对指针进行 n 次拨动操作,每次操作给定一个拨动角度 ai,由你将指针拨动 ai 度,每次的拨动方向(顺时针或逆时针) ...
- 潜水员:【爆搜 + 二进制枚举 + DP】
题目: 潜水员为了潜水要使用特殊的装备. 他有一个带2种气体的气缸:一个为氧气,一个为氮气. 让潜水员下潜的深度需要各种数量的氧和氮. 潜水员有一定数量的气缸. 每个气缸都有重量和气体容量. 潜水员为 ...
- hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)
题意: 给你两个数n,k问你是否怎在这样一个序列: (1)这个序列有k个正整数,且不重复. (2)这k个数的和是n. (3)其中有k-1个数的和是一个平方数. ...
- [ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)
一次性写两道题 T1:一个简单的询问 题目 题解 代码实现 T2:愤怒的小鸟 题目 暴搜题解 暴搜代码实现 状压DP题解 状压DP代码实现 T1:一个简单的询问 题目 给你一个长度为 N 的序列 ai ...
最新文章
- Javabean学习纪要
- python3 from import 与 import 区别
- stm32_CAN总线知识
- Python 文件的详细操作
- java中如何关闭文件,在Java中捕获IOException后如何关闭文件?
- Arduino笔记-数字输入(开关的正确使用)
- 还在一个个复制数据?——今天教你控制台爬数据!
- pgAdminIII使用图解
- 使用iconv命令转码(UTF8-GBK)数据异常
- 3D游戏开发套件指南(入门篇,转自Unity官方平台公众号)
- word目录中英文开头目录不对齐
- 鼠标移到图片上图片放大
- gogo/protobuf proto.GoGoProtoPackageIsVersion2、proto3 版本 不一致
- since作为连词引导时间状语从句的用法
- MT6323详细芯片资料分享 MT6323设计原理图须知
- 基因加性方差、显性方差与上位性方差定义
- Avril Lavigne: Complicated
- java double 排序_转载:qsort细节用法,double型的排序我竟然一直用错了~~~
- 记一次Linux 下磁盘分配和扩容操作
- 基于小波变化图像融合