目录

  • 题目
    • 解析
    • 二分查找
    • AC代码

题目

解析

牌的数量增加到了1000,因此如果使用四个for循环,肯定会超时,当n=1000时,我们的时间复杂度就是n^4^,肯定寄了,所以我们要对代码进行优化,想想看能不能减少一个for(),因此我们发现可以把最内层的for换成查找,这里的查找用的是二分查找,时间复杂度为logn,这样一来时间复杂度就变成了n3logn,一下子快了不少,但是这样交上去还是有问题,我们还要更快,因此,我们可以再淦掉一个for循环,因为4层for循环,内两层for循环就是用来查找是否有值等于m-x[i]-x[j],我们可以事先把内两层循环可能产生的值枚举出来,然后再配合二分查找,把时间复杂度降低到n2logn,这样就能AC了。

二分查找其实不用自己写,头文件<algorithm>中就包含了
binary_search(Begin_Iterator,End_Iterator,key)

当然了,自己写也没什么问题

二分查找

bool Binary_search(int *x,int i,int j,int key){sort(x,x+n);//对数组排序while(i<=j){int p=(i+j)/2;if(x[p]>key){j=p-1;}else if(x[p]<key){i=p+1;}else{return true;}}return false;
}

AC代码

#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;int main(){int n,m;scanf("%d %d",&n,&m);const int MAX_SIZE=1010;int x[MAX_SIZE];for(int ix=0;ix<n;++ix){scanf("%d",&x[ix]);}//产生枚举vector<int>xx;for(int i=0;i<n;++i){for(int j=0;j<n;++j){xx.push_back(x[i]+x[j]);}}//二分查找前先排序sort(xx.begin(),xx.end());//两轮搜查+二分查找for(int i=0;i<n;++i){for(int j=0;j<n;++j){int key=m-x[i]-x[j];if(binary_search(xx.begin(),xx.end(),key)){puts("Yes");return 0;}}}puts("No");return 0;
}

挑战程序设计竞赛——抽签Ⅱ相关推荐

  1. 挑战程序设计竞赛(第2版)》

    <挑战程序设计竞赛(第2版)> 基本信息 作者: (日)秋叶拓哉 岩田阳一 北川宜稔 译者: 巫泽俊 庄俊元 李津羽 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787 ...

  2. 《挑战程序设计竞赛》 读后感(转载)

    <挑战程序设计竞赛> 读后感 最近要开始准备面试找工作,算法是准备的重中之重,舍友推荐了<挑战程序设计竞赛>这本书.花了一周的时间大体过了一遍,该书真切地让我理解了" ...

  3. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  4. POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 1150 The Last Non-zero Digit超大组合数:求超大组合数P(n, m)的最后一个非零位.4.1更加复杂 ...

  5. POJ 3735 Training little cats​ 题解 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3735 Training little cats调教猫咪:有n只饥渴的猫咪,现有一组羞耻Play,由k个操作组成,全部选自: ...

  6. POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    POJ 3608 Bridge Across Islands跨岛大桥:在两个凸包小岛之间造桥,求最小距离?3.6与平面和空间打交道的计 ...

  7. AOJ 1312 Where's Wally 题解《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    本文由码农场 同步,最新版本请查看原文:http://www.hankcs.com/program/algorithm/aoj-131 ...

  8. ICPC程序设计题解书籍系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)

    白书<挑战程序设计竞赛>(第2版)题目一览 白书:秋田拓哉:<挑战程序设计竞赛>(第2版) 第1章 蓄势待发--准备篇(例题) POJ1852 UVa10714 ZOJ2376 ...

  9. 挑战程序设计竞赛——详解DFS及BFS

    挑战程序设计竞赛--详解DFS及BFS 一.学会要用到的stl函数,Stack.Quene.Pair 1.Stack(DFS隐式的用到,并与Queue对比记忆) 头文件==#include== sta ...

  10. 【操作指导 | 代码实现】挑战程序设计竞赛2:算法和数据结构

    书籍封面 第一章 前言 1. 本人衷心建议 ~~~~~~       如果你是一位初学者,我指的是你只会基本的 C/C++ 编程,即使编的很烂,这本书对于你算法和数据结构的提升非常有帮助,所涉及的每一 ...

最新文章

  1. raconter ce qui s'est passé
  2. Mac 技术篇-修改默认的python版本,mac最新版Python3.7.4的安装配置
  3. Oracle AWR 报告中 No data exists for this section of the report 说明
  4. Hasor JDBC 的难关,嵌套事务处理思路
  5. WM6 Rapi 开发(二) Hello World
  6. 集装箱计算机跟踪管理方式,集装箱运输第二章集装箱及其箱务管理(图文)解析.ppt...
  7. 算法导论 练习12.1
  8. linux查看及修改文件权限以及相关
  9. Python入门之经典函数实例
  10. 重读《从菜鸟到测试架构师》-- 测试专家的第一步
  11. 怎么样用阿里云RDS数据库
  12. mysql数据库技术与项目课后答案_数据库技术与应用mysql版答案
  13. ruoyi增加导入导出
  14. el-input输入字母转化大写字母
  15. Python数据分析与机器学习实战<九>titanic数据集分析实例
  16. 【Manual】Memory Cache Control
  17. 2022下半年软考合格标准是多少?你可知?
  18. php word excel表格数据库,记一次使用PHP将word转为excel的经历
  19. DockWidget
  20. FlashPaper打印机未能正确安装的解决办法

热门文章

  1. garmin 945_点评:Garmin Nuvi 350 GPS
  2. qqkey获取原理_QQ key盗号木马原理分析
  3. 计算机维修与维护怎么学,做电脑维修需要学习哪些知识呢?
  4. SQL恢复挂起的原因和措施解析
  5. Linux vlan间路由配置,VLAN间路由
  6. Python基础 day4
  7. 坏道与硬盘的P表和G表
  8. Vue写项目后台SpringBoot 01
  9. 数学模型的相关概念及意义等理论内容
  10. buuctf刷题记录2 相册