HDU2141(二分查詢)

2021-10-19 18:11:23 字數 969 閱讀 5287

題意:給出資料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

#include

#include

using

namespace std;

const

int maxx=

1e3+10;

const

int maxx1=

2e5+

50000

;int a[maxx]

,b[maxx]

,c[maxx]

;int f[maxx1]

;int l,n,m;

int k;

intmidfind

(int x)

else

if(f[mid]

>x)

else

}return0;

}int

main()

for(

int i=

1;i<=n;i++

) k=1;

for(

int i=

1;i<=l;i++)}

sort

(f+1

,f+k+1)

;for

(int i=

1;i<=m;i++

)int x;

int t;

cin>>t;

cout<<

"case "

<<<

":"

(t--)}

if(flag2==1)

else}}

return0;

}

hdu 2141 二分查詢

感覺自己一直木有掌握二分的思想,看完這道題後,題意很簡單,想直接暴力列舉,但是寫到一半,就放棄了,因為看到了資料 500 500 500,再加上多組詢問 很可能就掛了,其實知道可以二分做,但就是不知道咋弄.自己還太菜了 果斷參考別人的解題報告,自己敲了兩邊,第一遍超時,第二遍過了 a b c x 也...

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之間 如果小...