3 条题解
-
0
为什么这题能用二分?
因为题目要求输出二分查找的次数因为数组有序(字典序),且要求的算法
套模板就可以了
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
朴素二分,
虽然有点慢...看不懂的建议进厂(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; }
- 1
信息
- ID
- 801
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 935
- 已通过
- 280
- 上传者