首页 > 小M和天平
头像 issue是云哥的小迷×呀
发表于 2021-01-08 15:41:13
物品可以放左边也可以放在右边 其实可以看成一个物品可以作为重量也可以作为 那么看成个物品来一次$背包即可 但是这里稍微有点变化,物品的价值可能是负数 那么如果负数也按照我们倒序枚举会有问题,负数应该正序枚举 负数正序枚举能保证状态没有重复使用一个物品 当然如果你用的是二维数组来就不需要分两次了 #i 展开全文
头像 Kur1su
发表于 2021-01-08 16:55:11
Description 给一个天平和一堆已知重量的石头,判断目标重量能否搭配出来。 Solution 假设石头放左边贡献是 , 放右边是 根据数据,最大的重量只能是 不妨令 为使用第 个石头的时候能否到达重量为 的状态显然有 不取 放在右边 放在左边 最后查询的时候检查是否能到达状 展开全文
头像 shyyhs
发表于 2021-01-05 14:41:12
对于这题来说,难点在于分析左右两边的天平.但是我们可以发现,把这个石头放负数边其实就是abs(j−x).{对于这题来说,难点在于分析左右两边的天平.但是我们可以发现,把这个石头放负数边其实就是abs(j-x).}对于这题来说,难点在于分析左右两边的天平.但是我们可以发现,把这个石头放负数边其实就是a 展开全文
头像 sunrise__sunrise
发表于 2021-01-08 16:22:02
题目描述 多组输入,第一行一个,代表你有个石子,并且石子只能用一次。第二行给出全部石子的重量。第三行给出一个,代表询问次数。接下来有行每行一个,问重量为的物品能不能被当前有的石子测出来平衡天平。 Solution 首先观察题目范围,对于单个的最大可到,但是我们最大可以凑到的石子重量却是,根本到不了的 展开全文
头像 MYCui_
发表于 2021-01-08 19:14:32
前置知识: 背包 解题思路 题目意思其实就是一个存在性判定问题。问某一个数是否可以通过给定的数进行加减得到(每个数仅使用一次的前提下) 由于给定的石头数量很少,而且给定的石头的重量小,所以考虑对于每次询问前预处理出哪一些重量是可以被表示出来的。 不难想到这其实就是一个经典的问题:01背包,但是这 展开全文
头像 lifehappy
发表于 2021-01-08 13:39:48
小M和天平 能称得给定的质量,大致有两种情况,一、给定的石子直接组合可以得到物品的质量,这就可以通过背包来直接得到了。 二、(一些石子 + 物品) = (另一些石子),也就是能够从石子中挑出两堆,这两堆的差值为我们所需称量的。 #include <bits/stdc++.h> usin 展开全文
头像 熠丶
发表于 2021-01-09 01:38:04
做法:dp 思路: 1.因为能测范围最大是,所以大于10000的范围必定测不出 2.考虑每一层状态转移,如果上一层存在,那么这一层分类讨论1)两边都不放石头,即2)放在多的那一侧,即3)放在少的那一侧,即 代码 // Problem: 小M和天平 // Contest: NowCoder // 展开全文
头像 精神病科黄主任
发表于 2021-01-08 14:29:53
题意:给一些石子,多次询问,问能不能测出所给重量思路:①考虑把重量放在单独一边,石子放在单独一边。这样就是一个01背包。②实际上重量那边也可以放石子,那么其实就是从①中的01背包中可以达到的状态,减去放在另一边的石子堆所以这里也是一个类似01背包的过程,枚举石子,然后枚举重量,要注意第二维循环按照从 展开全文
头像 昵称很长很长真是太好了
发表于 2021-01-16 15:04:48
题解:分成两种情况来讨论:1.石头单独放到一边,这样就是看看石头能凑出哪些数即可。2.另一边也可以放石头,那么那个重物就是,全为石头一边的重量-另一边石头的重量。分好这两种情况之后就可以进行dp了。 /*Keep on going Never give up*/ #pragma GCC optimi 展开全文
头像 人丑心更黑
发表于 2021-07-15 11:01:12
题目描述:有一堆石子,一个无游标的天平,已知石子的重量,石子可以放天平的任意一边,问能否用石子称出某个询问的重量。 思路:首先可以发现石子最多100个,每个最重100,因此最大的能称出来的重量为10000。如果输入的询问重量超过10000,可以直接输出NO。显然会往01背包方向考虑。由于石子可以放天 展开全文