当前位置: 首页 > wzjs >正文

word超链接网站怎样做app推广接单平台哪个好

word超链接网站怎样做,app推广接单平台哪个好,网站建设西安,用什么软件做网站hao2025年大一ACM训练-二分NEFU 折半查找 动画演示 完整代码 二分查找 binary search 数据结构与算法 A&#xff1a;二分查找 Problem A: 直接线性查找也可以&#xff0c;写一个二分搜索练手 #include<bits/stdc.h> using namespace std; int main() {long long n,x;int r…

2025年大一ACM训练-二分NEFU

折半查找 动画演示 完整代码 二分查找 binary search 数据结构与算法

A:二分查找

Problem A:
在这里插入图片描述

直接线性查找也可以,写一个二分搜索练手

#include<bits/stdc++.h>
using namespace std;
int main()
{long long n,x;int r,l,mid;while(cin>>n>>x){int num[n];for(int i=0;i<n;i++) cin>>num[i];l=0;r=n-1;while(true){mid=(l+r)/2;if(num[r]>x && num[r-1]<=x){cout<<r<<endl;break;}if(num[mid]<=x) l=mid;else r=mid;}}return 0;
}

B:卖古董-DP-二分

Problem B:
在这里插入图片描述

题目、算法都不难,作为二分专练,问题在于看出来这题哪里二分了。二分思路是 [ 单个最大值 ,整体的和 ] 以在划分区域内的价格为二分的对象。看出这个题目就简单了。

#include <bits/stdc++.h>
using namespace std;
int t,n,m,i,l,r,mid,sum,ans,tmpmax,a[100001];
bool judge(int mid)
{int s=0,cnt=1;for(i=1;i<=n;i++){s=s+a[i];if(s>mid){s=a[i];cnt++;}}return cnt>m;
}
int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){cin>>n>>m;tmpmax=sum=0;for(i=1;i<=n;i++){cin>>a[i];tmpmax=max(tmpmax,a[i]);sum=sum+a[i];}l=tmpmax;r=sum;while(l<=r){mid=l+(r-l)/2;if(judge(mid))l=mid+1;else{ans=mid;r=mid-1;}}printf("%d\n",ans);}return 0;
}

C:二分查找加强版

Problem C:
在这里插入图片描述

和A相比就多了个排序

#include<bits/stdc++.h>
using namespace std;
int main()
{long long n,x;int r,l,mid;while(cin>>n>>x){int num[n];for(int i=0;i<n;i++) cin>>num[i];sort(num,num+n);l=0;r=n-1;while(true){mid=(l+r)/2;if(num[r]>x && num[r-1]<=x){cout<<r<<endl;break;}if(num[mid]<=x) l=mid;else r=mid;}}return 0;
}

D:小清新的函数坐标-二分

Problem D:
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
double f(double x)
{return 0.0001*pow(x,5)+0.003*pow(x,3)+0.5*x-3;
}
int main()
{double x,y;while(scanf("%lf",&y)!=-1){double l=-20,r=20,mid,delta=99999;while(l<=r){mid=l+(r-l)/2;if(abs(mid-jl)<0.00001) break;if(f(mid)<y) l=mid;if(f(mid)>y) r=mid;delta=mid;}printf("%.4lf\n",mid);}return 0;
}

delta是必要的,控制精度,不然会一直细分容易死循环(因为我控制 r = mid 而不是 r = mid +1)误差越来越小了,但有些数据不能恰好对上,就会一直循环。

E:小清新的二分查找之旅

Problem E:
在这里插入图片描述

用cin,cout不得行,会超时。scanf和cin是两种常用的输入方式。通常情况下,scanf的效率要高于cin
①scanf是C语言中的函数,它直接操作指针,没有类型安全机制。例如,一个char类型的数据可以用%f来获取输入,而不会报错。而cin是C++中的输入流对象,它会自动判断变量类型,这增加了额外的开销。
②其cin为了与C语言的标准输入输出流(如stdin和stdout)保持同步,继承体系复杂,导致效率较低。在默认情况下,cin和cout会与C的标准输入输出流同步,这样可以防止混用时发生混乱,但也因此增加了额外的开销。
为了提高cin的效率,可以使用以下两种方法:
使用std::ios::sync_with_stdio(false);关闭与C标准输入输出流的同步
使用std::cin.tie(nullptr);解除cin和cout之间的绑定

#include<bits/stdc++.h>
using namespace std;
int n,q,k,a[1000001];
int main()
{while(scanf("%d%d",&n,&q) != EOF){for(int i=1; i<=n; i++)scanf("%d",&a[i]);for(int i=1; i<=q; i++){scanf("%d",&k);int l=1, r=n, mid;bool flag=false;while(l<r){mid = (l+r)/2;if(a[mid] < k) l = mid+1;else r = mid;if(a[mid]==k){flag = true;break;}}if(flag) printf("no\n");else printf("YES\n");}}return 0;
}

F:小清新的二倍问题加强版-二分-桶排

Problem F:
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
int a[200005]={0};
int main()
{int n;scanf("%d",&n);while(n--){int t,i=0,flag=0,maxx=0;do{scanf("%d",&t);if(t==0) break;a[t]++;if(a[t*2]==1) flag++;if(t%2==0&&a[t/2]==1) flag++;}while(1);printf("%d\n",flag);memset(a,0,sizeof(a));}return 0;
}

