傳送門:
m個電梯,n次按鈕,m對數字,第乙個數字是上多少層,第二個是下。求出選擇乙個電梯n次按鈕最低的樓層,注意這個樓層是大於0的!題目中也說了lowest above the ground floor!
設x次上公升,測下降n-x,則上公升了k層 = a*x - b*(n-x)。
這裡兩種做法:
1:第一種採用數學公式上的理解,單純就是從公式思想上來看的,上面公式變形得x為自變數的公式:k = (u+d)x - dn
這裡其他已知,x未知,範圍是0到n,0不可取,n可取。
從公式上看,每次都是增加或者減少乙個u+d,然後在k>0的情況取最小值,我們這裡直接這樣,x取最大值,等於n,此時k = un,然後每次減少乙個u+d,則除以u+d得的是多少個u+d,直接去u+d取模,就得到在u+d線性變化下能得到的最小的k了,注意能整除時,則最後乙個u+d就是最小值了。
**:
#include #include2.第二種就是#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int maxn = 100000000
;int
main()
printf(
"%i64d\n
", res);
return0;
}
另上式等於0,我們可以得到當 x'= b*n/(a+b) 時為第0層
由於 x 必須為正整數,我們對 x' 向上取整,就得到可以到達的最低樓層
但是現在有乙個漏洞,如果 x' 就是乙個正整數,那麼我們向上取整後還是x'本身
遇到這種情況此時的x'=x'+1,也就是說我們就多上一層少下一層,就能避開到達0層了
(其實可以直接int(x+1)就直接解決上面的問題了)
#include usingview codenamespace
std;
intmain()
cout
}return0;
}
Problem 奶牛坐電梯
問題描述 有n頭牛在樓頂,需要坐電梯下來,電梯最大承載量為w,牛 i 的重量為c i 怎樣安排,才能電梯上下的次數最少,而使所有的牛下來。輸入第一行給出奶牛頭數n,及電梯的容量w.接下來n行給出每個奶牛的重量 1 n 18 1 w 100,000,000 1 ci w 輸出電梯上下的次數r 樣例輸入...
Problem 奶牛坐電梯
problem 奶牛坐電梯 description 有n頭牛在樓頂,需要坐電梯下來,電梯最大承載量為w,牛 i 的重量為c i 怎樣安排,才能電梯上下的次數最少,而使所有的牛下來。input 第一行給出奶牛頭數n,及電梯的容量w.接下來n行給出每個奶牛的重量 1 n 18 1 w 100,000,0...
乘坐電梯的問題
題目內容 說明 1 假設最開始電梯在0層,n個人從第0層進電梯,中間不再增添新乘客 2 n個人都到達各自的樓層後,電梯需要回到0層 3 到同一樓層的人不管有幾人,電梯開門的時間總共只需要5秒.輸入格式 輸入資料首先包含乙個整數n 0 n 10 表示電梯內的人數 然後是n個人要到的樓層si 1 si ...