Magic Powder

来源:互联网 发布:php单例模式 编辑:程序博客网 时间:2024/06/06 00:10

http://codeforces.com/problemset/problem/670/D2


不知道,自己为什么又没有想到二分,遇到这种情况,自己就总是想着去暴力,然后就是dp,二分一直就没有在自己的脑子里面留下很深的印象。

二分二分二分!!!


#include<cstdio>#include<cstring>using namespace std;typedef long long ll;const int maxn=100010;ll one[maxn],hav[maxn];ll n,k;int solve(ll num){ll sum_k=k;int i;for(i=1;i<=n;i++){   if(hav[i]<num*one[i]&&sum_k>=num*one[i]-hav[i]){     sum_k=sum_k-(num*one[i]-hav[i]);   }   else if(hav[i]<num*one[i]&&sum_k<num*one[i]-hav[i]){    return 0;   }}if(i==n+1)  return 1;}int main(){scanf("%lld %lld",&n,&k);for(int i=1;i<=n;i++)   scanf("%lld",&one[i]);    int m;for(int i=1;i<=n;i++)scanf("%lld",&hav[i]);ll l=0,r=2e9+1000,mid;ll ans=0;while(l<=r){mid=(l+r)/2;    if(solve(mid)){   ans=mid;l=mid+1;     }    else        r=mid-1;}printf("%d\n",ans);return 0;}


原创粉丝点击