国庆普及模拟赛-1 赛后总结

news2024/11/20 18:48:40

题目链接:

file:///D:/C++/%E9%9B%86%E8%AE%AD%E6%B5%8B%E8%AF%95/1001/2022%20-%20J2.pdf

 

T1:隔离

题意如图。需要求所有时间的最短。

思路:

不需要进行一次次枚举,先算出总共要办事的总时间sum,如果某一次时间超过240(需要隔离)就不回来了(反正也要隔离就一直干完了在回来)如果一直没有需要隔离,就进行分类

最后要判断来回所需要的时间和如果一直呆在B处隔离所花时间的大小

赛时代码

#include<bits/stdc++.h>
using namespace std;
int a[100050];
int main() {
	freopen("isolate.in","r",stdin);
	freopen("isolate.out","w",stdout);
	int n,ans=400,now=0;
	cin>>n;
	for(int i=1; i<=n; i++)cin>>a[i];
	if(n==1) 
		if(a[1]>=240) ans+=10080+a[1];
		else 	ans+=a[1];
	else if(n==2) 
		if(a[1]>=240) 		ans+=10080+a[1];
		else   if(a[2]>=240) 	ans+=+10080+a[2];
		else if(a[1]+a[2]<240)ans+=a[1]+a[2];
		else ans+=a[1]+a[2]+400;
	else
		for(int i=1; i<=n; i++) {
			if(a[i]>=240){
				ans=ans+400+10080+a[i];	
			}else if(now+a[i]<240) {
				ans+=a[i];
				now+=a[i];
			} else {
				ans=ans+a[i]+400;
				now=a[i];
			}
		}
	cout<<ans;
	return 0;
}//思路很混乱,看不懂了

