本题就是告诉你有两个数串 其中第一个数串中的每两个元素ai和aj(i<j)相加得到的元素 放入第二个数串里 但由于两个数串给搞的比较混乱 需要解决从中识别出第一个数串并将其输出出来

本题其实仔细一想就能发现 这个问题 我们从数串的特点上考虑

第二个数串是第一个数串组成的 那么如何找出第一个数串呢? 当我们把元素排完序后 发现 最小的两个元素一定是第一个数串的 明显没有其他元素能够构成这两个最小的元素

然后我们把这两个数之和从剩下的数中删掉 因为要排除第二串数

然后对余下的数分析 剩下的最小的一个数 一定是个a串中的数 为什么呢  现在我们把最小的像个a串中的元素组成的数删掉了 剩下的最小的数一定不是a串的

因为a串无法组成这个数 那么把新数拉进来 然后每一个老a数和新a数相加 不断在串中删掉这两个的和 不断重复这个过程

剩下的数就是a串数

考虑如何实现 由于每两元素之和都要在排序后到后面的序列中去找 所以我们不如用一个map

实现方式如下 O(N*N);

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 125255;
vector<ll>v;
map<ll,ll>m;
ll a[maxn];
int main()
{int t;while(~scanf("%d",&t)){m.clear(),v.clear();for(int i=1;i<=t;i++)scanf("%lld",&a[i]);sort(a+1,a+1+t);v.push_back(a[1]);v.push_back(a[2]);m[a[1]+a[2]]++;for(int i=3;i<=t;i++){if(m[a[i]]>0){//将两个数之和消耗掉 此处就相当于把后面的b消耗掉m[a[i]]--;continue;}else{v.push_back(a[i]);for(int j=0;j<v.size()-1;j++){ll b = v[j] + a[i];//将两个数的加和标记下来m[b]++;}}}printf("%d\n",v.size());for(int i=0;i<v.size();i++)i==v.size()-1?printf("%lld\n",v[i]):printf("%lld ",v[i]);}return 0;
}

HDU 6168 Numbers 思维相关推荐

  1. HDU 6168 Numbers 思维 水题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6168 题目描述: 定义数组b是由数组a每两项的和组成的,现在将数组A, B混在一起给你, 筛出数组A ...

  2. hdu 6168 Numbers

    zk has n numbers a1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk generates a new number (ai+a ...

  3. HDU 6029(思维)

    传送门 题面: Graph Theory Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/O ...

  4. 2021牛客暑期多校训练营1 G Game of Swapping Numbers 思维 + 巧妙的转换

    传送门 文章目录 题意: 思路: 题意: 给你两个数组A,BA,BA,B,你可以选择AAA的两个位置i,j,i<ji,j,i<ji,j,i<j交换Ai,AjA_i,A_jAi​,Aj ...

  5. HDU 6264(思维)

    传送门 题面: Problem A. Super-palindrome You are given a string that is consistedof lowercase English alp ...

  6. E - 连连看 HDU - 1175(思维的深搜)

    "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线 ...

  7. HDU - 7029 Median 思维

    传送门 文章目录 题意: 思路: 题意: 给你1,2,...,n1,2,...,n1,2,...,n一共nnn个数,你需要将其分成mmm组,使得每组的中位数为bib_ibi​,保证bib_ibi​互不 ...

  8. C. k-Amazing Numbers(思维前缀最小值+枚举相同数距离)

    https://codeforces.com/contest/1417/problem/C 大晚上的想岔了.. a1,a2,-,an (1≤ai≤n)这个范围其实就在暗示要枚举出现的数.但是我不知道怎 ...

  9. HDU - 5073 Galaxy 思维+方差性质

    题目链接 题意: 一共有N个星球,其星球围绕着其中心旋转,现在你可以去掉最多K个星球,使得其最后的:∑ni=1d2i\sum_{i=1}^n d_i^2最小 其中di表示第i个点到中心的距离.当然随着 ...

最新文章

  1. Java基础教程(3)--回顾HelloWorld
  2. 双系统 win10 时间不对
  3. 浅谈电量传感器在数据中心的UPS电源中的应用
  4. powerbi 线性回归_Power BI二月新增图表及课程福利
  5. word操作快捷键记录
  6. linux 没有root登陆
  7. html树状图右侧_树状图及制作方法(Excel 2016/Excel 2013)
  8. Hadoop:你不得不了解的大数据工具
  9. 【Azure学习.01】先从账号注册开始
  10. 迪杰斯特拉算法(最短路径)
  11. 精密制造业行业_精密制造业行业前景(全球精密制造业排名)
  12. 推荐一款代码神器,代码量至少省一半! 1
  13. 简单工厂模式和策略模式结合使用php
  14. 打造极致Material Design动画风格Button
  15. 风口猪炒股指标_使用说明文档20210101
  16. Tomcat安装及配置教程
  17. Groovy入门教程
  18. win10系统bat脚本自启动程序、修改壁纸、更换主题区分主副屏壁纸
  19. 前端安全沙箱技术如何解决开源安全问题?
  20. 天津等保测评机构项目测评收费价格标准参考

热门文章

  1. ios 在UIView上画图,线条
  2. (转载)最黑的黑客米特尼克:多次耍FBI 终被高手擒
  3. Asp.Net开通支付宝移动端网页支付
  4. Java String常用的数据类型转换
  5. 68-Flutter中极光推送的使用
  6. Android中WebService的应用
  7. js 短信验证码 6位数字
  8. redis 4.0.9 centos7 双机集群安装
  9. Java序列化报错serialVersionUID不一致
  10. java实现文件在线预览