二进制枚举爆搜DFS
给定一个如下图所示的全圆量角器。
初始时,量角器上的指针指向刻度 0。
现在,请你对指针进行 n 次拨动操作,每次操作给定一个拨动角度 ai,由你将指针拨动 ai 度,每次的拨动方向(顺时针或逆时针)由你自由决定。
请你判断,能否通过合理选择每次拨动的方向,使得指针最终仍然指向刻度 0。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一个整数 ai,表示一次操作的拨动角度。
输出格式
如果可以做到指针最终仍然指向刻度 0,则输出 YES
,否则输出 NO
。
数据范围
前 4 个测试点满足 1≤n≤3。
所有测试点满足 1≤n≤15,1≤ai≤180。
输入样例1:
3
10
20
30
输出样例1:
YES
输入样例2:
3
10
10
10
输出样例2:
NO
输入样例3:
3
120
120
120
输出样例3:
YES
dfs做法
#include <iostream>using namespace std;int n;
const int N = 20;bool st;int a[N];void dfs(int t, int r)
{if(t == n + 1 ) {if(r % 360 == 0) st = true;return ;}dfs(t + 1, r + a[t]); dfs(t + 1, r - a[t]); }int main()
{scanf("%d", &n);for(int i = 0; i< n; i ++) scanf("%d", &a[i]);dfs(0, 0);if(st) cout << "YES";else cout << "NO";return 0;
}
二进制枚举
#include <iostream>
using namespace std;
const int N = 20,M=1<<16 ;
int a[N], f[M];
int n;
bool st;int main()
{cin >> n;for(int i = 0; i < n; i ++) scanf("%d", &a[i]);for(int i = 0; i < (1 << n); i ++){for(int j = 0; j < n; j ++){if(i >> j & 1) f[i] += a[j];else f[i] -= a[j];}if(f[i]%360==0) st = true;}if(st == false) cout << "NO";else cout << "YES";return 0;
}
二进制枚举爆搜DFS相关推荐
- 【二进制枚举】【dfs暴搜】
原题链接 这道题,每个物品,就是选与不选两种情况,那么我们就用dfs暴搜,每次dfs要么选这个,要么不选这个 每次都到n+1停止 dfs方法 每次都暴力 选与不选两种情况,因为每个物品都有可能选或者不 ...
- 买零食 HihoCoder - 1272 (大爆搜DFS)
小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称.第一次去一教小卖部买零食的时候,小Ho由于不懂事买了好一大堆东西,被小卖部姐姐给了一个&qu ...
- 潜水员:【爆搜 + 二进制枚举 + DP】
题目: 潜水员为了潜水要使用特殊的装备. 他有一个带2种气体的气缸:一个为氧气,一个为氮气. 让潜水员下潜的深度需要各种数量的氧和氮. 潜水员有一定数量的气缸. 每个气缸都有重量和气体容量. 潜水员为 ...
- 【ZSTU4210 2015年12月浙理工校赛 A】【DFS爆搜】孙壕请一盘青岛大虾呗 n个消费点m个购物点最后一位置恰好消费完
4210: 孙壕请一盘青岛大虾呗 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 585 Solved: 249 Description 话说那一年z ...
- 和为K(二进制枚举和深搜)
二进制枚举: #include<bits/stdc++.h> using namespace std; int main() {int n,k;int i,j;int a[25] = { ...
- DFS(爆搜、深搜)
DFS俗称爆搜,深搜.DFS对应的流程是一个树的结构,DFS的精髓在于递归求解的思路以及回溯的处理.针对搜索的过程,又有重要的剪枝优化.必要的剪枝优化对DFS的顺序执行有很大的作用. DFS的过程就是 ...
- 二进制枚举子集(总结+应用)
文章目录 定义阐明 简单的知识铺垫 应用举例 代码实现 例题应用 思路如下: 题解如下: 其它例题 定义阐明 1.什么是子集:子集是一个数学概念:如果集合A的任意一个元素都是集合B的元素,那么集合A称 ...
- 1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】
https://pintia.cn/problem-sets/994805342720868352/problems/994805370650738688 注意测试点1: 72=2*3*3*4 我这里 ...
- HDU 5025Saving Tang Monk BFS + 二进制枚举状态
3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...
最新文章
- html5自适应团购,基于HTML5的O2O团购平台的设计与实现
- SpringBoot v2.2.6版本遇到的坑------Thymeleaf的sec:authorize标签无效
- 【Tools】Visual Studio 2019下载和安装
- 技术、管理和技术管理
- C++实现线段树(lazy-tag方法)-区间修改,区间查询
- Java 8 HashMap键与Comparable接口
- 小米4android8.0root,小米小米 5X(安卓8.0)手机完美获取root教程,最强root工具,亲测可用!...
- Clion解决c++源文件多个编译运行
- tensorboard 可视化 projector
- 最强升级系统鸿蒙大世界等级,最强升级系统瞬间满级
- Activity 审批流简单介绍
- 《金融怪杰》读书笔记
- Echart统计图-map地图
- ThinkPHP5.0+七牛云SDK文件上传
- 红米5双清_红米手机双清步骤
- ROS小车IMU、角速度、线速度等参数校验
- lbaas l7 policy
- python输出最长字符串_使用Python打印最长的字母子字符串,并打结...
- Win2003集群简介
- husky + lint-staged 使用备忘