牛客小白月賽26 A牛牛愛學習(二分 貪心

2021-10-07 11:54:35 字數 1181 閱讀 5349

題目描述

疫情期間,牛牛宅在家裡無事可做,於是就在網上買了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 牛牛喜歡字串。考慮分割好...