题意:给一个集合,求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. 串口转以太客户端(增加uci、可连接多个服务器)

    1. 进入barrier_breaker/package/utils文件夹,新建ttl_client 2. 该目录下的Makefile # # Copyright (C) OpenWrt.org # ...

  2. MATLAB 绘透视图

    MATLAB绘图随记(1)--如何画一个透明平面 http://blog.sina.com.cn/s/blog_5cd4cccf0100q90p.html 小老板让我绘个图 找了些资料 最后发现mat ...

  3. class path resource [spring/ApplicationContext-springmvc.xml] cannot be opened because it does not exist

    配置如下: <init-param>   <param-name>contextConfigLocation</param-name>   <param-va ...

  4. c# 几种常见的弹框方法

    1.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('第一行'); ...

  5. java集合之List源码解析

    List是java重要的数据结构之一,我们经常接触到的有ArrayList.Vector和LinkedList三种,他们都继承来自java.util.Collection接口,类图如下 接下来,我们对 ...

  6. java实现PC之间的udp数据单向传输

    本示例包括两个客户端UDPClient和MyServer.UDPClient发送数据到MyServer,MyServer负责接收数据.可传输文本.视频.音频.图片等. 最近我在学习这一块,写个例子. ...

  7. php大量数据 10M数据从查询到下载 【内存溢出,查询过慢】解决方案

    功能描述:做数据导出 功能分析:1.采用csv的格式,因为csv的格式比excel小 2. 3W条数据,100个字段需要全部导出 开始 直接查询 //此处使用的laravel框架,具体含义一看就懂 t ...

  8. <亲测>CentOS7中使用yum安装Nginx的方法

    CentOS7中使用yum安装Nginx的方法   最近无意间发现Nginx官方提供了Yum源.因此写个文章记录下. 1.添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了 ...

  9. HTTP是什么?,GET与POST区别?

    HTTP是什么? 超文本传输协议(HTTP),目的是保证客户端与服务器之间的通信. 工作方式是客户端与服务器之间的请求-应答协议. web浏览器可能是客户端,计算机上的网络应用程序也可能作为服务器端. ...

  10. P1616疯狂的采药

    传送 它不是可爱的01背包了!!!这个题中一种药可以采无限次!!! 它进化成了完全背包.完全背包中的内循环从m到v[i]改成了从v[i]到m 既然如此,代码如下: #include<iostre ...