日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2017上海金马五校 购买装备 贪心+二分Check

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017上海金马五校 购买装备 贪心+二分Check 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

購買裝備

發布時間: 2017年7月9日 18:17?? 最后更新: 2017年7月9日 21:05?? 時間限制: 1000ms?? 內存限制: 128M

描述

最近盛大的一款游戲傳奇世界極其火爆。游戲玩家John,想購買游戲中的裝備。已知游戲的商店里有n件裝備,第i件裝備具有屬性值ai,購買需要花費bi個金幣。John想去購買這些裝備,但是賬號中只有m個金幣,John是個很貪婪的家伙,他想購買盡可能多的裝備。并且在保證購買到最多件裝備的情況下,他還想讓他所購買的裝備當中擁有最小屬性值的裝備屬性值盡可能大

輸入

輸入測試組數T,每組數據第一行輸入整數n(1<=n<=100000)和m(1<=m<=109), 接下來有n行,第i行有兩個數ai,?bi(1<=ai,bi<=10000).

輸出

對于每組數據,輸出兩個數字,第一個數字代表John最多可以購買的裝備數,第二個數代表在John購買最多件裝備的前提下,所購買的裝備當中擁有最小屬性值的裝備的最大屬性值(輸入數據保證至少可以購買一件裝備)

樣例輸入1 1 2 4 3 2 2 3 樣例輸出1 1 3


題解:

注意最后加粗的一句話“最小屬性值的裝備的屬性值盡可能大”,最大化最小值問題,非常典型的二分Check問題。

這個問題,我們要輸出最多能購買的裝備的數量,然后再這個基礎上再最大化最小值

對于求最多能購買的裝備的數量問題,毫無疑問是一個非常簡單的貪心問題。

我們先預處理按照價值排個序,然后貪心選取價值最小的裝備,得到最多的裝備數量記為max_num

然后,我們對屬性值進行二分Check,Check函數描述如下(原數組已按照價值作為關鍵字排序):

對于裝備數組,從前往后掃描,對于所有滿足條件(價值小于等于剩余錢數 ? 且 ? 屬性值大于等于被check值)的裝備進行選取

判斷所選取的裝備數能否達到max_num


AC代碼:

#include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef pair<int,int> pii; pii ps[100007]; int n,m; bool check(int mid,int min_num){int res = 0;int remain = m;for(int i = 0;i < n;i++){if(remain >= ps[i].first && ps[i].second >= mid){remain -= ps[i].first;res++;}}return res >= min_num; } int main(){int T;scanf("%d",&T);while(T--){int INF = 0;int max_num = 0;scanf("%d%d",&n,&m);for(int i = 0;i < n;i++){int a,b;scanf("%d%d",&a,&b);ps[i] = make_pair(b,a);INF = max(INF,b);}sort(ps,ps+n);int remain = m;for(int i = 0;i < n;i++){remain -= ps[i].first;if(remain < 0){max_num = i;break;}}if(!max_num) min_num = n;int l = 0,r = INF + 1;while(r - l > 1){int mid = (l + r) / 2;if(check(mid,min_num)) l = mid;else r = mid;}printf("%d %d\n",max_num,l);}return 0; } /* 1 2 4 3 2 2 31 4 4 2 1 2 2 2 3 2 4 */



總結

以上是生活随笔為你收集整理的2017上海金马五校 购买装备 贪心+二分Check的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。