HDU 1241 Can you find it? (二分查找)
来源:互联网 发布:网络台球游戏下载 编辑:程序博客网 时间:2024/06/05 15:19
开始的思路是将A+B枚举,然后二分求X-A-B,这样超时了。
后来发现了一种更加巧妙的思路:先将A+B求和后排序,然后二分求X-c,此处将高效的二分用于求数量更大的A+B。果然换个角度,效率提高了N倍。
#include <stdio.h>#include <algorithm>#define maxn 500using namespace std;__int64 a[maxn],b[maxn],c[maxn],hun[maxn*maxn];__int64 L,N,M,num;bool bs(__int64 v){__int64 l,r,m;l=0;r=num;while(l<r){m=(l+r)>>1;if(hun[m]==v)return true;if(hun[m]<v)l=m+1;elser=m;}return false;}bool search(__int64 x){__int64 i,j,k,t;for(i=0;i<M;i++){t=x-c[i];if(t<hun[0] || t>hun[num-1])continue;if(bs(t))return true;}return false;}int main(){__int64 i,j,Q,X,ncase=1;while(scanf("%I64d%I64d%I64d",&L,&N,&M)==3){for(i=0;i<L;i++)scanf("%I64d",&a[i]);for(i=0;i<N;i++)scanf("%I64d",&b[i]);for(i=0;i<M;i++)scanf("%I64d",&c[i]);num=0;for(i=0;i<L;i++)for(j=0;j<N;j++){hun[num++]=a[i]+b[j];}sort(hun,hun+num);sort(c,c+M);scanf("%I64d",&Q);printf("Case %I64d:\n",ncase++);while(Q--){scanf("%I64d",&X);if(X>hun[num-1]+c[M-1] || X<hun[0]+c[0]){printf("NO\n");continue;}if(search(X))printf("YES\n");else printf("NO\n");}}}
- HDU 1241 Can you find it? (二分查找)
- [HDU](2141)Can you find it? ---二分查找(查找)
- hdu 2141 Can you find it? 二分查找
- hdu 2141 Can you find it? 二分查找 + 数组合并
- hdu 2141——Can you find it(二分查找)
- hdu 2141 Can you find it? (二分查找)
- [ACM] hdu 2141 Can you find it? (二分查找)
- HDU 2141Can you find it(二分查找)
- 二分查找:hdu 2141 Can you find it?
- HDU 2141(Can you find it?) 二分查找
- HDU 2141 Can you find it? 二分查找
- HDU 2141 Can you find it?(二分查找)
- HDU 2141 Can you find it? (二分查找)
- hdu-2141 can you find it(二分查找)
- HDU - 2141 Can you find it?(二分查找)
- hdu 2141 Can you find it?(二分查找)
- 题解: HDU 2141 Can you find it? (二分查找)
- HDU 2141 can you find it?【二分查找】
- TI双核处理OMAP-L1x DSP/BIOS Link及其例子的编译步骤
- 关于J2EE程序servlet中中文乱码问题,jsp页面编码格式的选择
- 关于软件开发过程中的版本兼容问题
- linux常用命令
- mysql:substr() 取出字符串中的某个特定位置的字符
- HDU 1241 Can you find it? (二分查找)
- POJ 3071 Football(概率问题)
- java 字符串解析操作
- S5PV210 FIMC capture S_FMT G_FMT处理方式
- Linux C 多线程执行顺序问题
- 推荐一些好的图书
- 没有权限: 'CreateObject'解决方法(ASP)
- eclipse出现的各种问题
- swing获取屏幕大小 不含属性栏