每周一练(四)题解

B题-求素数

思路

数据太多,暴力会超时,所以先打表就好啦。

代码

#include<cstring> 
#include<cstdio>
#include<iostream>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;
int a[16001];


int main()
{
	for(int i=3;i<=16000;i+=2){
		int j;
		if(i%2==0)
		    break;
		for(j=3;j<=i/2;j+=2)
		    if(i%j==0)
		        break;
		if(j>i/2)
		    a[i]=1;
	}
	int i=1,n;
	while(cin>>n&&n>0){
		cout<<i++<<": ";
		if(a[n])
		    cout<<"yes"<<endl;
		else
		    cout<<"no"<<endl;
	}
	return 0;
}

C题

思路

根据这样那样的物理公式一通乱搞得出y = x*tan(a)-(1+tan(a)*tan(a))*(g*x*x)/(2*v*v)
然后用三分求出公式中角a的最大值,最后用二分具体求出角a

代码

#include<cstring> 
#include<cstdio>
#include<iostream>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;
#define g 9.8
#define exps 1e-8
#define PI acos(-1)
double x,y,v;
#define fll(a) x*tan(a)-(1+tan(a)*tan(a))*(g*x*x)/(2*v*v) 

int main()
{
	int n;
	cin>>n;
	while(n--){
		cin>>x>>y>>v;
		double le=0,ri=PI/2.0,lmid,rmid;
		while(fabs(ri-le)>exps){
			lmid=(ri+le)/2;
			rmid=(ri+lmid)/2;
			if(fll(lmid)>fll(rmid))
			    ri=rmid;
			else le=lmid;
		}
		if(fll(ri)<y){
			cout<<"-1"<<endl;
			continue;
		}
		double mid;
		le=0;
		mid=(le+ri)/2;
		while(fabs(fll(mid)-y)>exps){
			mid=(ri+le)/2;
			if(fll(mid)>y) ri=mid;
			else le=mid;
		}
		printf("%.6lf\n",mid);
	}
	return 0;
}

D题

思路

找到每个矩形的最左边和最右边,计算出矩形的大小然后找到最大的。
找最左边与最右边用的是DP,比第i个高的能选择的边界i一定能达到。

代码

#include<cstring> 
#include<cstdio>
#include<iostream>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;
long long a[100010],l[100010],r[100010],n;

void getl(){
	for(int i=1;i<n;i++){
		int ll=i;
    	while(ll-1>=0&&a[ll-1]>=a[i]) ll=l[ll-1];
    	l[i]=ll;
	}
	return;
}

void getr(){
	r[n-1]=n-1;
	for(int i=n-2;i>=0;i--){
		int rr=i;
		while(rr+1<n&&a[rr+1]>=a[i]) rr=r[rr+1];
		r[i]=rr;
	}
	return;
}


int main()
{
	while(cin>>n&&n){
		for(int i=0;i<n;i++)
			cin>>a[i];
		getl();getr();
		long long sum=(r[0]-l[0]+1)*a[0];
		for(int i=1;i<n;i++)
		    if(sum<(r[i]-l[i]+1)*a[i])
		        sum=(r[i]-l[i]+1)*a[i];
		cout<<sum<<endl;
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值