24年大一训练一(东北林业大学)

news2024/11/22 16:33:58

前言:

  周五晚上的训练赛,以后应该每两周都会有一次。

正文:

  Problem:A矩阵翻转:

#include<bits/stdc++.h>
using namespace std;
int a[55][55];
int main(){
	int n,m;
	while(cin>>n>>m){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		for(int j=1;j<=m;j++){
			for(int i=n;i>=1;i--){
				cout<<a[i][j]<<" ";
			}
			cout<<endl;
		}
		cout<<endl;
	}
	return 0;
} 

用二维数组模拟矩阵。

Problem:B守夜人的游戏:

#include<bits/stdc++.h>
using namespace std;
int a[25];
int main(){
	int n;
	while(cin>>n){
		long long ans=0;
		for(int i=1;i<=n;i++)cin>>a[i];
		for(int i=1;i<=n;i++){
			long long x=a[i];
			ans=max(x,ans);
			for(int j=i+1;j<=n;j++){
				x*=a[j];
				ans=max(x,ans);
			}
		}
		cout<<ans<<endl;
	}
}

暴力即可,注意答案要开long long不然会暴int。

Problem:C野人来袭:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int a[N],book[N];
int main(){
	long long n;
	while(cin>>n){\
		memset(book,0,sizeof(book));
		int ans=0;
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		for(int i=1;i<=n;i++){
			int s=0;
			if(book[i]==0){
				book[i]=1;s=a[i];ans++;
				for(int j=i+1;j<=n;j++){
					if(book[j]==0&&s>=a[j]){
						book[j]=1;s=a[j];
					}
				}
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

写这道题前我们先要搞清这道题的意思。题目中的拦截装置的高度在来拦截投来的武器后会变为这个武器高度(开始相当于无穷大),那么这个装置就无法再拦截更高的武器了,我们就需要第二个拦截装置,以此类推,我们就可以计算出装置的数量。又由装置的先后性我们可以知道所有武器中能被第一个装置拦截那么就一定不会被第二个装置拦截。那么我们先假设有n个装置,先对第一个装置分析,从第一个未拦截的武器开始,标记他可以依次序的拦截下武器(遍历数组找一串递减数列),再从第二个装置分析,从第一次标记后第一个未标记的武器开始,继续下去直至所有武器都被标记,这样就找出了答案。

Problem:D机器人:

#include<bits/stdc++.h>
using namespace std;
typedef struct num{
	int t,r;	
}robot;
robot a[30];
bool cmp(robot j,robot k){
	return j.r<=k.r;
}
int rev(int x){
	int d[10];
	int ans=0;
	int p=1;
	while(x){
		d[p]=x%10;
		x/=10;
		p++;
	}
	for(int i=p-1;i>=1;i--){
		ans+=d[i]*pow(10,p-i-1);
	}
	return ans;
}
int main(){
	int n;
	while(cin>>n){
		for(int i=1;i<=n;i++){
			cin>>a[i].t;
			a[i].r=rev(a[i].t);
		}
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<=n;i++){
			cout<<a[i].t;
			if(i!=n)cout<<" ";
		}
		cout<<endl;
	}
	return 0;
}

写一个反转数字的函数,在定义一个由数和它的反转数构成的结构体,写一个比较函数,排序后输出即可。

Problem:F美丽的黄山:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[100000],ans=0,max;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		if(i==1){
		max=a[i];
		ans++;}
		else{if(max<a[i]){
			max=a[i];
			ans++;
		}
		}
	}
	cout<<ans;
	return 0;
}

之前写过的题,见2023年林大(东北林业大学)ACM校赛大一组 个人题解(已完成)_python程序设计与问题求解东北林业大学-CSDN博客

Problem:E点的运动:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	while(n--){
		double x1,x2,y1,y2,x0,y0,vx,vy,t,ti,tj,tk,tl;
		cin>>x1>>y1>>x2>>y2>>x0>>y0>>vx>>vy>>t;
		//一般情况 
		if(vx!=0&&vy!=0){
			ti=(x1-x0)/vx,tj=(x2-x0)/vx,tk=(y1-y0)/vy,tl=(y2-y0)/vy;
			//无论t取何值都无法经过 
			if(max(ti,tj)<min(tk,tl)||max(tk,tl)<min(ti,tj)){
				cout<<"NO"<<endl;
				continue;
			}
			//存在t值使它能经过
			int flag=0;
			if(y0+vy*ti<=y1&&y0+vy*ti>=y2&&ti>=0&&ti<=t)flag=1;
			if(y0+vy*tj<=y1&&y0+vy*tj>=y2&&tj>=0&&tj<=t)flag=1;
			if(x0+vx*tk<=x2&&x0+vx*tk>=x1&&tk>=0&&tk<=t)flag=1;
			if(x0+vx*tl<=x2&&x0+vx*tl>=x1&&tl>=0&&tl<=t)flag=1;
			if(flag){
				cout<<"YES"<<endl;
			 	continue;
			}
			else{
				cout<<"NO"<<endl;
				continue;
			}
		}
		//特判vx与vy都为0的情况 
		if(vx==0&&vy==0){
			if((x0==x1||x0==x2)&&y0>=y2&&y0<=y1){
				cout<<"YES"<<endl;
			 	continue;
			}
			else if((y0==y1||y0==y2)&&x0>=x1&&x0<=x2){
				cout<<"YES"<<endl;
			 	continue;
			}
			else{
				cout<<"NO"<<endl;
				continue;
			}
		}
		//分别判断vx=0与vy=0的情况 
		if(vx==0){
			if(x0<x1||x0>x2){
				cout<<"NO"<<endl;
				continue;
			}
			else{
				tk=(y1-y0)/vy,tl=(y2-y0)/vy;
				if(min(tk,tl)>=0&&min(tk,tl)<=t){
					cout<<"YES"<<endl;
			 		continue;
				}
				else{
					cout<<"NO"<<endl;
					continue;
				}
			}
		}
		if(vy==0){
			if(y0<y2||y0>y1){
				cout<<"NO"<<endl;
				continue;
			}
			else{
				ti=(x1-x0)/vx,tj=(x2-x0)/vx;
				if(min(ti,tj)>=0&&min(ti,tj)<=t){
					cout<<"YES"<<endl;
			 		continue;
				}
				else{
					cout<<"NO"<<endl;
					continue;
				}
			}
		}
	}
	return 0;
}