(最后六十分

正确代码

#include<bits/stdc++.h>
using namespace std;
int a[100050],n,sum,now,flag,cnt;
int main() {
	freopen("isolate.in","r",stdin);//
	freopen("isolate.out","w",stdout);
	cin>>n;
    cnt=1;
	for(int i=1; i<=n; i++){
		cin>>a[i];//输入每次所需的时间
		if(a[i]>=240)flag=1;//如果有大于240(需要隔离的,就用flag标记一下
		sum+=a[i];//统计所有办事时间和
	}
	if(flag==1){//如果有>240的
		cout<<sum+10480;//直接一直呆在B,输出
		return 0;//就不需要后面的判断了
	}
	for(int i=1;i<=n;i++)//进行模拟n次办事
		if(now+a[i]>=240){//判断可不可以进行分组(一次干多件事),如果目前超过了
			cnt++;//组数++
			now=a[i];//之前的分组清空,新起一组
		}else		now+=a[i];//继续当前分组
	cout<<min(cnt*400,10480)+sum;//判断是来回跑还是一直呆在B时间大
	return 0;
}

 

T2和积

题目想法:

看到这道题,第一想法就是从M到N进行模拟(只能这样)因为是多测,所以在时间复杂度里还要乘上一个测试数据T。每次计算一个数的位数和和位数积需要复杂度一个常数10

所以时间复杂度为O(10NT)

这里面N和T都是不能优化的,只有常数可以优化。这里考虑使用记忆化,预处理每个数的位数和和位数积。优化后时间复杂度就是O(NT)

本题为多测!!!输出要换行!!!

PAC(赛时代码微改)

#include<bits/stdc++.h>//70分!为预处理!!!
using namespace std;
int S(int k) {
	int sum=0;
	while(k) {
		sum+=k%10;
		k/=10;
	}
	return sum;
}
int J(int R) {
	int ans=1;
	while(R) {
		ans*=R%10;
		R/=10;
	}
	return ans;
}
int  main() {
	freopen("sump.in","r",stdin);
	freopen("sump.out","w",stdout);
	int N,m,n,k,ans,cnt,mn;
	cin>>N;
	while(N--){
		cin>>m>>n>>k;
		ans=0,cnt=1,mn=-1;
		for(int i=m; i<=n; i++)
			if(S(i)==k&&J(i)> mn) {
				mn=J(i);
				ans=i;
			}
		cout<<ans<<" "<<mn<<endl;
	}
	return 0;
}

AC(稍微加了预处理) 

#include<bits/stdc++.h>
using namespace std;
const int N=5e6+10;
int a[N],b[N],T,m,n,k,ans,cnt,mn;
int S(int k) {
	int sum=0;
	while(k)	sum+=k%10,k/=10;
	return sum;
}
int J(int R) {
	int ans=1;
	while(R) 	ans=ans*(R%10),R/=10;
	return ans;
}
void solve() {
	cin>>m>>n>>k;
	ans=0,cnt=1,mn=-1;
	for(int i=m; i<=n; i++)//重复枚举每个n到m
		if(a[i]==k&&b[i]> mn) {//如果满足条件切乘积和max,就替换
			mn=b[i];
			ans=i;//记录满足条件的i
		}
	cout<<ans<<" "<<mn<<endl;
	return ;
}
int  main() {

	freopen("sump.in","r",stdin);
	freopen("sump.out","w",stdout);

	cin>>T;

	for(int i=1; i<=5e6; i++) {//预处理每个数的乘积和位数和
		a[i]=S(i);
		b[i]=J(i);
	}
	while(T--) {//进行多组数据
		solve();
	}
	return 0;
}

 

T3 电梯停靠

 思路:

像解一个绝对值方程,使用零点分段法。

例:        |x-5|+|x-7|

算当x<5、5<x<7,7<x(部分包含等于)

所以x点到各个上下车地点最小值就是最大最小点的中间值。(不然绝对会TLE 

赛时代码:

纯模拟,(要么wa,要么tle)最后20分

#include<bits/stdc++.h>

using namespace std;

const int N=5*1e5+5;
int a[5][N];

int main() {
	freopen("lift.in","r",stdin);
	freopen("lift.out","w",stdout);
	int n,m,bianhao=0,juli=N,ans;
	cin>>n>>m;
	for(int i=1; i<=m; i++) {
		cin>>a[1][i]>>a[2][i];
	}
	for(int x=1; x<=n; x++,ans=0) {
		for(int i=1; i<=m; i++) {
			ans=ans+abs(x-a[1][i])+abs(a[1][i]-a[2][i])+abs(a[2][i]-x);
		}
		if(ans<juli) {
			bianhao=x;
			juli=ans;
		}
	}
	cout<<bianhao<<" "<<juli;
	return 0;
}

AC代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5;
int n,m,a[N],A[N],b[N],B[N];
int _abs(int x){
	return x>0?x:-x;
}

signed main() {
	freopen("lift.in","r",stdin);
	freopen("lift.out","w",stdout);
	cin>>n>>m;
	int sum=0;
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%lld %lld",&x,&y);
		sum+=_abs(x-y)*2;
		a[x-1]+=2,b[y+1]+=2;
	}
	for(int i=n;i>=1;i--){
		a[i]+=a[i+1];
		A[i]=A[i+1]+a[i];
	}
	int minn=1e18,idx;
	for(int i=1;i<=n;i++){
		b[i]+=b[i-1];
		B[i]=B[i-1]+b[i];
		int res=A[i]+B[i];
		if(res<minn) minn=res,idx=i;
	}
	cout<<idx<<" "<<minn+sum;
	return 0;
}

T4 分组选数

不会改!

总结:

本次模拟需要重视的细节很多,但大多数我没注意到。

在今后的比赛(模拟)中,要注意:

1,能多拿分就多拿分(争取前两题暴力模拟多得分,优化不重要(可能会错))后面的第四题,能A少数测试点,争取拿1~20分。

2,前面的题争取在前面时间内改完,不要遗留到后面

3,先读懂题在开始写,不要慌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql数据库~~条件查询、分页查询、修改操作

目录 1.表的其他操作 1.1创建一个表 1.2对于表的排序 1.3修改某一列的名字 1.4使用表达式 1.5删除列的重复项 1.6多个列进行排序 2.条件查询 2.1条件查询语句 2.2比较运算符 2.3条件查询展示 2.4条件查询的先后问题 2.5逻辑运算符使用 2.6模糊查询匹配 2.7对于nu…

【2022工业3D异常检测文献】BTF: 结合手工制作的3D描述和颜色特征的异常检测方法

BACK TO THE FEATURE: CLASSICAL 3D FEATURES ARE (ALMOST) ALL YOU NEED FOR 3D ANOMALY DETECTION 1、Background BTF(Back to the Feature)&#xff0c;一种 结合手工制作的3D表示&#xff08;FPFH&#xff09;和基于深度颜色特征提取&#xff08;PatchCore&#xff09; 的…

关于未知物检测设备和方法(测未知物成分含量)

未知物检测是一项涉及多个学科和技术的复杂工作&#xff0c;它对于新材料的研究、开发、生产以及质量控制具有重要意义。以下是一些常用的未知物检测方法和设备&#xff1a; 光谱分析&#xff1a;包括红外光谱&#xff08;IR&#xff09;、核磁共振&#xff08;NMR&#xff09;…

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

无源码实现免登录功能

因项目要求需要对一个没有源代码的老旧系统实现免登录功能&#xff0c;系统采用前后端分离的方式部署&#xff0c;登录时前端调用后台的认证接口&#xff0c;认证接口返回token信息&#xff0c;然后将token以json的方式存储到cookie中&#xff0c;格式如下&#xff1a; 这里有…

10月1日星期二今日早报简报微语报早读

10月1日星期二&#xff0c;国庆节&#x1f1e8;&#x1f1f3;&#xff0c;农历八月廿九&#xff0c;早报#微语早读。 1、A股暴涨刷新多项历史纪录&#xff1a;两市成交总额近2.6万亿元&#xff0c;创指涨逾15%&#xff1b; 2、文旅部&#xff1a;常年不超过最高承载量的旅游景…

Docker 安装 Citus 单节点集群:全面指南与详细操作

Docker 安装 Citus 单节点集群&#xff1a;全面指南与详细操作 文章目录 Docker 安装 Citus 单节点集群&#xff1a;全面指南与详细操作一 服务器资源二 部署图三 安装部署1 创建网络2 运行脚本1&#xff09;docker-compose.cituscd1.yml2&#xff09;docker-compose.cituswk1.…

zi2zi-chain: 中国书法字体图片生成和字体制作的一站式开发

在zi2zi-pytorch的基础上&#xff0c;做了进一步的修复和完善。本项目github对应网址为https://github.com/not-bald-owl/zi2zi-chain/tree/master。 修复部分为&#xff1a;针对预处理部分的函数弃用、生僻字无法生成、训练和推理部分单卡支持改为多卡并行、以及扩展从本地的…

过去8年,编程语言的流行度发生了哪些变化?PHP下降,Objective-C已过时

前天有一个汇总9个不同排名数据的“地表最强”编程语言排行榜&#xff0c;为了更好地理解语言流行度的变化&#xff0c;作者将2016年的类似调查结果与2024年的数据进行了比较。 虽然2016年的调查只包含6个排名&#xff0c;但它仍然提供了宝贵的参考数据。 我们来看看详细的情…

C++之String类(下)

片头 嗨喽~ 我们又见面啦&#xff0c;在上一篇C之String类&#xff08;上&#xff09;中&#xff0c;我们对string类的函数有了一个初步的认识&#xff0c;这一篇中&#xff0c;我们将继续学习string类的相关知识。准备好了吗&#xff1f;咱们开始咯~ 二、标准库中的string类 …

业务封装与映射 -- AMP BMP GMP

概述 不同单板支持不同的封装模式&#xff0c;主要包括: AMP (Asynchronous Mapping Procedure&#xff0c;异步映射规程)BMP (Bit-synchronous Mapping Procedure&#xff0c;比特同步映射规程)GMP (Generic Mapping Procedure&#xff0c;通用映射规程) AMP/BMP&#xff1a…

Qt_绘图

目录 1、绘图核心类 2、QPainter类的使用 2.1 绘制线段 2.2 绘制矩形 2.3 绘制圆形 2.4 绘制文本 3、QPen类的使用 3.1 使用画笔 4、QBrush类的使用 4.1 使用画刷 5、绘制图片 5.1 测试QPixmap 5.1.1 图片移动 5.1.2 图标缩小 5.1.3 旋转图片 5.1.4 将…

【逐行注释】MATLAB下的粒子滤波代码(三维状态与观测,可直接复制粘贴到MATLAB上面运行)

文章目录 程序设计1. 介绍2. 系统模型3. 算法步骤源代码(直接复制到MATLAB上面可以运行)运行结果程序设计 1. 介绍 粒子滤波(Particle Filter, PF)是一种基于贝叶斯理论的递归估计方法,广泛用于动态系统状态的估计和跟踪。该方法通过一组粒子(即假设的状态)及其权重来…

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

5款惊艳全网的AI写作论文神器!从此告别写作烦恼!

在当今的学术研究和写作领域&#xff0c;撰写高质量的论文是一项挑战性的任务。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;AI论文写作工具逐渐成为帮助学者和学生提高写作效率的重要工具。这些工具不仅能够提高写作效率&#xff0c;还能帮助研究者生成高质量的论…

ECharts 快速使用

最终效果 使用介绍 echarts图表的绘制&#xff0c;大体分为三步&#xff1a; 根据 DOM实例&#xff0c;通过 echarts.init方法&#xff0c;生成 echarts实例构建 options配置对象&#xff0c;整个echarts的样式&#xff0c;皆有该对象决定最后通过实例.setOption方法&#xf…

【测试-BUG篇】软件测试的BUG知识你了解多少呢?

文章目录 1. 软件测试的生命周期2. BUG3. BUG的生命周期4. 与开发人员起争执怎么办 1. 软件测试的生命周期 &#x1f34e;软件测试 贯穿整个软件的生命周期&#xff1b; &#x1f34e;软件测试的生命周期是指测试流程&#xff1b; ①需求分析 用户角度&#xff1a;软件需求是…

C++:一文搞懂友元类(friend class)

C的友元&#xff08;friend&#xff09;是个很重要的概念&#xff0c;好些朋友对此却很迷惑&#xff0c;本文将对友元类&#xff08;friend class&#xff09;详细讲解&#xff0c;一文搞懂。 友元的特性&#xff1a; 1、使用friend修饰的友元类可以访问本类的私有成员(priva…

中国电信解锁万亿参数大模型:TeleAI的创新与突破

首个由万卡集群训练出来的万亿参数大模型&#xff0c;已被一家央企解锁。 具体而言&#xff0c;为了推动纯国产人工智能的探索&#xff0c;带来这条新路径的正是中国电信人工智能研究院&#xff08;TeleAI&#xff09;。 该研究院由中国电信集团的CTO、首席科学家兼院长李学龙…

坡印廷矢量(也叫功率流密度,对面积积分就是功率)

坡印廷矢量在静电场&#xff0c;静磁场&#xff0c;恒定电流的电场&#xff0c;和时变电磁场中的表达式不同。 我们看时变电磁场的坡印廷矢量 坡印廷矢量就等于这个&#xff0c;其中的电场和磁场是实数表示的 坡印廷矢量用复数形式的场求 这里的E和H是复数表示的场&#xff0…