题意:

输入n,然后输入n个数字,,要在这n个数字中找出a,b,c,d。。满足a,b,c,d是不同元素,并且a + b + c = d。。。求出最大的d

直接暴力时间复杂度为O(n^4)。。会超时。。所以需要一定技巧性的枚举

原式转换成a + b = d - c;

把n个数字从小到大排列。

由于d要求最大。所以从最大开始枚举。遇到符合条件就结束。

先枚举d和c。从最大开始枚举。。每次得到一个数d-c。。

然后枚举a和b。。a从最小开始 。。b从最大(由于元素不能相同。所以从c - 1)开始枚举。。

因为a往上找肯定比a大, b往下找肯定比a小。

如果a + b < d - c,a就往上找

反之。b就往下找。 直到满足条件就结束。。。

 #include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std; int main()
{
int a, b, c, d, n, ans, s[], flag;
while(scanf("%d", &n) != EOF && n)
{
for(int i = ; i < n; i++)
scanf("%d", &s[i]); flag = ;
sort(s, s+n);
for(d = n - ; d >= ; d--)
{
for(c = n - ; c > ; c--)
{
if(s[c] != s[d])
{
ans = s[d] - s[c];
}
for(a = , b = c-; a < b; )
{
if(ans == s[a] + s[b])
{
flag = ;
break;
}
else if(s[a] + s[b] < ans) a ++;
else b --;
}
if(flag) break;
}
if(flag) break;
}
if(flag) printf("%d\n", s[d]);
else printf("no solution\n");
} return ;
}

or:

 #include <cstdio>
#include <algorithm> using namespace std; int num[];
int ans, a, b, c, d, n, i; bool find()
{
for(a = n - ; a >= ; --a)
{
for (b = n - ; b > ; --b)
{
if(a == b) continue;
ans = num[a] - num[b];
for (c = , d = b - ; c < d; )
{
if(num[c] + num[d] == ans) return true;
else if( num[c] + num[d] < ans) ++c;
else --d;
}
}
}
return false;
} int main()
{
while(scanf("%d", &n), n)
{
for(i = ; i < n; ++i) scanf("%d", &num[i]);
sort(num, num + n);
if(find()) printf("%d\n", num[a]);
else puts("no solution");
}
}

uva 10125 - Sumsets的更多相关文章

  1. UVA 10125 - Sumsets(POJ 2549) hash

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  2. 【HASH】【UVA 10125】 Sumset

    传送门 Description 给定一个整数集合S,求一个最大的d,满足a+b+c=d,其中a,b,c,d∈S Input 多组数据,每组数据包括: 第一行一个整数n,代表元素个数 下面n行每行一个整 ...

  3. uva 10125 二分

    https://vjudge.net/problem/UVA-10125 和之前做过的一道a+b+c=X的问题类似,不过这个要求多了a+b+c=d-->a+b=d-c  且abcd互不相等 我们 ...

  4. UVA - 10125 哈希

    题意:求集合中最大的\(d\)使得\(a+b=d-c\) 学习一下哈希的姿势(原来所谓链地址法就是直接跑个图啊) 哈希真有趣,全靠xjb乱搞 就叫这套hash为xjb-fibonacci-lpy-ha ...

  5. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  6. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  7. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  8. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  9. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

随机推荐

  1. Css 八卦

    <div class="box"> <div class="right_d"></div> <span class=& ...

  2. Python3 如何优雅地使用正则表达式(详解四)

    更多强大的功能 到目前为止,我们只是介绍了正则表达式的一部分功能.在这一篇中,我们会学习到一些新的元字符,然后再教大家如何使用组来获得被匹配的部分文本. 更多元字符 还有一些元字符我们没有讲到,接下来 ...

  3. Linux_install mod_ssl openssl apache

    1.下载 mod_ssl 和 apache 登入http://www.modssl.org/source/,下载 mod_ssl-2.8.31-1.3.41.targz: 2.8.31是mod_ssl ...

  4. 转:成为JavaGC专家Part I — 深入浅出Java垃圾回收机制

    文章来自于:http://www.importnew.com/1993.html 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解 ...

  5. 转:【创龙TMS320C6748开发板试用】相关软件的安装与基本设置+CCS安装失败分析

    http://bbs.elecfans.com/jishu_542000_1_1.html

  6. PHP之mysql笔记

    1:在php中提供了两个用于连接MySQL数据库服务器的函数. (1)int mysql_connect(hostname[:port][:/path/to/socket],user,pass). ( ...

  7. 2014-07-23 .NET实现微信公众号接入

    今天是在吾索实习的第11天.今天我跟我的实习小组的组员们,解决了关于使用ASP.NET进行微信公众号接入的问题.因为我们小组成员也是刚接触微信公众号的二次开发,所以在解决该问题的工程中也走了不少弯路. ...

  8. Remove Node in Binary Search Tree 解答

    从BST中移除一个节点是比较复杂的问题,需要分好几种情况讨论. 如这篇文章,就讨论了删除节点 1.有无左右子树 2.只有右子树 3.只有左子树 三种情况. 一种简单些的思维是只考虑删除节点是否有右子树 ...

  9. HDU-3661(贪心)

    Problem Description In a factory, there are N workers to finish two types of tasks (A and B). Each t ...

  10. Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1) 错误 解决方案(android-ndk)

    在android里做ndk编程的时候,碰到个随机性错误 错误信息如下: 05-06 15:59:44.411: A/libc(3347): Fatal signal 11 (SIGSEGV) at 0 ...