cf807 c 二分好题
生活随笔
收集整理的這篇文章主要介紹了
cf807 c 二分好题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
能夠二分判定的前提是能找到一個單調關系,有時候需要將不是單調關系的數據轉換成另外的具有單調關系的數據
#include<bits/stdc++.h> using namespace std; #define ll long long ll t,x,y,p,q; int judge(ll m){ll a=m*p-x,b=m*q-y;if(a>=0 && b>=0 && a<=b)return 1;return 0; } int main(){cin >> t;while(t--){cin >> x >> y>> p>>q;ll l=0,r=1000000000,mid,ans=-1;if(x==y && p==q){puts("0");continue;}if(p==q && x!=y){puts("-1");continue;}while(l<=r){mid=l+r>>1;if(judge(mid))ans=mid,r=mid-1;else l=mid+1;}if(ans==-1) cout << -1 << endl;else printf("%lld\n",ans*q-y);} }?
轉載于:https://www.cnblogs.com/zsben991126/p/10243427.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的cf807 c 二分好题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序获取StorageSync时候的坑
- 下一篇: Rmdir方法