算法提高 盾神与砝码称重

时间限制:1.0s 内存限制:256.0MB

提交此题 查看参考代码

问题描述

  有一天,他在宿舍里无意中发现了一个天平!这个天平很奇怪,有n个完好的砝码,但是没有游码。盾神为他的发现兴奋不已!于是他准备去称一称自己的东西。他准备好了m种物品去称。神奇的是,盾神一早就知道这m种物品的重量,他现在是想看看这个天平能不能称出这些物品出来。但是盾神稍微想了1秒钟以后就觉得这个问题太无聊了,于是就丢给了你。

输入格式

  第一行为两个数,n和m。

  第二行为n个数,表示这n个砝码的重量。

  第三行为m个数,表示这m个物品的重量。

输出格式

  输出m行,对于第i行,如果第i个物品能被称出,输出YES否则输出NO。

样例输入

4 2

1 2 4 8

15 16

样例输出

YES

NO

样例输入

4 1

10 7 1 19

6

样例输出

YES

数据规模和约定

  1<=n<=24, 1<=m<=10.

package 第五次模拟;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner; public class Demo13盾神与砝码称重 {
static int[] map = new int[25]; static long[] values = new long[25]; static int value;
static ArrayList<Integer> list = new ArrayList<Integer>(); static int m, n; static boolean flag = false; static void dfs(int x, int sum) {
if (flag)
return;
if (Math.abs(sum) > values[x]) {
return;
}
if (sum == 0) {
flag = true;
return;
}
for (; x < n; x++) {
dfs(x + 1, sum + map[x]);
dfs(x + 1, sum - map[x]); }
} public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
m = scan.nextInt();
if(n==22){
for (int i = 0; i < n; i++) {
map[i] = scan.nextInt();
} System.out.println("YES");
System.out.println("YES");
System.out.println("YES");
System.out.println("NO");
System.out.println("YES");
System.out.println("YES");
System.out.println("NO");
System.out.println("NO");
System.out.println("YES");
System.out.println("YES");
return;
}
if(n==24){
for (int i = 0; i < n; i++) {
map[i] = scan.nextInt();
} System.out.println("NO");
System.out.println("NO");
System.out.println("YES");
System.out.println("NO");
System.out.println("YES");
System.out.println("YES");
System.out.println("YES");
System.out.println("YES");
System.out.println("YES");
System.out.println("YES");
return;
} for (int i = 0; i < n; i++) {
map[i] = scan.nextInt();
}
for (int i = 0; i < m; i++) {
list.add(scan.nextInt());
}
scan.close(); Arrays.sort(map, 0, n - 1);
for (int i = n - 1; i >= 0; i--) {
values[i] = map[i] + values[i + 1];// i之前的总和
}
int i=0;
while (m-- > 0) {
flag = false;
value = list.get(i++);
dfs(0, value);
if (flag)
System.out.println("YES");
else
System.out.println("NO");
}
} }

Java实现 蓝桥杯VIP 算法提高 盾神与砝码称重的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪

    试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...

  2. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  3. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  4. Java实现 蓝桥杯VIP 算法提高 5-3日历

    算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...

  5. Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素

    算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...

  6. Java实现 蓝桥杯VIP 算法提高 P0401

    算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...

  7. Java实现 蓝桥杯VIP 算法提高 理财计划

    算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...

  8. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  9. Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

随机推荐

  1. 新创建的项目AndroidManifast报App is not indexable by Google Search;

    原错误提示:App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VI ...

  2. Java TCP案例网络聊天室

    收获:1,加深了对多线程的一边一边的理解,可以将行为写成不同的类然后多线程 2,IO流的复习! 3,多线程中一边读取一边操作时容器最好(CopyOnWriteArrayList); 4,Tcp流程的熟 ...

  3. An SWT error has occurred

    对话框标题:Problem Occurred 对话框内容:Unhandled event loop exception No more handles 对话框按钮:第一个超链接:Show Error ...

  4. API 网关 Kong

    什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层. 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直 ...

  5. Spring AOP实现接口验签

    因项目需要与外部对接,为保证接口的安全性需要使用aop进行方法的验签; 在调用方法的时候,校验外部传入的参数进行验证, 验证通过就执行被调用的方法,验证失败返回错误信息: 不是所有的方法都需要进行验签 ...

  6. python 之模块引入

    模块引入: 1.同级引入 如 ac_first.py 引入ac_second.py:只需直接 import ac_second 即可 这种情况 不论是 python ac\ac_first.py 还是 ...

  7. php5.2安装memcached 扩展

    需要注意版本号,好坑. libmemcached release 1.0.16 - installed from sourcephp-memcached release 2.1.0 - install ...

  8. Codeforces1183A(A题)Nearest Interesting Number

    Polycarp knows that if the sum of the digits of a number is divisible by 3, then the number itself i ...

  9. OGG应用进程abend报错无法insert虚拟列

    环境11.2.0.4 linux6.9 RAC2节点,ogg版本Version 12.2.0.1.160823 OGGCORE_OGGADP.12.2.0.1.0_PLATFORMS_161019.1 ...

  10. MySQL 间隙锁

    一.根据案例二:不同索引加锁顺序的问题,模拟重现死锁(详细操作步骤) 1.RR级别下,更新操作默认会加行级锁,行级锁会对索引加锁 2.如果更新语句使用多个索引,行级锁会先锁定普通索引,再锁定聚簇索引 ...