Can you find it?
2013-02-26 21:06
411 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2141
View Code
输入有三个集合,要先合并两个为一,然后再对这个
合并出来的集合进行二分
View Code
#include<iostream> #include<cstdlib> using namespace std ; #define maxn 505 int a[maxn], b[maxn], c[maxn] ; int ab[maxn*maxn] ; int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b ; } int find(int n, int len) { int min, max, mid ; min = 0 ; max = len -1 ; while(min<=max) { mid = (min+max)/2 ; if(ab[mid]==n) return 1 ; if(ab[mid]<n) min = mid + 1 ; if(ab[mid] >n) max = mid - 1 ; } return 0 ; } int main() { int i, j, k , x, s ; int l, n, m ; int times = 1 ; while(cin>>l>>n>>m) { int num = 0 ; for(i=0; i<l; i++) cin>>a[i] ; for(j=0; j<n; j++) cin>>b[j] ; for(k=0; k<m; k++) cin>>c[k] ; for(i=0; i<l; i++) for(j=0; j<n; j++) { ab[num++] = a[i] + b[j] ; } qsort(ab, num, sizeof(ab[0]), cmp) ; cout<<"Case "<<times++<<":"<<endl ; cin>>s ; while(s--) { cin>>x ; int flag = 1 ; for(k=0; k<m; k++) { if(find(x-c[k],num)==1) { flag = 0 ; break ; } } if(flag==0) cout<<"YES"<<endl ; else cout<<"NO"<<endl ; } } return 0 ; }
输入有三个集合,要先合并两个为一,然后再对这个
合并出来的集合进行二分
相关文章推荐
- HDU 5478 Can you find it
- HDU-2141 can you find it?
- HDU 5478 Can you find it
- CSU-ACM2017暑假集训2-二分搜索 hdu2141- Can you find it?
- hdu 2141 Can you find it?
- hdu Can you find it?之折半查找
- 杭电 HDU 2141 Can you find it
- hdu5478 Can you find it(数学规律)
- ACM学习历程—HDU5478 Can you find it(数论)(2015上海网赛11题)
- can you find it?
- HDU Can you find it?
- hdu5478 Can you find it
- HDU 5478 Can you find it
- HDU 5478 Can you find it(数学归纳法 + 快速幂)——2015 ACM/ICPC Asia Regional Shanghai Online
- HDU - 2141 Can you find it?
- For those who are interested nVidia have made GPU Gems 1 available on their website. You can find it here
- Can you find it?(hdu 2141 二分查找)
- Can you find it?
- hdoj 5478 Can you find it
- hdu 5478 Can you find it(数论)