hdu 2141 二分查詢

2021-06-22 20:44:58 字數 598 閱讀 7600

感覺自己一直木有掌握二分的思想,看完這道題後,題意很簡單,想直接暴力列舉,但是寫到一半,就放棄了,因為看到了資料  500 *  500 * 500,再加上多組詢問

很可能就掛了,其實知道可以二分做,但就是不知道咋弄....自己還太菜了~~~~果斷參考別人的解題報告,自己敲了兩邊,第一遍超時,第二遍過了

a+b+c=x; 也就是  判斷 a+b=x-c

先兩層迴圈把所有的a+b算出來,然後再判斷x-c 是不是在這個裡面,二分時間複雜度好像是o(log n)吧~~~

附上**:

#include

#include

#define n 510

typedef long long ll;

using namespace std;

ll a[n],b[n],c[n];

ll sum[n*n];

ll num;

int find(ll x)

return 0;

}int main()

}if(flag)printf("yes\n");

else printf("no\n");}}

return 0;   

}

HDU2141(二分查詢)

題意 給出資料x,然後從a,b,c三個陣列中找到滿足關係a i b j c k x的等式即可輸出yes,否則輸出no。首先將a,b陣列相加,然後合併的陣列和c陣列採用二分查詢t x c k 的值是存在a,b合併的陣列中 要對合併的陣列進行排序 hdu2141 include include incl...

hdu 2141 二分搜尋

在排序後的序列中搜尋某個確定的值 題目大意 在序列a,b,c中分別找乙個值,滿足a i b j c k x 先將a,b合併為ab,然後用二分搜尋在陣列ab中查詢x c k include include include include define max 505 using namespace s...

二分查詢 HDU2178

二分查詢也叫折半查詢,基本思路就像猜數字遊戲 比如你要猜乙個1000以內的正整數,每次只需別人告訴你你說的數比目標數字大還是小。猜的方法就是 二分 首先你可以猜500,除了運氣特別好正好可以猜中之外,不管別人說 大了 還是 小了 你可以把可行範圍縮小一半 如果 大了 那麼答案在1 499之間 如果小...