6 条题解

  • 3
    @ 2026-10-4 10:02:26

    不使用lower_bound函数

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    const int INF = 0x3f3f3f3f;
    const int N = 1e5 + 10;
    int n , m , cnt , a [N];
    signed main()
    {
    		cin >> n >> m;
    		for (int i = 1; i <= n; i++) cin >> a [i];
    		while ( m-- )
    		{
    			cin >> cnt;
                int l = 1 , r = n , ans = INF;
                while (l <= r)
                {
                    int mid = l + r >> 1;
                    if (cnt <= a [mid])//要查找的值小于当前值
                    {
                        if (a [mid] == cnt)
                            ans = min (ans , mid);
                        r = mid - 1;
                    } 
                    else l = mid + 1;
                }
                if (ans == INF) cout << "-1\n";
                else cout << ans << "\n";
    		}
    		return 0;
    }
    
    

    使用lower_bound函数

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    const int INF = 0x3f3f3f3f;
    const int N = 1e5 + 10;
    int n , m , cnt , a [N];
    signed main()
    {
    		cin >> n >> m;
    		for (int i = 1; i <= n; i++) cin >> a [i];
    		while ( m-- )
    		{
    			cin >> cnt;
                if (a [lower_bound (a + 1 , a + n + 1 , cnt) - a]!= cnt) cout << "-1\n";
    		    else cout << (lower_bound (a + 1 , a + n + 1 , cnt) - a) << "\n";
    		}
    		return 0;
    }
    
    
    
    • 0
      @ 2026-3-22 15:41:46

      虽然只有一种味,但真的很 鲜~

      向日葵味

      #include<bits/stdc++.h>
      using namespace std;
      int n, m;  
      int a[10000005];  
      int main(){
          cin >> n >> m;  
          for(int i=1; i<=n; i++){
              cin >> a[i];
          }
      
          for(int i=1; i<=m; i++){  
              int ans;  
              cin >> ans;
              int l = 1, r = n, res = -1;  
              while (l <= r) {
                  int mid = (l + r) / 2;
                  if (a[mid] == ans) {
                      res = mid;  
                      r = mid - 1;  
                  } else if (a[mid] < ans) {
                      l = mid + 1;
                  } else {
                      r = mid - 1;
                  }
              }
              cout << res << "\n";  
          }
          return 0;
      }
      
      • 0
        @ 2025-9-20 14:17:21
        #include<bits/stdc++.h>
        using namespace std;
        long long a[10000000],b[1000000],n,x,nnn;
        int main(){
            cin >> n >> x;
            for(int i=0; i<n; i++){
                cin >> a[i];
            }
            for(int i=0; i<x; i++){
                int l=0,r=n-1,mid=0,ans;
                bool f=0;
                cin >> ans;
                while(l<=r){
                    mid=(l+r)/2;
                    
                    if(a[mid]==ans){
                        
                        f=1;
                        r=mid-1;
                        nnn=mid;
                    }
                    if(a[mid]<ans) l=mid+1;
                    else r=mid-1;
                }
        
                if(f==0) cout << -1 << "\n";
                else cout << nnn+1 << "\n";
            }
            return 0;
        }
        
        • 0
          @ 2025-4-26 21:22:01

          1000分,拿走

          #include<bits/stdc++.h>
          using namespace std;
          const int N=1e5+10;
          const int INF=0x3f3f3f3f;
          #define LL long long
          #define ull unsigned long long
          int n,m,a[N],ub[114514];
          'int main(){
          	int anser[594088],sum;
          	cin>>n>>m;
          	for(int i=1;i<=n;i++){
          		cin>>a[i];
          	}
          	for(int i=1;i<=m;i++){
          		cin>>ub[i];
          		int l=1,r=n;
          		sum=0;	
          	while(l<=r){
          		int mid=(l+r)/2;
          		if(a[mid]==ub[i])'{
          			sum=mid;
          			r=mid-1;
          		}
          		else if(a[mid]>ub[i]){
          			r=mid-1;
          		}
          		else{
          			l=mid+1;
          		}
          	}
          		if(sum){
          			anser[i]=sum;
          		}
          		else{
          			anser[i]=-1;
          		}
          	}
          	for(int i=1;i<=m;i++){
          		cout<<anser[i]<<endl;
          	}	
          	return 1;
          }                            '   
          
          #include<bits/stdc++.h>
          using namespace std;
          const int N=1e5+10;
          const int INF=0x3f3f3f3f;
          #define LL long long
          #define ull unsigned long long
          int n,m,a[N],ub[114514];
          int main(){
          	int ans[594088],sum;
          	cin>>n>>m;
          	for(int i=1;i<=n;i++){
          		cin>>a[i];
          	}
          	for(int i=1;i<=m;i++){
          		cin>>ub[i];
          		int l=1,r=n;
          		sum=0;	
          	while(l<=r){
          		int mid=(l+r)/2;
          		if(a[mid]==ub[i]){
          			sum=mid;
          			r=mid-1;
          		}
          		else if(a[mid]>ub[i]){
          			r=mid-1;
          		}
          		else{
          			l=mid+1;
          		}
          	}
          		if(sum){
          			ans[i]=sum;
          		}
          		else{
          			ans[i]=-1;
          		}
          	}
          	for(int i=1;i<=m;i++){
          		cout<<ans[i]<<endl;
          	}	
          	return 0;
          }
          点赞收藏!!!!                               
          

          阿妈特拉斯

          • @ 2025-4-26 21:33:15

            不长不短会变成都不会补充蛋白和传播 嘻嘻嘻

        • -3
          @ 2025-4-22 19:16:13

          不长不短会变成都不会补充蛋白和传播

          • -4
            @ 2024-12-17 16:24:38
            #include<bits/stdc++.h>
            using namespace std;
            int main(){
            	int n,m,a[100001],b[100001],c[100005];
            	cin>>n>>m;
            	for(int i=1;i<=n;i++){
            		cin>>a[i];
            	}
            	for(int i=1;i<=m;i++){
            		cin>>b[i];
            		int l=1,r=n,ans=0;	
            	while(l<=r){
            		int mid=(l+r)/2;
            		if(a[mid]==b[i]){
            			ans=mid;
            			r=mid-1;
            		}
            		else if(a[mid]>b[i]){
            			r=mid-1;
            		}
            		else{
            			l=mid+1;
            		}
            	}
            		if(ans==0){
            			c[i]=-1;
            		}
            		else{
            			c[i]=ans;
            		}
            	}
            	for(int i=1;i<=m;i++){
            		cout<<c[i]<<endl;
            	}
            	
            
            	
            	
            	return 0;
            }
            小鸟
            
            • 1

            信息

            ID
            3098
            时间
            1000ms
            内存
            256MiB
            难度
            2
            标签
            递交数
            137
            已通过
            36
            上传者