G:小清新切绳子-二分

Problem G:
在这里插入图片描述

#include <bits/stdc++.h>
#pragma GCC optimize(2)  //O2优化
using namespace std;
int l,r,n,m,k,ans,a[10001];
bool judge(int m)
{int s=0;for(int i=1;i<=n;i++) s=s+a[i]/m;return s>=k;
}
int main()
{ios::sync_with_stdio(false);while(cin>>n>>k){for(int i=1;i<=n;i++) cin>>a[i];l=0,r=10000000;while(l<=r){m=l+(r-l)/2;if(judge(m))ans=m,l=m+1;else r=m-1;}printf("%d\n",ans);}return 0;
}

H:书的复制-dp-二分

Problem:
这里是引用

#include<bits/stdc++.h>
using namespace std;
long long m,k;
long long a[505];
int x[505],y[505];
bool judge(int s) 
{int num=1,t=0;for(int i=m;i>=1;i--){if(t+a[i]>s) t=0,num++;t+=a[i];}return num<=k;
}
int find(int low,int high)
{int mid;while(low+1<high){mid=low+(high-low)/2;if(judge(mid)) high=mid;else low=mid;} return high;
}
int main()
{long long low=0,high=0;cin>>m>>k;for(int i=1;i<=m;i++){cin>>a[i];high+=a[i];low=max(low,a[i]);}int s=find(low,high);int t=0,num=1;for(int i=1;i<=k;i++) x[i]=y[i]=0;y[1]=m;for(int i=m;i>=1;i--){if(t+a[i]>s){t=0;x[num]=i+1;y[++num]=i;}t+=a[i];}x[num]=1;for(int i=k;i>=1;i--) cout<<x[i]<<" "<<y[i]<<endl;return 0;
}

I:数列分段-二分

Problem I:
这里是引用

#include <bits/stdc++.h>
using namespace std;
int k,n,a[100005];
int judge(int x)
{int sum=0;int i,flag=1;for(i=1; i<=n; i++){if(a[i]>x) return 0;sum+=a[i];if(sum>x){flag++;sum=a[i];}}return flag<=k;
}
int main()
{while(scanf("%d%d",&n,&k)!=-1){int i,sum=0;for(i=1; i<=n; i++){scanf("%d",&a[i]);sum+=a[i];}int low=0,high=sum,mid,ans=0;while(low<=high){mid=(low+high)>>1;if(judge(mid)==1){ans=mid;high=mid-1;}else low=mid+1;}printf("%d\n",ans);}return 0;
}

J:切绳子实数版-二分

Problem J:
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
double x,ans;
int n,k,l,r,m,a[N];
bool judge(int m)
{int s=0;for(int i=1;i<=n;i++) s=s+a[i]/m;return s>=k;
}
int main()
{ios::sync_with_stdio(false);while(cin>>n>>k){for(int i=1;i<=n;i++){cin>>x;a[i]=(int)(x*100);  //精度不够,乘法来凑}l=0,r=1e7;while(l<=r){m=l+(r-l)/2;if(m==0){ans=0;break;}if(judge(m))ans=1.0*m,l=m+1;else r=m-1;}printf("%.2lf\n",ans/100.0);}return 0;
}
http://www.dtcms.com/wzjs/421826.html

相关文章:

  • 迅当网络外贸网站建设980女儿考试没圈关键词
  • 广东佛山建网站百度关键词挖掘查询工具
  • 做老电影网站侵权吗热狗seo优化外包
  • 政府内网网站建设百度刷排名seo软件
  • 怎样让网站显示网站建设中网络推广公司运营
  • 网站url备案一站式营销推广
  • 怎样做国际网站平台网站的seo是什么意思
  • 公司网站备案资料微信管理系统平台
  • 普通的宣传网站用什么做怎样注册自己网站的域名
  • 西安好的皮肤管理做团购网站seo管理
  • 美的地产集团官方网站建设企业推广平台有哪些
  • 防疫站24小时在线咨询选择宁波seo优化公司
  • 销售型企业网站全媒体广告投放平台
  • 安康网站建设公司茂名seo顾问服务
  • 招聘做网站专业人员宁波抖音seo搜索优化软件
  • 松江网站建设代做关键词收录排名
  • 如何做网站毕业设计网站宣传文案范例
  • 获取网站访客qq号长沙网红打卡景点排行榜
  • 网站建设广告图片深圳网络推广大师
  • 大学国际化网站建设定制建站网站建设
  • 网站虚拟主机管理蜘蛛seo超级外链工具
  • 做印刷品去哪个网站北京网站优化专家
  • 英文网站建设技术身边的网络营销案例
  • 学校网站开发的项目背景上海百度竞价
  • 自己做的网站怎么放上网提高百度搜索排名
  • 秒速网站建设免费b2b信息发布网站
  • 做互联网的网站百度地图疫情实时动态
  • 广州十大网站建设宝安网站建设
  • 在线网站模板网站安全检测在线
  • 汕头制作网站软件百度关键词点击工具