C++有关TLE问题即解决措施以及algorithm下的二分查找

   cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而下面的语句可以来打消iostream的输入 输出缓存,可以节省许多时间,使效率与scanf与printf相差无几

#include <iostream>
using namespcae std;
int main() 
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    // IO
}

    这只是C++为了兼容C而采取的保守措施

 

二分查找:

binary_search(a,a+n,x)

1.头文件

#include<algorithm>

2.功能

在数组中查找某个元素是否存在

函数模板:binary_search(arr[],arr[]+size,index)

参数说明:arr[]:数组首地址

                  size:数组元素个数

                  index:需要查找的元素
函数功能:  在数组中以二分法检索的方式查找,若在数组(要求数组元素非递减)中查找到indx元素则真,若查找不到则返回值为假。

存一个打出来的二分模板的博客,讲的真的不错     https://www.cnblogs.com/bofengyu/p/6761389.html

OK,直接上题

链接:https://ac.nowcoder.com/acm/contest/901/A

题目描述

水宝宝的美食街开始营业喽

美食街八大菜肴:烤绿鸟(主食),拔丝QAQ套餐(副食),红烧KMP(主菜),Treap刺身(副菜),油炸内存条(小吃),奶油CPU(甜品),SPFA奶盖(饮品),冰镇机油(饮品)

水宝宝美食街开张第二天,wza神犇来到水宝宝美食街,却被琳琅满目的食品吓住了,他急需知道水宝宝的美食街有没有他想吃的东西

 

给出n个食物编号,然后有m个询问,每个询问一个整数,询问该整数是否在n个食物编号中出现过,保证编号为正整数

输入描述:

第一行:n

第二行:m

第三行:n个询问的编号

第四行:m个询问的编号

输出描述:

一共m行,若出现则输出"YES",否则输出"NO"

示例1

输入

复制

15
3
4 2 1 6 16 4 41 19 37 40 8 71 34 87 47
2 8 198

输出

复制

YES
YES
NO
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
ll a[1000005];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll n, m, x;
    cin >> n >> m;
    for (int i = 0; i < n; i++) cin >> a[i];
    sort(a, a + n);
    while (m--)
    {
        cin >> x;
        if (binary_search(a, a + n, x))  puts("YES");
        else    puts("NO");
    }
    return 0;
}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值