1673: [Usaco2005 Dec]Scales 天平

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 391  Solved: 157
[ Submit][ Status][ Discuss]

Description

Farmer John has a balance for weighing the cows. He also has a set of N (1 <= N <= 1000) weights with known masses (all of which fit in 31 bits) for use on one side of the balance. He places a cow on one side of the balance and then adds weights to the other side until they balance. (FJ cannot put weights on the same side of the balance as the cow, because cows tend to kick weights in his face whenever they can.) The balance has a maximum mass rating and will break if FJ uses more than a certain total mass C (1 <= C < 2^30) on one side. The weights have the curious property that when lined up from smallest to biggest, each weight (from the third one on) has at least as much mass as the previous two combined. FJ wants to determine the maximum mass that he can use his weights to measure exactly. Since the total mass must be no larger than C, he might not be able to put all the weights onto the scale. Write a program that, given a list of weights and the maximum mass the balance can take, will determine the maximum legal mass that he can weigh exactly.

约翰有一架用来称牛的体重的天平.与之配套的是N(1≤N≤1000)个已知质量的砝码(所有砝码质量的数值都在31位二进制内).每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝码,直到天平平衡,于是此时砝码的总质量就是牛的质量(约翰不能把砝码放到奶牛的那边,因为奶牛不喜欢称体重,每当约翰把砝码放到她的蹄子底下,她就会尝试把砝码踢到约翰脸上).天平能承受的物体的质量不是无限的,当天平某一边物体的质量大于C(1≤C<230)时,天平就会被损坏.    砝码按照它们质量的大小被排成一行.并且,这一行中从第3个砝码开始,每个砝码的质量至少等于前面两个砝码(也就是质量比它小的砝码中质量最大的两个)的质量的和.    约翰想知道,用他所拥有的这些砝码以及这架天平,能称出的质量最大是多少.由于天平的最大承重能力为C.他不能把所有砝码都放到天平上.
现在约翰告诉你每个砝码的质量,以及天平能承受的最大质量.你的任务是选出一些砝码,
使它们的质量和在不压坏天平的前提下是所有组合中最大的.

Input

* Line 1: Two space-separated positive integers, N and C.

* Lines 2..N+1: Each line contains a single positive integer that is the mass of one weight. The masses are guaranteed to be in non-decreasing order.

第1行:两个用空格隔开的正整数N和C.

第2到N+1行:每一行仅包含一个正整数,即某个砝码的质量.保证这些砝码的质量是一个不下降序列

Output

* Line 1: A single integer that is the largest mass that can be accurately and safely measured.

一个正整数,表示用所给的砝码能称出的不压坏天平的最大质量.

Sample Input

3 15// 三个物品,你的"包包"体积为15,下面再给出三个数字,从第三个数字开始,它都大于前面的二个数字之和,这个条件太重要
1
10
20

INPUT DETAILS:

FJ has 3 weights, with masses of 1, 10, and 20 units. He can put at most 15
units on one side of his balance.

Sample Output

11

HINT

约翰有3个砝码,质量分别为1,10,20个单位.他的天平最多只能承受质量为15个单位的物体.用质量为1和10的两个砝码可以称出质量为11的牛.这3个砝码所能组成的其他的质量不是比11小就是会压坏天平

Source

Silver

这道题看到了以为是背包dp;然后突然发现数据那么大Orz就跪了,遂找题解。。。原来还可以这样子搞啊。这怎么想到的呢。反正记住就好了。听说是有技巧的背包。。

------------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
int n,m;
ll ans=-1;
const int nmax=1010;
int a[nmax];
ll sum[nmax];
void dfs(int cur,ll count){
 if(count>m) return;
 if(sum[cur-1]+count<=m){
  ans=max(ans,sum[cur-1]+count);
  return ;
 }
 ans=max(ans,count);
 for(int i=1;i<cur;i++){
  count+=a[i];
  dfs(i,count);
  count-=a[i];
 }
}
int main(){
 scanf("%d%d",&n,&m);
 for(int i=1;i<=n;i++){
  scanf("%d",&a[i]);
  sum[i]=sum[i-1]+a[i];
 }
 dfs(n+1,0);
 printf("%d\n",ans);
 return 0;
}

----------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/20003238wzc--/p/4827193.html

