3 条题解

  • 1
    @ 2024-12-19 11:21:56
    key=input()
    word=list(input().split())
    n=len(word)
    l=0;r=n;
    cnt=0
    while l<=r:
        cnt+=1
        m=(l+r)>>1
        if key==word[m]:
            break
        elif key<word[m]:
            r=m-1
        else:
            l=m+1
    if key==word[m]:
        print("Yes\n"+str(cnt))
    else:
        print("No\n"+str(cnt))
    
    • 0
      @ 2023-5-9 15:47:27

      为什么这题能用二分?

      因为题目要求输出二分查找的次数

      因为数组有序(字典序),且要求O(logn)O(logn)的算法

      套模板就可以了

      word = input()
      # 本人不喜欢0索引开始
      word_list = ["qianmo"] + input().split()
      # 朴素二分
      l,r = 1,len(word_list)-1
      cnt = 0
      while l<r:
          m = (l+r)//2
          if word<=word_list[m]:
              r = m
          else:
              l = m+1
          cnt+=1
      # 判断
      if word == word_list[l]:
          print("Yes")
          print(cnt)
      else:
          print("No")
          print(cnt)
      
      • 0
        @ 2023-4-14 18:41:23

        朴素二分,虽然有点慢... 看不懂的建议进厂(doge)

        #include <bits/stdc++.h>
        using namespace std;
        #define int long long//妈妈再也不用担心爆int了
        
        string li[10000],f;
        int n,m,p,i;
        
        signed main()
        {
            cin>>f;
            while(cin>>li[i++]);
            int l=1,r=i-1;
            while(l<r){//二分主体,由于已经排了序,每次二分查找即可
                int mid=(l+r)/2;
                n++;
                if(f<=li[mid]){//字符串可以直接按照大小比较,不会还有人不知道吧
                    r=mid;
                    continue;
                }
                if(f>li[mid]){
                    l=mid+1;
                    continue;
                }
            }
            if(f==li[l]){cout<<"Yes"<<endl<<n;}
            else {cout<<"No"<<endl<<n;}
            return 0;//为美好的世界献上return 0;
        }
        
        • @ 2023-4-14 18:42:29

          美好的世界献上return0{\color{Green} 美好的世界献上return 0 }

        • @ 2023-4-14 18:44:28

          @ 为美好的世界献上return0\mathcal{{\color{#90ff90}为美好的世界献上return 0}}

      • 1

      信息

      ID
      801
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      递交数
      935
      已通过
      280
      上传者