重量级选手,这题需要用到一些平面几何的知识。见下

对于一个点来说,如果他前进方向上的直线经过i,j,k,l这四条直线的次序是横横竖竖或竖竖横横(i,j为竖,k,l为横),那么这条直线永远无法经过这个矩形(可以自己画图试一下),那么我们就可以从起点开始,计算出到达i,j,k,l的时间,判断i,j,k,l经过的次序。剩下的情况就需要根据t的大小来判断经过矩形的时间是否合法。注意要特判vx=0或vy=0以及都为0的情况。

补充:如果点在矩形内但没经过边的话不算经过(我又交了一遍代码尝试过了)

后记:

  欢迎大家来讨论、相互学习。

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

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

相关文章

1.Git是用来干嘛的

本文章学习于【GeekHour】一小时Git教程&#xff0c;来自bilibili Git就是一个文件管理系统&#xff0c;这样说吧&#xff0c;当多个人同时在操作一个文件的同时&#xff0c;很容易造成紊乱&#xff0c;git就是保证文件不紊乱产生的 包括集中式管理系统和分布式管理系统 听懂…

每日一题:用c语言写(输入n个数(n小于等于100),输出数字2的出现次数)

目录 一、要求 二、代码 三、结果 ​四、注意 一、要求 二、代码 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {//输入n个数&#xff08;n小于等于100&#xff09;&#xff0c;输出数字2的出现次数;int n[100] ;int num 0;int count 0;/…

加域报错:找不到网络路径

在尝试将计算机加入Windows域时&#xff0c;如果收到“找不到网络路径”的错误提示&#xff0c;可能的原因及解决方法如下&#xff1a; 网络连接问题&#xff1a;确保计算机与域控制器之间的物理网络连接是正常的&#xff0c;可以通过ping命令测试与域控制器的连通性。例如&…

【黑马头条】-day05延迟队列文章发布审核-Redis-zSet实现延迟队列-Feign远程调用

文章目录 昨日回顾今日内容1 延迟任务1.1 概述1.2 技术对比1.2.1 DelayQueue1.2.2 RabbitMQ1.2.3 Redis实现1.2.4 总结 2 redis实现延迟任务2.0 实现思路2.1 思考2.2 初步配置实现2.2.1 导入heima-leadnews-schedule模块2.2.2 在Nacos注册配置管理leadnews-schedule2.2.3 导入表…

【单片机家电产品学习记录--红外线】

单片机家电产品学习记录–红外线 红外手势驱动电路&#xff0c;&#xff08;手势控制的LED灯&#xff09; 原理 通过红外线对管&#xff0c;IC搭建的电路&#xff0c;实现灯模式转换。 手势控制灯模式转换&#xff0c;详细说明 转载 1《三色调光LED台灯电路》&#xff0c…

大数据学习第十一天(复习linux指令3)

1、su和exit su命令就是用于账户切换的系统命令 基本语法&#xff1a;su[-] [用户名] 1&#xff09;-表示是否在切换用户后加载变量&#xff0c;建议带上 2&#xff09;参数&#xff1a;用户名&#xff0c;表示切换用户 3&#xff09;切换用户后&#xff0c;可以通过exit命令退…

Redhat 7.9 安装dm8配置文档

Redhat 7.9 安装dm8配置文档 一 创建用户 groupadd -g 12349 dinstall useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba二 创建目录 mkdir /dm8 chown -R dmdba:dinstall /dm8三 配置/etc/security/limits.conf dmdba soft nproc 163…

二叉树结点关键字输出的递归算法实现

在计算机科学中&#xff0c;二叉树是一种重要的数据结构&#xff0c;广泛应用于各种算法和程序设计中。二叉树的遍历是二叉树操作中的基础问题之一&#xff0c;其目的是以某种规则访问二叉树的每个结点&#xff0c;使得每个结点被且仅被访问一次。给定一个具有n个结点的二叉树&…

idea端口占用

报错&#xff1a;Verify the connector‘s configuration, identify and stop any process that‘s listening on port XXXX 翻译&#xff1a; 原因&#xff1a; 解决&#xff1a; 一、重启大法 二、手动关闭 启动spring项目是控制台报错&#xff0c;详细信息如下&#xff…

C++的并发世界(四)——线程传参

1.全局函数作为传参入口 #include <iostream> #include <thread> #include <string>void ThreadMain(int p1,float p2,std::string str) {std::cout << "p1:" << p1 << std::endl;std::cout << "p2:" <<…

css3之动画animation

动画animation 一.优点二.定义和使用三.动画序列和解释四.常见属性及解释1.常见属性及应用2.速度曲线细节 五.简写&#xff08;名字和时间不能省略&#xff09;&#xff08;持续时间在何时开始的时间前&#xff09;&#xff08;简写中无animation-play-state)六.例子1.大数据热…

图神经网络实战(7)——图卷积网络(Graph Convolutional Network, GCN)详解与实现

图神经网络实战&#xff08;7&#xff09;——图卷积网络详解与实现 0. 前言1. 图卷积层2. 比较 GCN 和 GNN2.1 数据集分析2.2 实现 GCN 架构 小结系列链接 0. 前言 图卷积网络 (Graph Convolutional Network, GCN) 架构由 Kipf 和 Welling 于 2017 年提出&#xff0c;其理念是…

HCIA-RS基础-以太网设备工作原理

目录 以太网设备工作原理1. HUB 的工作原理2. L2 交换机的工作原理3. L3 交换机的工作原理 总结 以太网设备工作原理 以太网是一种常用的局域网技术&#xff0c;用于在计算机网络中传输数据。在以太网中&#xff0c;有几种常见的设备&#xff0c;包括 HUB、L2 交换机和 L3 交换…

Java入门学习Day04

本篇文章主要介绍了&#xff1a;如何输入数据、字符串拼接、自增自减运算符、类型转换&#xff08;int&#xff0c;double等&#xff09; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 一、键盘输入练习 Scanner是Java中的一个类&#xff0c;用于从控制台或文件中读…

java学习3

目录 面向对象——多态 什么是多态 多态的前提 多态有什么好处&#xff1f; 包 1.包的作用? 2.包名书写的规则? 3.什么时候需要导包?什么时候不需要导包? final 修饰符 权限修饰符 4种权限修饰符的范围 抽象方法和抽象类 接口 接口的定义和使用 接口中成员的特点…

JavaScript变量对象详解

正文 在JavaScript中&#xff0c;变量对象是执行上下文中的一个重要概念&#xff0c;它负责存储函数中的变量、函数声明和形参。了解变量对象对于理解JavaScript的作用域、作用域链以及变量的声明和提升至关重要。 1. 变量对象的定义 变量对象是在执行上下文创建阶段被创建的&a…

【前端面试3+1】04浏览器存储、flex布局属性和常用指令、 promise和async await区别、【验证回文串】

一、浏览器存储 1.1类型&#xff1a; 浏览器数据存储的方式有以下几种&#xff1a; Cookie&#xff1a;小型文本文件&#xff0c;存储在用户计算机上&#xff0c;可以通过浏览器传输到服务器。Web Storage&#xff1a;包括LocalStorage和SessionStorage&#xff0c;可以在浏览器…

【JavaEE初阶系列】——一万字带你了解 JUC常见类 以及 线程安全集合类(哈希表)

目录 &#x1f6a9;JUC(java.util.concurrent) 的常见类 &#x1f388;Callable 接口 &#x1f308;理解 Callable(相关面试题) &#x1f308;理解 FutureTask &#x1f4dd;线程创建方式 &#x1f388; ReentrantLock可重入锁 &#x1f308;ReentrantLock 优势&#x…

【Python BUG】ModuleNotFoundError: No module named ‘streamlit.cli‘

问题 streamlit做大模型前端demo&#xff0c;安装后不好使。 解决方案 参考&#xff1a; https://zhuanlan.zhihu.com/p/656164361 找到下面文件&#xff1a; 替换、修改内容&#xff1a; # from streamlit.cli import main from streamlit.web.cli import main原来是上边…

JavaScript_与html结合方式

JavaScript_语法 ECMAScript&#xff1a;客户端脚本语言的标准 1.基本语法 1.1 与html结合方式&#xff08;2种&#xff09; 1. 内部JS 定义<script>,标签体内容就是js代码 2. 外部JS 定义<script>,通过src属性引入外部的 js文件 注意&#xff1a; 1.<script>…