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

网页设计做军事网站的感想如何做地推推广技巧

网页设计做军事网站的感想,如何做地推推广技巧,龙门石窟网站建设策划报告,开发网站需要多少钱2025年大一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/473565.html

相关文章:

  • 常州网站建设哪家便宜百度搜索竞价排名
  • 专业网站开发哪家好seo和sem的区别是什么?
  • 网站英文版怎么做外贸网站推广费用
  • 安溪住房和城乡建设网站网络营销和传统营销的区别
  • 海口做网站的公司有哪些微信营销推广
  • wordpress官网模板下载seo搜索引擎优化的内容
  • 网站公安备案网址专业制作网站的公司哪家好
  • 深圳互联网推广公司seo软件服务
  • 做网站用什么空间个人网站规划书模板
  • 网站建设结课百度seo关键词排名查询工具
  • 宿迁市住房城乡建设局网站西安百度推广怎么做
  • 淘宝优惠券网站怎么做国外网站推广公司
  • 什么网站做效果图最多举例说明seo
  • 一蓝网站建设seo公司优化方案
  • 《两学一做 榜样》网站互联网推广营销方案
  • 如何做系统集成公司网站网络营销方案例文
  • 掀浪云网站建设石家庄seo报价
  • 别人帮做的网站怎么修改站长工具日本
  • 网站开发费用一般是多少seo数据分析
  • 湖南长沙做网站站长工具ip地址
  • 健康管理 网站建设购物链接
  • 党建设计素材网站软文推广服务
  • 东莞塘厦网站制作谷歌paypal官网注册入口
  • 自做美食哪些网站西安seo盐城
  • 漳州做网站建设的公司域名注册要多少钱
  • 优秀的网站建设开发案例章鱼磁力链接引擎
  • 企业宣传片拍摄脚本宁波seo搜索平台推广专业
  • mysql数据做彩票网站seo整站优化服务教程
  • wordpress 显示当前位置百度seo排名点击
  • 哪些网站是django做的指数基金是什么意思