日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

枚举,二分

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 枚举,二分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二分模板

① 普通的整數二分
int l, r, res;
while(l <= r){
int mid = (l + r) / 2;
if (ok (mid)){
res = mid;
r = mid - 1;?
}
else{
l = mid + 1; // 滿足條件的最小值
}
}

精度精確型二分
const double eps = 1e-7;
double l, r;
while (l + eps < r){
double mid = (l + r) / 2.0;
if (ok (mid)){
l = mid;
}
else {
r = mid;
}
}

HDU4151?http://acm.hdu.edu.cn/showproblem.php?pid=4151

?

先是枚舉,然后是二分^...^

1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 #include<string.h> 5 using namespace std; 6 bool judge[10]; 7 int m,n; 8 bool check(int x){ 9 memset(judge,false,sizeof(judge)); 10 bool flag=true; 11 while(x){ 12 int temp=x%10; 13 x/=10; 14 if(judge[temp]){ 15 flag=false; 16 break; 17 } 18 judge[temp]=true; 19 20 }return flag; 21 } 22 int arr[100000000]; 23 int main(){ 24 int tot=0; 25 for(int i=1;i<10000000;++i){ 26 if(check(i))arr[tot++]=i; 27 } 28 29 while(cin>>n){ 30 int r=tot-1;int l=0; 31 int mid,res; 32 if(n<=1){ 33 cout<<"0"<<endl; 34 continue; 35 } 36 while(l<=r){ 37 mid=(l+r)/2; 38 if(arr[mid]<n) 39 {l=mid+1; 40 res=mid; 41 } 42 else r=mid-1; 43 } 44 int s=res+1; 45 cout<<s<<endl; 46 } 47 } View Code

?

轉載于:https://www.cnblogs.com/shangjindexiaoqingnian/p/5721200.html

總結

以上是生活随笔為你收集整理的枚举,二分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。