高校聯盟 計蒜客 超市購物(二分 貪心)

2021-08-20 00:07:04 字數 1489 閱讀 6248

超市有n種不同的商品(從1開始編號),第i種商品有乙個基本花費b_ibi

​。小白要來買東西,如果小白買了k件商品,編號分別為x_1x1

​、x_2x2

​、..、x_kxk

​,那麼物品x_jxj

​的花費為b_bx

j​​+x_j*kxj

​∗k (1<=j<=k)。也就是說,物品的花費等於它的基本花費加上它的編號乘上k。

小白想要在花費不超過sp的情況下買盡量多的物品。注意,一種物品最多買一件。

輸入第一行兩個整數,n和sp(1<=n<=10^510

5,1<=sp<=10^910

9),含義如上。

第二行n個整數b_1b1

​、b_2b2

​,,,b_nbn

​ (1<=b_ibi

​<=10^510

5).輸出 將小白最多買的物品數k和買k件物品的最少花費輸出到一行

樣例輸入

3 11

2 3 5

樣例輸出

2 11

#include#include#includeusing namespace std;

#define ll long long

ll n,sp,sum;

const int maxn=1e5+5;

ll b[maxn],c[maxn];

bool solve(ll k)

sort(c+1,c+n+1);

for(ll i=1;i<=k;i++)

return true;

}int main()

else

}printf("%lld %lld\n",k,ans);

return 0;}/*

3 11

2 3 5

*/

超市有n種不同的商品(從1開始編號),第i種商品有乙個基本花費b_ibi

​。小白要來買東西,如果小白買了k件商品,編號分別為x_1x1

​、x_2x2

​、..、x_kxk

​,那麼物品x_jxj

​的花費為b_bx

j​​+x_j*kxj

​∗k (1<=j<=k)。也就是說,物品的花費等於它的基本花費加上它的編號乘上k。

小白想要在花費不超過sp的情況下買盡量多的物品。注意,一種物品最多買一件。

輸入第一行兩個整數,n和sp(1<=n<=10^510

5,1<=sp<=10^910

9),含義如上。

第二行n個整數b_1b1

​、b_2b2

​,,,b_nbn

​ (1<=b_ibi

​<=10^510

5).輸出 將小白最多買的物品數k和買k件物品的最少花費輸出到一行

樣例輸入

3 11

2 3 5

樣例輸出

2 11

計蒜客 1562 二分查詢

蒜頭君手上有個長度為 nn 的陣列 aa。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 aa 中,比 xx 大的最小值是多大?但是這次蒜頭君要求這個數字必須大於 xx,不能等於 xx。輸入格式 第一行輸入兩個整數 nn 和 mm,分別表示陣列的長度和查詢的次數...

計蒜客 尋找插入位置 (二分查詢)

給定乙個已經公升序排好序的陣列,以及乙個數 target,如果 target在陣列中,返回它在陣列中的位置。否則,返回 target插入陣列後它應該在的位置。假設陣列中沒有重複的數。以下是簡單的示例 1,3,5,6 5 2 1,3,5,6 2 1 1,3,5,6 7 4 1,3,5,6 0 0 輸入...

D 二分查詢(二) 計蒜客 T1561

題目描述 蒜頭君手上有個長度為 n 的陣列 a。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 a 中,大於等於 x 的最小值是多大?輸入格式 第一行輸入兩個整數 n 和 m,分別表示陣列的長度和查詢的次數。接下來一行有 n 個整數 ai 接下來 m 行,每行有...