poj之旅——2549
2016-06-16 12:47
323 查看
题目描述:给出n个数,求a+b+c=d的最大的d,四个数均不同。
题解:此题出的不算好,本意应是用折半枚举,可是限定了不同,则必须把三个数a,b,c枚举出来,否则会比较麻烦,所以直接裸裸的O(n^3)竟然过了,不可思议。可怜的set与vector/array要么TLE,要么MLE。欸。
参考程序:
题解:此题出的不算好,本意应是用折半枚举,可是限定了不同,则必须把三个数a,b,c枚举出来,否则会比较麻烦,所以直接裸裸的O(n^3)竟然过了,不可思议。可怜的set与vector/array要么TLE,要么MLE。欸。
参考程序:
#include<cstdio> #include<algorithm> #include<vector> #define maxn 1100 #define INF 0x7f7f7f7f using namespace std; int a[maxn]; int n; vector<int>b; int main(){ while (scanf("%d",&n)==1 && n){ for (int i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); n=unique(a,a+n)-a; int ans=-INF; for (int i=n-1;i>=0;i--){ for (int j=n-1;j>=0;j--){ if (i==j)continue; int sum=a[i]-a[j]; for (int l=0,r=j-1;l<r;){ if (a[l]+a[r]==sum){ans=a[i];break;} if (a[l]+a[r]>sum)r--;else l++; } if (ans != -INF)break; } if (ans != -INF) break; } if (ans == -INF)printf("no solution\n");else printf("%d\n",ans); } return 0; }
相关文章推荐
- 驱动中的并发与竟态
- c++ 文件操作详解
- JAVA输入/输出流程序例题(文件和目录、字节流、字符流)
- RatingBar属性详解 - Android 中文 API (40) —— RatingBar
- 更改UITextField的placeholder文字颜色的5种方法 及placeholder字体大小
- jad反编译class类文件的时候容易出错的几种情况
- 全面解读Java NIO工作原理(一)
- WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式
- Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
- hadoop 安装教程
- android返回处理
- HTTP权威指南读后感
- Java内部类的作用
- [置顶] MVP:有呼吸的Android架构
- 为什么样本方差自由度(分母)为n-1
- SQLPrompt 7.2发布
- 实现多态
- PostgreSQL在Ubuntu上安装指南
- JS之——设置cookie 删除cookie
- netstat端口状态查看命令详解