farmer john 欠了 bessie n 加侖牛奶(1<=n<=1e12)。他必須在 k 天內將牛奶給 bessie。但是,他不想將牛奶太早拿出手。另一方面,他不得不在還債上有所進展,所以他必須每天給 bessie 至少 m 加侖牛奶(1≤m≤1e12)。
以下是 farmer john 決定償還 bessie 的方式。
首先他選擇乙個正整數 x。
然後他每天都重複以下過程:
1.假設 farmer john 已經給了 bessie g 加侖,計算 (n-g)/x(向下取整)。令這個數為 y。
2.如果 y 小於 m,令 y 等於 m。
3.給 bessie y 加侖牛奶。
求x 的最大值,使得 farmer john 按照上述過程能夠在 k 天後給 bessie 至少 n 加侖牛奶 (1≤k≤1e12)。
輸入格式
輸入僅有一行,包含三個空格分隔的正整數 n,k,m,滿足 k×m範圍那麼大,乙個個找過去肯定超時只能二分x去判斷是否符合條件
關於是否符合條件的判定
直接暴力模擬肯定會超時的啦,我們可以手動來算一下,如果我們還的數量小於m, (n-g)/x 小於m, 那明天這個值只會更小,所以就變成了每天都還m瓶,否則就計算一下會有連續多少天的每日還債量是y,假設這種情況持續a天,那麼可以知道在a−1天之後的還債量=y,而a天之後的還債量#include
#include
#include
#include
#include
#include
using
namespace std;
long
long
int n, k, m;
//欠n k天還完 每天至少還m 決定每天還max((n-g)/x, m)瓶 g為已還 求x的最大值
long
long
int ans;
bool
judge
(long
long
int x)
//否則就是y>=m 的情況
long
long
int day =
min(tk,
(n-x*y-g)
/y+1);
tk -
= day;
g += day * y;
}return g>=n;
}int
main()
else r = mid -1;
} cout << ans << endl;
return0;
}
排位賽三E Word Processor
牛貝西正在為她的寫作課寫一篇 由於她的筆跡很差,她決定使用文字處理器鍵入 文章包含n個單詞,以空格分隔。每個單詞的長度在1到15個字元之間 含1和15個字元 並且僅由大寫或小寫字母組成。根據作業說明,必須採用非常特定的格式 每行最多只能包含k個字元,且不能計算空格。幸運的是,bessie的文字處理器...
排位賽題解
十進位制轉二進位制,右移 與 運算結合,遍歷每個數字在二進位制下點每一位。include intmain for int i 0 i 4 i for int i 0 i 4 i a i 1 右移除2 printf d d d d n num 0 num 1 num 2 num 3 return0 題...
排位賽一 E Milk Visits
farmer john 計畫建造 n 個農場,用 n 1 條道路連線,構成一棵樹 也就是說,所有農場之間都互相可以到達,並且沒有環 每個農場有一頭奶牛,品種為更賽牛或荷斯坦牛之一。farmer john 的 m 個朋友經常前來拜訪他。在朋友 i 拜訪之時,farmer john 會與他的朋友沿著從農...