1. 程式人生 > 實用技巧 >Wannafly Winter Camp Day7 K 修煉

Wannafly Winter Camp Day7 K 修煉

題意:

ps:感覺這個翻譯有問題,不是每天獲得一個額外能力點,

  而是第一天獲得1,第二天獲得2,第三天獲得3.....這樣的可以任意分配的能力點

思路:對於這道題,我們直接暴力二分每一組資料即可

程式碼如下:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int inf=0x3f3f3f3f3f3f;
 5 ll a,b;
 6 int check(ll mid,ll tmp1,ll tmp2)
 7 {
 8     ll val1=mid*a;
 9
ll val2=mid*b; 10 ll sum=mid*(mid+1)/2; 11 tmp1-=val1; if(tmp1<=0) tmp1=0; 12 tmp2-=val2; if(tmp2<=0) tmp2=0; 13 if(tmp1+tmp2>sum){ 14 return 0; 15 } 16 else return 1; 17 } 18 int main() 19 { 20 scanf("%lld%lld",&a,&b); 21 ll n; 22 scanf("%lld
",&n); 23 ll ans=inf; 24 for(ll i=1;i<=n;i++){ 25 ll tmp1,tmp2; 26 scanf("%lld%lld",&tmp1,&tmp2); 27 ll tmpans; 28 ll L=0,R=inf; 29 while(L<=R){ 30 ll mid=L+R>>1; 31 if(check(mid,tmp1,tmp2)){ 32 tmpans=mid;
33 R=mid-1; 34 } 35 else L=mid+1; 36 } 37 ans=min(ans,tmpans); 38 } 39 printf("%lld\n",ans); 40 return 0; 41 }