POJ2459 Sumsets
来源:互联网 发布:修改游戏数据 编辑:程序博客网 时间:2024/06/14 20:22
原题链结
第一次写博客..
这道题也是我A掉的第一道折半枚举的题
之前也在网上搜了下这道题的题解 发现没有人用我这种方法..
其实思路还是一样的, 只不过不同点体现在对lower_bound的利用上
直接上代码 看注释
#include<cstdio>#include<algorithm>#include<cstdlib>#include<cstring>#include<string>#include<stack>#include<queue>#include<iostream>#include<cmath>#include<map>#include<list>#include<stack>typedef long long ll;using namespace std;int n;int a[1005];struct node{int i,j;int val;}b[1005*1005];bool cmp(node a,node b){ return a.val<b.val;}bool comp1(node a,int b){ return a.val<b; // 找到第一个val>=b的结构体元素}bool comp2(node a,int b){ return a.val<=b; // 找到第一个val>b的结构体元素}int main(){ while(scanf("%d",&n)==1&&n) { int i,j,k,m,t; for(i=0;i<n;i++) scanf("%d",a+i); sort(a,a+n); int len=0; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(a[i]!=a[j]) //这里直接判断一下 不同的话再存 以后就可以减少这部判断啦 { b[len].i=i; b[len].j=j; b[len].val=a[i]+a[j]; //存储题意中的 a+b len++; } } } sort(b,b+len,cmp); //根据a+b的值从小到大排序 bool flag=false; for(i=n-1;i>=0;i--) //之前已经从小到大对sort了 所以直接从最大的开始 { int d=a[i]; //我们要找的d for(j=0;j<i;j++) { if(d!=a[j]) //d不能等于c { int cd=d-a[j]; //cd的值就相当于d-c node* p1=lower_bound(b,b+len,d-a[j],comp1); node* p2=lower_bound(b,b+len,d-a[j],comp2);//注意我写的两个函数comp, 而且都是作为lower_bound的参数 if(p2-p1!=0) //说明存在 a+b==d-c { while(p1!=p2) //还要判断一下a,b,c,d是否都不相同 { if(a[p1->i]!=a[j]&&a[p1->i]!=a[i]&&a[p1->j]!=a[j]&&a[p1->j]!=a[i]) { flag=true; //符合题意 直接跳出 break; } p1++; } } } if(flag) //符合题意 直接跳出 break; } if(flag)break; //符合题意 直接跳出 } if(flag)printf("%d\n",a[i]); //符合题意 直接输出d 也就是a[i] else printf("no solution\n"); } return 0;}
1 0
- POJ2459 Sumsets
- poj2459
- Sumsets
- Sumsets
- Sumsets
- Sumsets
- Sumsets
- Sumsets
- 【poj2459】Feed Accounting
- 10125 - Sumsets(*****)
- 10125 - Sumsets
- uva10125 - Sumsets
- uva10125 Sumsets
- HDU2709 Sumsets
- 10125 - Sumsets
- POJ_2229 Sumsets
- poj2229 Sumsets
- poj2229 Sumsets
- 命令行开启mysql的通用日志
- flex
- Java复习文档
- PAT L1-005. 考试座位号
- java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
- POJ2459 Sumsets
- CSS3属性选择器
- sufaCommon.sql
- hadoop退出安全模式
- view的生命周期(实训)
- 2.AddTwoNumbers
- java泛型(三)、通配符的使用
- Linux命令基础7-rmdir和rm命令
- Higher Math