hdu2241(二分+合并数组)
来源:互联网 发布:索尼kdl55r580c装软件 编辑:程序博客网 时间:2024/06/11 23:50
题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C
如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了
代码如下(附注释):
#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<time.h>#include<math.h>#define inf 0x7fffffff#define eps 1e-9#define N 505#define pi acos(-1.0)#define P system("pause")using namespace std;int a[N],b[N],c[N],d[N*N];int main(){//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout); int l,m,n,z = 1; int i,j,k; while(scanf("%d%d%d",&l,&m,&n) != EOF) { for(i = 0;i < l; i++) scanf("%d",&a[i]); for(i = 0; i < m; i++) scanf("%d",&b[i]); for(i = 0; i < n; i++) scanf("%d",&c[i]); k = 0; for(i = 0; i < m; i++)//将b,c两个数组和并在d数组内 for(j = 0; j < n; j++) d[k++] = b[i] + c[j]; sort(d,d+k); j = 1; for(i = 1; i < k; i++)//对d数组就行优化,去掉相同的数据 if(d[i] != d[i-1]) d[j++] = d[i]; // for(i = 0; i < j; i++) // cout<<d[i]<<" ";c int t, flag; scanf("%d",&t); printf("Case %d:\n",z++); while(t--) { flag = 0; scanf("%d",&k); for(i = 0; i < l; i++) { int left = 0,right = j-1; int k1 = k - a[i]; // cout<<k<<endl; while(left <= right)//二分查找 { int mid = (left + right)/2; if(d[mid] == k1) { printf("YES\n"); i = l; flag = 1; break; } if(d[mid] < k1) left = mid + 1; if(d[mid] > k1) right = mid - 1; } } if(!flag) printf("NO\n"); } } // P; return 0; }
0 0
- hdu2241(二分+合并数组)
- hdu 2141(二分查找,合并数组)
- 二分查找、数组合并
- hdu 2141 Can you find it? 二分查找 + 数组合并
- 合并有序数组(算法)
- 合并排序数组(LintCode)
- 合并两个数组,新数组第k小的元素---二分--九度OJ1534
- 合并数组
- 合并数组
- 数组合并
- 数组合并
- 合并数组:
- 数组合并
- 合并数组
- 数组合并
- 数组合并
- 数组合并
- 合并数组
- 黑马程序员------毕老师视频笔记第七天------面向对象(继承)
- 手机那些事
- 解决android.os.NetworkOnMainThreadException异常问题
- Android SD卡操作
- LayoutInflate
- hdu2241(二分+合并数组)
- 去掉Win7快捷方式小箭头
- 如何使用适配器的 与ListView、Spinner、GirdView 等组件进行数据绑定
- 2014Astar Problem - 1004 Labyrinth
- [BASIC-7] 特殊的数字
- OC学习笔记之Foundation框架NSString与NSMutableString
- 4.3 if 语句
- hdu 3068 Manacher算法 O(n)回文子串算法
- 海驾科目三训练及考试: