latex自然是廣大研究人員最喜歡使用的科研**排版工具之一。
月神想在iphone 上查閱寫好的*****,但是無賴iphone 上沒有月神喜歡使用的閱讀軟體,於是月神也希望像tex老爺爺donald knuth那樣自己動手do it yourself乙個。
在diy這個閱讀軟體的過程中,月神碰到乙個問題,已知iphone螢幕的高為h,寬為w,若字型大小為s(假設為方形),則一行可放w / s(取整數部分)個文字,一屏最多可放h / s (取整數部分)行文字。
已知一篇*****有n個段落,每個段落的文字數目由a1, a2, a3,...., an表示,月神希望排版的頁數不多於p頁(一屏顯示一頁),那麼月神最多可使用多大的字型呢?
1 <= w, h, ai <= 1000
1 <= p <= 1000000
輸入描述:
每個測試用例的輸入包含兩行。第一行輸入n,p,h,w
第二行輸入n個數a1,a2,a3,...,an表示每個段落的文字個數。輸出描述:
對於每個測試用例,輸出最大允許的字元大小s示例1
1 10 4 3102 10 4 3
10 10
3備註:2
以上所有輸入、輸出均為整數。這道題目一看就是典型的二分演算法。且所有測試用例均保證有解。
兩個段落之前不空行,並且段落頂格寫。
這題理解題意有一定難度,這裡不用考慮段落前什麼的。段落後的空行對應乙個向上取整。這裡計算的時候先計算所需要的行數,最後再計算所需要的頁數。
這裡要特別注意向上取整和向下取整的問題,可以使用ceil函式
同時,二分寫的時候,最後可以比較left,和right,看看輸出left還是輸出right
#include #include using namespace std;
const int n = 10000;
int arr[n];
int n, p, h, w;
bool check(int mid)
page = ceil(1.0*line / floor(1.0*(h / mid))); // 總行數除以每一頁的行數向上取整
//cout << line << endl;
//printf("%d\n", page);
return page <= p;
}int main()
int left = 0, right = min(w,h);
while (left <= right)
else
} printf("%d\n", right);
}}
9 10快手筆試
由於太過興奮,晚上月神做了乙個奇怪的夢,月神夢見自己掉進了乙個被施法的深淵,月神想要爬出此深淵。已知深淵由n級台階構成 1 n 1000 並且每次月神僅可往上爬2的整數次冪個台階 1,2,4,由你程式設計告訴月神,月神有多少種方法爬出深淵 輸入描述 輸入m行,1第一行輸入乙個數表述有多少組測試用例 ...
2018 9 快手筆試程式設計題
題目描述 給你二叉樹的先序和中序遍歷的值,求出中序遍歷的求和樹。每個節點的和等於其左右孩子節點的value的和。思路 先建樹,直接遞迴求和輸出就好了。我簡化了輸入,原題的輸入是字串輸入,當時一直段錯誤,卡了快乙個小時,這個 能過樣例,不知道能不能過全部的資料。include include incl...
2023年快手筆試 今年第幾天(python版)
方法一 1 思路 使用python自帶的模組datetime進行計算 2 coding utf 8 import datetime dtime list map int,input split doy datetime.datetime dtime 0 dtime 1 dtime 2 print t...