bzoj1673:天平相关推荐

  1. 【蓝桥java】进制与整除之天平秤重

    题目: 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量. 如果只有5个砝码,重量分别是1,3,9,27,81 则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中). ...

  2. 天平游码读数例题_量筒、天平经典习题

    1. 下列操作中用到镊子的是 ( ) A . 取粉末状固体 B . 取坩锅 C.取块状固体 D.取砝码 2 .在"用托盘天平称物体的质量"的实验中,不是必要的 ? ( ) A .使 ...

  3. UVA839 天平 Not so Mobile(二叉树的递归遍历建树并回答问题)

    UVA839 天平 Not so Mobile 因为这个solve函数使用的是引用变量&w,在函数里对w(形参)的改变会直接改变实参,wl,wr通过递归走到根节点并得到根节点的质量返回,一层递 ...

  4. 7-9 用天平找小球 (C语言)

    7-9 用天平找小球 (10 分)三个球A.B.C,大小形状相同且其中有一个球与其他球重量不同.要求找出这个不一样的球. 输入格式: 输入在一行中给出3个正整数,顺序对应球A.B.C的重量. 输出格式 ...

  5. 用C语言解“用天平找小球”题

    7-9 用天平找小球 三个球A.B.C,大小形状相同且其中有一个球与其他球重量不同.要求找出这个不一样的球. 输入格式: 输入在一行中给出3个正整数,顺序对应球A.B.C的重量. 输出格式: 在一行中 ...

  6. 用python解“用天平找小球”题

    7-9 用天平找小球 三个球A.B.C,大小形状相同且其中有一个球与其他球重量不同.要求找出这个不一样的球. 输入格式: 输入在一行中给出3个正整数,顺序对应球A.B.C的重量. 输出格式: 在一行中 ...

  7. 技术以外的功夫 ----作者:李天平

    记得看过冯仑的"赚钱以外的功夫"有感而发,写写我们IT人技术以外的功夫.     有时候发现做技术做长了,很多的人的性格都会发生变化,变得内向,变得封闭.有的会发现市场团队的开会, ...

  8. 【算法题】天平砝码称重

    总结:天平有三种状态.左边,右边,平衡,因此天平问题一般是三进制 1.用最少的砝码称出1到100克的物品 给定一个天平,用最少的砝码称出1到100克的物品,砝码重量任选 假设物品放在右边,砝码可以放在 ...

  9. 13个球一个天平,现知道只有一个和其它的重量不同,怎样称才能用三次就找到那个球?...

    把13个球按4,4,5分成A,B,C 3组,分别标号A1,A2,A3,A4,B1,B2,B3,B4,C1,C2,C3,C4,C5: 先将A组和B组放在天平上: 一.如果A和B平衡:则不同的球在C组中. ...

最新文章

  1. 数字转换为字符的L受哪个参数影响
  2. python 寻找比目标字母大的最小字符
  3. AndroidStudio创建第一个 Flutter 应用程序
  4. 微型计算机工业控制技术,基于ARM的微机原理与接口技术(STM32嵌入式系统架构编程与应用嵌入式与工业控制技术高等学校电子信息类专业系列教材)...
  5. 【公共类库】加密解密
  6. python3 ftp服务器_python3实现ftp服务功能(服务端 For Linux)
  7. 同时更改一条数据_数据仓库amp;面试总结
  8. android post数据到php服务器,通过post方法将数据上传到服务器Android Studio
  9. Qt Creator 4.9 发布
  10. 计算机说课稿模板小学数学,精选小学数学万能说课稿模板
  11. cdh6.3安装以及整合spark2、flink1.9
  12. 蓝桥杯 单片机 决赛 第7届 电压、频率采集设备
  13. Storm示例剖析-fastWordCount
  14. HBase项目实战:HBase+Flume+Kafka+Hive+SSM实现电信大数据通话信息实时读写定位系统
  15. 从线代角度图解:通解、特解、非齐次通解、非齐次特解、齐次通解、齐次特解
  16. 一文多发神器--ArtiPubOpenWrite
  17. python爬取软件内数据_各种数据爬取工具爬虫合集整理
  18. 【CoderSay】Code For Better 谷歌开发者之声 - 相遇2022GoogleSummit
  19. 深度linux任务栏在哪,更新Deepin 20后任务栏dde-dock消失不见的暂时解决
  20. 数字签名的作用和功能

热门文章

  1. AirPods的自动连接配对原理
  2. “小朋友大人排队”问题(十分钟带你玩转 牛客网 CM11 链表分隔)
  3. C++ 引用详解(引用的特点,引用与指针的区别,引用的其他使用)
  4. 移动**21*设置无法接通_手机暂时无法接通是什么原因
  5. Centos7的yum配置本地源及利用yum安装google
  6. 计算机科学与技术 国家特色,“计算机科学与技术”国家级特色专业建设报告.pdf...
  7. 一加 Ace2屏幕参数怎么样 一加 Ace2电池容量
  8. VBoxManage常用命令
  9. AG9311MCQ设计应用|AG9311MCQ设计USB TYPEC转HDMI带PD快充拓展坞设计方法|AG9311MCQ设计电路图
  10. windows C盘 增加容量 不能扩展卷