BNU 49103 贪心【二分+贪心】
来源:互联网 发布:九黎影视源码 编辑:程序博客网 时间:2024/06/05 19:29
贪心
Time Limit: 1000ms
Memory Limit: 65536KB
64-bit integer IO format: %lld Java class name: MainPrev
Submit Status Statistics Discuss
Next小明喜欢养小鸡,小鸡喜欢吃小米。小明很贪心,希望养s只不同种类的小鸡,小鸡也很贪心,每天除了吃固定的ai粒小米外,还想多吃bi*s粒小米。
小明每天有M(0<=M<=10^9)粒小米可以喂小鸡,小鸡共有N(0<=N<=1000)种。问小明最多可以养多少只小鸡?
Input
多组数据,请读到文件尾
第一行,整数N,M,以空格分隔,之后两行,第一行为N个整数ai,第二行为N个整数bi。
ai、bi都在int范围内
Output
一行一个整数,s。
Sample Input
2 414 09 4
Sample Output
2
Source
第十三届北京师范大学程序设计竞赛决赛
Author
dlj
思路:
1、考虑到随着选择鸡的个数增加,而会升高花费,那么我们肯定直接贪心或者是Dp之类的解法肯定是不行的。
2、既然随着选择鸡的个数的增加,会升高花费,那么我们部分囊二分选择鸡的个数。
选的鸡越多,越不能养的起。
所以我们二分选择鸡的个数,然后按照花费贪心一下判定即可。
Ac代码:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define ll long long intstruct node{ ll x,y,ss;}a[150000];ll n,m;ll cmp(node a,node b){ return a.ss<b.ss;}int Slove(ll mid){ ll sum=0; for(ll j=1;j<=n;j++)a[j].ss=mid*a[j].y+a[j].x; sort(a+1,a+1+n,cmp); for(ll j=1;j<=mid;j++) { sum+=a[j].ss; } if(sum<=m)return 1; else return 0;}int main(){ while(~scanf("%lld%lld",&n,&m)) { ll output=0; for(ll i=1;i<=n;i++)scanf("%lld",&a[i].x); for(ll i=1;i<=n;i++)scanf("%lld",&a[i].y); ll l=0; ll r=n; while(r-l>=0) { ll mid=(l+r)/2; if(Slove(mid)==1) { output=mid; l=mid+1; } else r=mid-1; } printf("%lld\n",output); }}
0 0
- BNU 49103 贪心【二分+贪心】
- BNU-Binary Matrix- 贪心
- BNU单向行走 (贪心)
- 二分+贪心
- 贪心 + 二分
- 贪心二分
- 贪心+二分
- 贪心(bnuoj49103+二分+贪心)
- hdu pie(二分+贪心)
- POJ3497 Assemble 二分+贪心
- mysterious 二分加贪心
- HDU 3650 贪心+二分
- 11627 - Slalom (二分+贪心)
- 二分+贪心+LA3177
- hdu4004(二分+贪心)
- hdu1677(贪心+二分)
- poj2456(贪心+二分)
- poj1064(贪心+浮点二分)
- CentOS下yum安装五笔输入法
- JavaScript隐式转换
- Cookie 和 Session
- mybatis别名等
- POJ 2299 Ultra-QuickSort(树状数组)
- BNU 49103 贪心【二分+贪心】
- onGeolocationPermissionsShowPrompt webview使用内置浏览器定位的权限
- 【响应式web设计(二)】视口(viewport)
- AngularJs在ng-click函数中如何获取代表当前元素的DOM对象
- LeetCode 12. Integer to Roman
- 浅谈canvas的matrix变换
- HDOJ 3339 In Action(最短路+01背包)
- Centos7安装mysql(mariadb)
- iOS开发tips-神奇的UITableView