題目描述
疫情期間,牛牛宅在家裡無事可做,於是就在網上買了n本書,每本書都有乙個知識值為ai。每讀一本書,牛牛的知識力就會上公升ai點。當然了,因為牛牛的精力也是有限的,如果同一天連續讀k本書,獲得的知識力只能增加ai-k+1點。比如第一天看了知識值為5的書,那麼牛牛會獲得5點知識力,如果這一天在繼續看另一本知識值為5的書,只能獲得4點知識力,如果看了前面兩本書後在繼續看一本知識值為2的書,就只能獲得0點知識力。牛牛想知道如果他要獲得m點知識力,最少需要看幾天。
注意:看書不需要按順序,一本書只能看一次,書可以不看完,只要看就會增加知識力,當書增加的知識力為負時候可以選擇不看,可以認為看完一本書是一瞬間的事情,看完後書就會消失。
輸入描述:
第一行輸入乙個n(1≤n≤106)和m(1≤m≤109),第二行輸入每本書的知識值ai(0≤ai≤109)。
輸出描述:
輸出最少要多少天才能獲得大於等於m點的知識力,如果無法獲得,請輸出-1。
示例1輸入
複製4 10
4 4 4 4
輸出複製1說明
第一天看完四本書知識力增加 4+3+2+1=10
示例2輸入
複製3 20
8 6 6
輸出複製
3思路:盡可能先讀知識力高的,對讀書的天數進行二分
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define int long long
int cnt[
1000005];
int n, m;
bool
cmp(
int a,
int b)
bool
check
(int t)
if(sum >= m)
return
true
;else
return
false;}
signed
main()
else l = mid+1;
} cout << ans << endl;
return0;
}
牛客小白月賽26 A 牛牛愛學習
題意 疫情期間,牛牛宅在家裡無事可做,於是就在網上買了n本書,每本書都有乙個知識值為ai。每讀一本書,牛牛的知識力就會上公升ai點。當然了,因為牛牛的精力也是有限的,如果同一天連續讀k本書,獲得的知識力只能增加ai k 1點。比如第一天看了知識值為5的書,那麼牛牛會獲得5點知識力,如果這一天在繼續看...
牛客小白月賽26
牛客小白月賽26 題意 給整數n,表示有乙個n個點的完全圖 一次操作可以從圖中刪掉一條邊,問最少刪掉多少條邊可以使得圖中不存在奇環 資料範圍 n 1e5 解法 正難則反,將問題轉化為最多保留多少條邊,滿足圖中不存在奇環,用總邊數減去保留的邊數就是答案 考慮二分圖,因為二分圖中無奇環,令左半部和右半部...
牛客小白月賽26
比賽評價 作為乙個菜雞,只能搞搞小白賽了。其實題目還不錯,複習了一下基礎套路。由於 都能看到,所以之說解題思路。就不放 了。1 牛牛愛數學 這個很簡單,配方一下就是 ab bc 2 0.看看bc是不是整除a就行了。2 牛牛愛幾何。算一下四個半圓和正方形的面積差,就是答案。3 牛牛喜歡字串。考慮分割好...