題意:給出資料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之間 如果小...