ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷P2249 【深基13.例1】查找(二分+结构体)

2022-08-05 10:02:11  阅读:134  来源: 互联网

标签:fir 13 P2249 int sum 深基 查找 return scanf


在实中夏令营上做的题

原题

AC代码

由于要求给出数字第一次出现位置

纯二分是不行的

查出这个数再一步步向前查找会wa一个点tle一个点

所以我干脆在输入时使用结构体把每个数第一次出现位置记下来,到时候线性查找

此思路AC(看你谷几个热门题解都没有涉及结构体,干脆自己发一篇

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,q;
 4 struct node{
 5     int vail,fir;
 6 }sum[1000005];
 7 int erfen(int l,int r,int q){
 8     while(l<=r){
 9         int mid=(l+r)/2;
10         if(sum[mid].vail==q){
11             return sum[mid].fir;
12         }
13         if(sum[mid].vail<q){
14             l=mid+1;
15         }
16         if(sum[mid].vail>q){
17             r=mid-1;
18         }
19     }
20     return -1;
21 }
22 int main(){
23     scanf("%d%d",&n,&m);
24     for(int i=1;i<=n;i++){
25         scanf("%d",&sum[i].vail);
26         if(sum[i].vail==sum[i-1].vail&&i>1)sum[i].fir=sum[i-1].fir;
27         else sum[i].fir=i;
28     }
29     while(m--){
30         scanf("%d",&q);
31         printf("%d ",erfen(1,n,q));
32     }
33     return 0;
34 }

 

标签:fir,13,P2249,int,sum,深基,查找,return,scanf
来源: https://www.cnblogs.com/TFLSc1908lzs/p/16553373.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有