求天平的最大量程. (300分)

  • 主题发起人 LeeChange
  • 开始时间
L

LeeChange

Unregistered / Unconfirmed
GUEST, unregistred user!
有一架天平和一组砝码,可以用来称物体的质量.在给定的砝码质量都确定的情况下,天平能够连续称重的物体的最大质量称为天平的量程.
比如,只有一个砝码,质量为1,那么他可以称出质量为1的物体,则称此时天平的量程为1.
如果这个砝码的质量为2,那么他只能称质量为2的物体,却不能称质量为1的物体,违反了能够连续称重的原则,因此此时天平的量程为0.
既:在砝码数为1时,天平的最大量程为1
再看有两个砝码的情况:
如果两个砝码的质量都为1,那么可以称出质量为1和2的物体,则天平的量程为2.
但显然此时得到的量程不是最大值,因为如果一个砝码为1,另一个为2,则可以称出质量为1,2和3的物体,量程为3.
如果砝码一个为1,一个为3,则可以称出1(1砝码在左,物体在右),2(1砝码和物体在左,3砝码在右),3(3砝码在左,物体在右),4(1,3砝码在左,物体在右),此时的量程为4.
如果一个砝码为1,一个为4,虽然能称出质量为5的物体,但却称不出质量为2的物体,此时天平的量程仅为1(因为连续称重最大只能到1).
所以,在砝码数为2时,天平的最大量程为4.
现求一程序,输入砝码的数量n,求出在有n个砝码的情况下,天平所能获得的最大量程.不要求求出每个砝码的质量.但程序有严格的运行时间限制(<1s),n可能很大,但保证天平的最大量程不超过2147483647(MaxInt).
 
好像是个数学奥赛题,N个砝码要依次是3^0,3^1,3^2……
 
当然,最大量程就是1+3+9+27+……
 
罢了罢了,我参加竞赛时有一年就考到了这一题.
如果当时我不是用搜索用昏了头,能静下来总结一下.也许真的能改变命运.
呵呵,类似的还有NOI2000的青蛙过河的题目,AI你做过吗?
 
青蛙过河没做过
倒是你说的那题目应该是分区联赛的题目吧,我做过,和这道不一样的,只能用搜索,最多加记忆化,刘汝佳也是用搜索做的
 
你看看说的是不是这题?
99年分区提高组
第四题 邮票面值设计(40分)
给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+k<=40) 种邮票的情况
下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大max ,使得1-
max之间的每一个邮资值都能得到。
例如,N=3,K=2,如果面值分别为1分、4分,则在l分-6分之间的每一个邮资值
都能得到(当然还有8分、9分和12分):如果面值分别为1分、3分,则在1分-7分之间的
每一个邮资值都能得到。可以验证当N=3,K=2时,7分就是可以得到连续的邮资最大值
,所以MAX=7,面值分别为l分、3分。
样例:
INPUT
N=3 k=2
Output
1 3
max=7
 
我做的题目就是一楼的题目,不一定字字不差,但意思肯定没错.其实就是个等比数列求和.
青蛙的题目大概如下:
河左岸有几个青蛙,站在一起叠罗汉,大的在下面,小的在上面.河面上有一些荷叶和石墩,每个荷叶上只能蹲一只青蛙,每个石墩上可以有一列的青蛙,但必须也是小的墩在大的背上.每个背上没有小青蛙的青蛙可以任意跳到对岸,荷叶或者石墩上,但无论怎么跳,也不能出现在同一荷叶上有两只青蛙的情况,也不能出现大青蛙落在小青蛙背上的情况.就是在河岸上,青蛙们也必须保持叠罗汉的状态,不允许两个或以上的青蛙同时站在地上.
要编程序,输入河中荷叶和石墩的数量,计算最多可以让多少只青蛙从左岸跳到对岸.
这题更有迷惑性,许多选手上来就搜,结果可想而知.当时我跟江苏省队的一个教练在一起,他一看到题目就大叫不好:"这要是跳来跳去可不行!".呵呵,我对他也是景仰有佳的,他写的书我买了不少.
 
青蛙过河在金牌题解上有详细的解答,我看过,忘了,不过要我自己做,肯定做不出来
 
其实一楼的题目我也是凑巧在数奥书上看到过,才知道得
 
呵呵,归纳出来后小学高年级学生都会做.但人家可以一看到题目就想到算法,让人钦佩呀.
你再过一段时间就要比赛了,碰到题目千万多留个心眼,看看有没有数学规律.
 
感觉上青蛙过河是个变相的汉罗塔问题,可能是DP
 
AI:
你已经上当了.
 
呵呵,现在NOI的题目,要找数学规律可难啊,至少也要用到大学的数学知识了
刘汝佳出题,挺会整人的
 
我还是去把原题瞧瞧吧
 
也不一定都很难,哪一年的题目不记得了.是让你帮原始人编程序,设计怎么制造项链,才能使总长度最长.只要对函数求个导,最值立即就跳到你的面前了.
 
我ft,想复杂了,不过用DP肯定能解出来,不过效率差很多
 
是2000年的题目
 
我给大家提示一下:
c(n1)+c(n2)+......+c(n(n-1))----放单边
放两边:
n为奇数时c(n1)+c(n2)+......+c(n(n/2-1))
n为偶数时c(n1)+c(n2)+......+c(n(n/2))
量程=放单边+放两边
你们再不会我就没话好说了
 
to 魔鬼:
天平一题ai总结的已经到了家了,还是看看青蛙那题吧.
 
天平那題找出那個數列就OK了。
程序是不是下面這個呀
{$APPTYPE CONSOLE}
program maxdim;
uses
math;
var
maxdim,n,i:integer;
begin
write('Input n:');
readln(n);
maxdim:=0;
for i:=1 to ndo
maxdim := 3*maxdim+1;
write(maxdim);
readln;
end.
青蛙那題在思考中
 
顶部