感覺自己一直木有掌握二分的思想,看完這道題後,題意很簡單,想直接暴力列舉,但是寫到一半,就放棄了,因為看到了資料 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之間 如果小...