UVA 10125 Sumsets
来源:互联网 发布:微屏软件科技有限公司 编辑:程序博客网 时间:2024/05/19 03:21
题意:给出一个集合S,求一个最大的d,满足a+b+c=d,a,b,c,d都是S中的不同的元素。
思路:把a+b先算出来,然后枚举d-c,判断a+b是否存在……我用的map处理的a+b,开始感觉复杂度不太优美,后来实在想不出什么好方法了,只好这么写,就这么过了。。。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<set>#include<stack>#include<cmath>#include<vector>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-9#define pi acos(-1.0)using namespace std;typedef long long ll;const int maxn=1000+10;struct Node{ int a,b; Node(){}; Node(int aa,int bb) {a=aa;b=bb;}};int num[maxn];vector<Node>sum[maxn*maxn];bool check(int id,int i,int j){ for(int k=0;k<(int)sum[id].size();++k) { if(sum[id][k].a!=i&&sum[id][k].a!=j&&sum[id][k].b!=i&&sum[id][k].b!=j) return true; } return false;}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n,m=0; map<int,int>mp; while(~scanf("%d",&n)) { if(n==0) break; for(int i=0;i<=m;++i) sum[i].clear(); mp.clear(); for(int i=0;i<n;++i) scanf("%d",&num[i]); int tmp,id; for(int i=0;i<n;++i) for(int j=i+1;j<n;++j) { tmp=num[i]+num[j]; id=mp[tmp]; if(!id) {mp[tmp]=++m;id=m;} sum[id].push_back(Node(i,j)); } bool flag=false; int maxd=-inf; for(int i=0;i<n;++i) for(int j=i+1;j<n;++j) { if(!(flag&&num[i]<=maxd)) { tmp=num[i]-num[j]; id=mp[tmp]; if(id&&check(id,i,j)) { flag=true; if(num[i]>maxd) maxd=num[i]; } } if(!(flag&&num[j]<=maxd)) { tmp=num[j]-num[i]; id=mp[tmp]; if(id&&check(id,j,i)) { flag=true; if(num[j]>maxd) maxd=num[j]; } } } if(flag) printf("%d\n",maxd); else printf("no solution\n"); } return 0;}
0 0
- UVa 10125 - Sumsets
- uva 10125 - Sumsets
- uva 10125 Sumsets
- UVa 10125 - Sumsets
- uva 10125 - Sumsets
- UVA 10125 Sumsets
- UVA 10125 - Sumsets
- UVa 10125-Sumsets
- UVa:10125 Sumsets
- uva 10125 Sumsets
- UVA 10125 Sumsets
- UVa 10125 - Sumsets
- UVA 10125 - Sumsets
- UVA - 10125 Sumsets
- UVA - 10125 Sumsets
- uva 10125 - Sumsets
- UVA 10125(p89)----Sumsets
- UVA 10125 Sumsets .
- 黑马程序员_7k面试题之银行业务调度系统
- python kNN算法
- 惰性杀死理想
- 信号量中的PV操作
- Java 过滤Oracle的like条件的特殊字符
- UVA 10125 Sumsets
- Rotate List
- HDU-1129 Channel Allocation
- ACM HDOJ 1297 (Children’s Queue)
- I/O系统:中断、DMA、通道
- 编写函数 fun求出 x 的所有奇数因子
- word分栏及序号对齐
- 定义文档兼容性,让IE按照指定的浏览器版本解析页面
- JAVA JS 身份证正则表达式