题意:给一个集合,求d=a+b+c,d最大且a,b,c,d下标不能是同一个

解题思路

a+b=d-c

另外,可以OJ看下0ms大佬们的代码.

#include "pch.h"
#include <string>
#include<iostream>
#include<map>
#include<memory.h>
#include<vector> namespace cc
{
using std::cout;
using std::endl;
using std::cin;
using std::map;
using std::vector;
class Add
{ public:
int ai;
int bi;
int sum;
Add() {};
Add(int a, int b, int sum) :ai(a), bi(b) {
this->sum = sum;
}
}; constexpr int N = 1000;
int a[N];
int n; map<int, vector<Add>> addMaps;
int ok;
int d; int cmp(void const* v1, void const* v2)
{
int* k1 = (int*)v1;
int* k2 = (int*)v2;
return *k1 - *k2;
} void dump()
{
for (int i = 0;i < n;i++)
{
cout << " " << a[i];
}
cout << endl;
} void add()
{
using IT = map<int, vector<Add>>::iterator;
for (int i = 0;i < n - 1;i++)
for (int j = i + 1;j < n;j++)
{
//all a+b
auto sum = a[i] + a[j];
Add A(i, j, sum);
IT it = addMaps.find(sum);
if (it == addMaps.end())
{
vector<Add> v;
v.push_back(A);
addMaps[sum] = v;
}
else
{
it->second.push_back(A);
}
} //all d-c
for (int i = n - 1;i >= 0 && ok == 0;i--)
{
for (int j = n - 1;j >= 0;j--)
{
if (i == j)
continue;
auto sub = a[i] - a[j];
IT it = addMaps.find(sub);
if (it == addMaps.end())
{
continue;
}
vector<Add> adds = addMaps[sub];
for (int k = 0;k < adds.size();k++)
{
if (adds[k].ai != i && adds[k].ai != j && adds[k].bi != i && adds[k].bi != j)
{
ok = 1;
d = a[i];
}
}
if (ok)
break;
}
} } void read()
{
memset(a, 0, sizeof(a));
ok = 0;
addMaps.clear();
for (int i = 0;i < n;i++)
{
cin >> a[i];
}
//sort,cong xiao dao da
qsort(a, n, sizeof(int), cmp);
//dump();
} void solve()
{
while (cin >> n && n)
{
read();
add();
if (ok)
cout << d << endl;
else
cout << "no solution" << endl;
} } }; int main()
{ #ifndef ONLINE_JUDGE
freopen("d://1.text", "r", stdin);
#endif // !ONLINE_JUDGE
cc::solve(); return 0;
}

  

uva-10125-暴力枚举的更多相关文章

  1. uva 11088 暴力枚举子集/状压dp

    https://vjudge.net/problem/UVA-11088 对于每一种子集的情况暴力枚举最后一个三人小组取最大的一种情况即可,我提前把三个人的子集情况给筛出来了. 即 f[S]=MAX{ ...

  2. UVA.12716 GCD XOR (暴力枚举 数论GCD)

    UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...

  3. UVA 10012 How Big Is It?(暴力枚举)

      How Big Is It?  Ian's going to California, and he has to pack his things, including his collection ...

  4. UVA - 11464 Even Parity 【暴力枚举】

    题意 给出一个 01 二维方阵 可以将里面的 0 改成1 但是 不能够 将 1 改成 0 然后这个方阵 会对应另外一个 方阵 另外一个方阵当中的元素 为 上 下 左 右 四个元素(如果存在)的和 要求 ...

  5. 紫书 例题 10-2 UVa 12169 (暴力枚举)

    就是暴力枚举a, b然后和题目给的数据比较就ok了. 刘汝佳这道题的讲解有点迷,书上讲有x1和a可以算出x2, 但是很明显x2 = (a * x1 +b) 没有b怎么算x2?然后我就思考了很久,最后去 ...

  6. UVA 725 UVA 10976 简单枚举

    UVA 725 题意:0~9十个数组成两个5位数(或0开头的四位数),要求两数之商等于输入的数据n.abcde/fghij=n. 思路:暴力枚举,枚举fghij的情况算出abcde判断是否符合题目条件 ...

  7. UVA 10125 - Sumsets(POJ 2549) hash

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

  8. CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution (暴力枚举)

    题意:求定 n 个数,求有多少对数满足,ai^bi = x. 析:暴力枚举就行,n的复杂度. 代码如下: #pragma comment(linker, "/STACK:1024000000 ...

  9. 2014牡丹江网络赛ZOJPretty Poem(暴力枚举)

    /* 将给定的一个字符串分解成ABABA 或者 ABABCAB的形式! 思路:暴力枚举A, B, C串! */ 1 #include<iostream> #include<cstri ...

  10. HNU 12886 Cracking the Safe(暴力枚举)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...

随机推荐

  1. 【java】for循环嵌套

    循环嵌套:外循环控制行数,内循环控制每一行的列数,也就是每一行的元素个数 需求:打印出9*9的乘法表 class Demo { public static void main(String[] arg ...

  2. 【java】数据类型

    逻辑型boolean: boolean类型数据只能取值True或False,不可以0或者非0替代True或False,这点与c语言不同. 字符型char: 一个char类型的字符占两个字节.一个汉字也 ...

  3. 关于opcdaauto.dll的注册

    关于opcdaauto.dll的注册 无论win7_32还是win7_64位都执行一样的CMD命令,即regsvr32 opcdaauto.dll . 如果从网上下载的opcdaauto.dll 文件 ...

  4. pytest.5.参数化的Fixture

    From: http://www.testclass.net/pytest/parametrize_fixture/ 背景 继续上一节的测试需求,在上一节里,任何1条测试数据导致断言不通过后测试用例就 ...

  5. ALGO-30_蓝桥杯_算法训练_入学考试DP)

    问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个 ...

  6. bzoj5050: 建造摩天楼

    Description 属于小Q管辖的n座摩天楼从左往右排成一排,编号依次为1到n,第i座摩天楼的高度为h_i.小Q会进行m次以下两种 操作之一: 2 l r,询问h_l+h_{l+1}+...+h_ ...

  7. PAT 乙级 1054 求平均值 (20) C++版

    1054. 求平均值 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题的基本要求非常简单:给定N个实 ...

  8. Java-Runoob-高级教程-实例-数组:13. Java 实例 – 数组交集

    ylbtech-Java-Runoob-高级教程-实例-数组:13. Java 实例 – 数组交集 1.返回顶部 1. Java 实例 - 数组交集  Java 实例 以下实例演示了如何使用 reta ...

  9. 学习笔记之Python for Data Analysis

    Python for Data Analysis, 2nd Edition https://www.safaribooksonline.com/library/view/python-for-data ...

  10. LAN

    一. 局域网(LAN) 是一个覆盖地理范围相对较小的高速容错数据网络,它包括工作站.个人计算机.打印机和其它设备.LAN 为计算机用户提供了资源共享的设备访问,如打印.文件交换.电子邮件交换等等. 局 ...