首页 > 其他分享 >【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)

【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)

时间:2024-02-03 15:32:31浏览次数:26  
标签:13 ch P2249 数字 int 整数 read 查找

【深基13.例1】查找

题目描述

输入 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_i++ 个不超过 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_i++_02 的单调不减的(就是后面的数字不小于前面的数字)非负整数 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_ios_03,然后进行 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_#include_04 次询问。对于每次询问,给出一个整数 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_#include_05,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_ios_06

输入格式

第一行 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_ios_07 个整数 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_i++【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_#include_04,表示数字个数和询问次数。

第二行 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_i++ 个整数,表示这些待查询的数字。

第三行 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_#include_04 个整数,表示询问这些数字的编号,从 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_i++_12 开始编号。

输出格式

输出一行,【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_#include_04 个整数,以空格隔开,表示答案。

样例 #1

样例输入 #1

11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6

样例输出 #1

1 2 -1

提示

数据保证,【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_ios_14【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_i++_15【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)_ios_16

本题输入输出量较大,请使用较快的 IO 方式。

思路

数据量很大,需要优化读入。通过递归进行二分查找。

AC代码

#include <iostream>
#include <vector>
#include <algorithm>
#define AUTHOR "HEX9CF"
using namespace std;

int read(){
    char ch;
    int x = 0;
    while((ch < '0' || ch > '9')){
        ch = getchar();
    }
    while(!(ch < '0' || ch > '9')){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x;
}

int main(){
    int n, m;
    vector<int> a;
    n = read();
    m = read();
    for(int i = 0; i < n; i++){
        a.push_back(read());
    }
    for(int i = 0; i < m; i++){
        if(i){
            putchar(' ');
        }
        int t = read();
        vector<int>::iterator lb = lower_bound(a.begin(), a.end(), t);
        if(lb == a.end() || *lb != t){
            cout << -1;
        }else{
            cout << lb - a.begin() + 1;
        }
    }
    return 0;
}

标签:13,ch,P2249,数字,int,整数,read,查找
From: https://blog.51cto.com/HEX9CF/9569728

相关文章

  • (坚持每天写算法)算法学习与复习part1基础算法1-13——位运算
    最近确实有在写算法,在写dp,之前学的时候不全,被计数,树型等dp折磨了一下。位运算是将重点放在数字的位上,通常作为辅助行动,比如状态dp,有的时候是为了节省时空复杂度而使用的。这是今天的题目: 位运算应用的情况除了上面讲的,还有单纯的位问题,上面的题目就是一个例......
  • 20240130-DP以及优化随记
    状态转移方程递归关系(从已知求得未知的表达式)背包dp0-1背包,多重,完全,混合模版套用//多重背包#include<bits/stdc++.h>usingnamespacestd;constintN=507,M=1e5+7;intp,n,x,y,z,dp[10005];intmain(){ cin>>p>>n; for(inti=1;i<=n;i++){ scanf("%d%d......
  • 【洛谷 P2249】【深基13.例1】查找(向量+lower_bound)
    【深基13.例1】查找题目描述输入个不超过的单调不减的(就是后面的数字不小于前面的数字)非负整数,然后进行次询问。对于每次询问,给出一个整数,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出。输入格式第一行个整数和,表示数字个数和询问次数。第二行......
  • 力扣 34. 在排序数组中查找元素的第一个和最后一个位置
    Problem: 34.在排序数组中查找元素的第一个和最后一个位置思路找到大于等于target的下标,然后遍历之后的数组,找到最后的下标。classSolution{public:intf(vector<int>&nums,inttarget){intl=0,r=nums.size()-1;intmid=floor(l+(r-l)*1.0/2);......
  • 基于Deepspeed实现LLaMA-13B或70B模型的微调
    写在前面事实证明,在部分情况下,依然有开启deepspeed的必要性这是上一篇文章,讲述使用双卡/8卡3090微调llama2-70B/13B模型-AlphaInf-博客园(cnblogs.com)但这一篇文章,存在下面的几个问题:如果训练的数据的seq_len过长,那么很有可能出现OOM,无法训练长的数据如果需要调的参数......
  • STM32MP135开发板助力电力行业,IEC61850协议移植笔记
    1.概述IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的l......
  • STM32MP135开发板助力电力行业,IEC61850协议移植笔记
    1.概述IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的libI......
  • 13个可能未使用过的Python特性
    大多数程序员不知道的令人难以置信的功能列表。Python是顶级编程语言之一,它具有许多程序员从未使用过的许多隐藏功能。在这篇文章中,我将分享你可能从未使用过的13个Python特性。1.列表Stepping这是一个step参数,可以通过采取几个步骤来分割你的列表。此外,你可以使用step参数......
  • 二分查找!
    使用范围:查找元素:在有序数组中查找一个特定的元素。找到边界:查找有序数组中某个值的第一个或最后一个出现的位置。搜索旋转排序数组:在旋转排序数组中查找一个特定的元素。查找峰值元素:在数组中查找峰值元素。求平方根:计算一个非负整数的平方根。搜索区间:......
  • 在排序数组中查找元素的第一个和最后一个位置
    34FindFirstandLastPositionofElementinSortedArray问题描述:给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn)级别。如果数组中不存在目标值,返回[-1,-1]。示例1:输入:n......