HDU 2141 二分
来源:互联网 发布:商务印书馆 知乎 编辑:程序博客网 时间:2024/05/16 13:43
下午练习一下二分吧,感觉写得很挫....
用A和B两个数组的和作为一个附加数组,求Ai+Bj+Ck=X只需要去搜索A+B的和为X-Ck即可....
#include<iostream>#include<string.h>#include<cstdio>#include<algorithm>using namespace std;int sum[255555];bool cmp( int a,int b ){ return a<b; }int X,Y,Z,T;int N=1;int A[555],B[555],C[555];int len;bool BinarySeach( int k ){ int l=0,r=len-1,m; while( l<=r ) { m=(l+r)/2; if( sum[m]==k ) return true;else{ if( sum[m]>=k ) r=m-1; else l=m+1; } } return false;}int main(){ while( scanf("%d%d%d",&X,&Y,&Z)!=EOF ) { for( int i=0;i<X;i++ ) scanf( "%d",&A[i] ); for( int i=0;i<Y;i++ ) scanf( "%d",&B[i] ); for( int i=0;i<Z;i++ ) scanf( "%d",&C[i] ); len=0; for( int i=0;i<X;i++ ) for( int j=0;j<Y;j++ ) sum[len++]=A[i]+B[j]; sort( sum,sum+len,cmp ); scanf( "%d",&T ); printf( "Case %d:\n",N++ ); while( T-- ) { int XX; bool found=false; scanf( "%d",&XX ); for( int i=0;i<Z&&!found;i++ ) if( BinarySeach(XX-C[i]) ) found=true; if( found==true ) printf( "YES\n" ); else printf( "NO\n" ); } } return 0;}
- HDU 2141 二分
- hdu 2141 二分搜索
- hdu 2141 二分查找
- hdu 2141(二分)
- hdu 2141 二分查找
- hdu 2141 二分
- HDU 2141二分小解
- HDU 2141 二分查找
- HDU 2141 二分查找
- HDU 2141 二分查找
- hdu 2141 二分 ll
- hdu 2141 (二分+排序)
- HDU 2141 哈希表或者二分
- 二分查找(HDU 2141 )
- HDU-2141(二分查找)
- HDU 2141(搜索题,二分)
- HDU-2141(二分查找_创新)
- hdu 2141 二分查找,三个数相加
- crsctl命令详解
- MySQL 按条件导出某部分数据
- 嵌入式开发资料集锦
- 浏览器关于scrollTop scrollLeft的兼容性
- http://acm.hdu.edu.cn/showproblem.php?pid=1251&&字典树
- HDU 2141 二分
- [debian安装]termial在gnome中无法真透明
- 进程和线程的区别
- MFC对话框美化使其具有xp/win7风格
- MFC创建控件--CButton
- 元年
- POJ-3070 Fibonacci【矩阵二分幂】
- linux2.6.32.2 mini2440平台移植--移植DM9000网卡驱动
- 第三周实验报告3