HDU-2141 can you find it?
2013-05-03 16:11
417 查看
二分检索
#include <iostream> #include <algorithm> #define M 505 int A[M],B[M],C[M]; int Sub[M*M]; int l,m,n; int s,x; int idx; int idx_c; bool b_search(int num) { int st,md,ed; st=0; ed=l*m-1; while (ed>=st){ md=(st+ed)/2; if(Sub[md]<num){ st=md+1; continue; }else if(Sub[md]>num){ ed=md-1; continue; } return true; } return false; } int main() { while (std::cin>>l>>m>>n){ for(int i=0;i!=l;i++){ std::cin>>A[i]; } for(int i=0;i!=m;i++){ std::cin>>B[i]; } for(int i=0;i!=n;i++){ std::cin>>C[i]; } idx=0; for(int i=0;i!=l;i++){ for(int j=0;j!=m;j++){ Sub[idx++]=A[i]+B[j]; } } std::sort(Sub,Sub+m*l); std::cin>>s; std::cout<<"Case "<<++idx_c<<":"<<std::endl; for(int i=0;i!=s;i++){ std::cin>>x; int j; for( j=0;j!=n;j++){ if(b_search(x-C[j])){ std::cout<<"YES"<<std::endl; break; } } if(j==n){ std::cout<<"NO"<<std::endl; } } memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); memset(C,0,sizeof(C)); memset(Sub,0,sizeof(Sub)); } }
相关文章推荐
- hdu-2141 can you find it(二分查找)
- HDU_2141_CanYouFindIt
- hdu 2141 Can you find it?
- HDU - 2141 Can you find it?
- hdu 2141 Can you find it(二分)
- 杭电 HDU 2141 Can you find it
- Can you find it? hdu 2141
- Can you find it?(hdu 2141 二分查找)
- HDU 5478 Can you find it
- HDU 5478 Can you find it(快速幂)——2015 ACM/ICPC Asia Regional Shanghai Online
- HDU 5478 Can you find it
- hdu 5478 Can you find it(数论)
- HDU 5478 Can you find it
- Hdu Can you find it?(二分答案)
- [随机化] HDU 5478 Can you find it
- hdu-5478 Can you find it(快速幂)
- HDU5478——Can you find it(快速幂)
- HDU 5478 Can you find it(数学问题)
- HDU 5478 Can you find it
- HDU Can you find it?