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

河南萌新联赛2025第(五)场:信息工程大学补题

文章目录

    • @[TOC](文章目录)
  • 前言
  • A.宇宙终极能量调和与多维时空稳定性验证下的基础算术可行性研究
  • B.中位数
  • C.中位数+1
  • F.中位数+4
  • G.简单题
  • H.简单题+
  • I.Re:从零开始的近世代数复习(easy)
  • K.狂飙追击
  • L.防k题

前言

这次萌新联赛考到了很多数学知识


A.宇宙终极能量调和与多维时空稳定性验证下的基础算术可行性研究

在这里插入图片描述
这题纯属文字题,只需要关注“经典线性叠加”
直接输出2就行了

B.中位数

在这里插入图片描述
在这里插入图片描述
这题开始对中位数的定义有点遗忘,后来想起来了,该题其实求的就是最大值与最小值的中位数

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
const int N=1e6+6;
int a[N];
signed main()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}if(n==1){cout<<a[1]/2;}else {sort(a+1,a+n+1);cout<<(a[1]+a[n])/2;}return 0;} 

C.中位数+1

在这里插入图片描述
这题就是求动态中位数,利用两个优先队列,一个是从小到大,一个是从大到小,大堆放小值,小堆放大值

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
const int N=1e5+6;
int a[N];
signed main()
{int n;cin>>n;priority_queue<int>pq;priority_queue<int,vector<int>,greater<int>>pq1;for(int i=1;i<=n;i++){cin>>a[i];pq.push(a[i]);if(pq.size()>pq1.size()+1)//为了让两个队列的长度差保持<=1,维护后面奇数时输出的大堆堆顶是中位数{pq1.push(pq.top());pq.pop();}if(!pq1.empty()&&pq.top()>pq1.top())//维护大堆放小值,小堆放大值{int z=pq.top();int y=pq1.top();pq.pop();pq1.pop();pq.push(y);pq1.push(z);}if(i%2==1)//奇数时输出大堆堆顶{cout<<pq.top()<<" ";}else//偶数时输出大堆堆顶+小堆堆顶然后/2{cout<<(pq.top()+pq1.top())/2<<" ";}}return 0;
}

F.中位数+4

在这里插入图片描述
这题其实就是十进制转化为其他进制过程

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
const int N=1e6+6;
int a[N];
signed main()
{int n,k;cin>>n>>k;int sum=0;if(n<k){cout<<"0";}else{while(n>1){if(n%k==0)//此时余数为0,所以++{sum++;n=n/k;}else{break;}}cout<<sum;}return 0;} 

G.简单题

在这里插入图片描述
在这里插入图片描述
这个是行列式,当时看一直以为+1就行了,还是知道的太少了
在这里插入图片描述
最后计算知道,该题为一个斐波那契数列,对二取模后就有一个规律,见代码

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
signed main()
{int n;cin>>n;if(n%3==1){cout<<"1";}else{cout<<"0";}return 0;
}

H.简单题+

在这里插入图片描述
这个就是求斐波那契数列前n项和
其有一个规律:s[n]=f[n+2]-1
所以求n后面第二项-1就行了,对于求斐波那契数列也有规律
n为奇数时:
在这里插入图片描述n为偶数时:
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
unordered_map<int,int>mp;
const int mod=998244353;
int mc(int x)
{if(mp.count(x)){return mp[x];}if(x==0)return 0;else if(x==1||x==2)return 1;else{int k=x/2;int a=mc(k);int b=mc(k+1);if(x%2!=0){return mp[x]=(b*b%mod+a*a%mod)%mod;//奇数时}else{return mp[x]=(a*((2*b%mod-a+mod)%mod))%mod;//偶数时}}
}
signed main()
{int n;cin>>n;if(n==1)cout<<"1";else if(n==2)cout<<"2";else{int sum=mc(n+2)-1+mod;sum=sum%mod;cout<<sum;}return 0;
}

I.Re:从零开始的近世代数复习(easy)

在这里插入图片描述
在这里插入图片描述
这题真的是服我自己了,当时根本没看到、k=2,本来想用共同祖先写,当时想着有好几个怎么求,没有想到后面出现了k=2。这题就是利用共同祖先写,利用倍增找到两个点的最近共同祖先,然后在遍历整个树的时候提前定义一个数组代表从根节点到该点权值,最和简单相加相减就行了

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
const int N=1e5+6;
int a[N];
int b[N]={0};
int c[N];
int h[N]={0};
int fa[N][25];
vector<int>ve[N];
int n;
void dfs(int fu,int zi)//遍历整个树
{h[zi]=h[fu]+1;fa[zi][0]=fu;c[zi]=c[fu]+a[fu];//计算根节点到该点的权值for(int i=1;i<=20;i++){fa[zi][i]=fa[fa[zi][i-1]][i-1];}for(auto it:ve[zi]){dfs(zi,it);}
}
int lca(int a,int b)//倍增求LCA
{if(h[a]<h[b]){swap(a,b);}for(int i=20;i>=0;i--){if(h[fa[a][i]]>=h[b]){a=fa[a][i];}}if(a==b){return a;}for(int i=20;i>=0;i--){if(fa[a][i]!=fa[b][i]){a=fa[a][i];b=fa[b][i];}}return fa[a][0];
}
signed main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<n;i++){int u,v;cin>>u>>v;b[v]++;//计算入度,找根节点ve[u].push_back(v);}int x;for(int i=1;i<=n;i++){if(b[i]==0){x=i;}}dfs(0,x);int q;cin>>q;while(q--){int k;cin>>k;int p,q;cin>>p>>q;int z=lca(p,q);int z1=c[p]+c[q]-c[z]+a[p]+a[q]-a[z];cout<<z1<<endl;}return 0;} 

K.狂飙追击

在这里插入图片描述
由于它这个m是变化的,所以不能只进行一些简单的判断,利用dfs搜索,对x,y分别搜索,如果符合就计算最少步数

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
int sx,sy,tx,ty;
bool bl=0;
int maxx=INT_MAX;
void dfs(int x,int y,int z)
{if(x>tx||y>ty){return ;}if(x==tx&&y==ty){bl=1;maxx=min(maxx,z);return ;}int m=max(x,y);int x1=x+m;int y1=y+m;dfs(x1,y,z+1);dfs(x,y1,z+1);
}
signed main()
{cin>>sx>>sy>>tx>>ty;if(sx>tx||sy>ty){cout<<"-1";}else{dfs(sx,sy,0);if(bl==1){cout<<maxx;}else{cout<<"-1";}}return 0;
}

对dfs遍历举个例
从1,2到4,5
在这里插入图片描述

L.防k题

在这里插入图片描述
在这里插入图片描述
这题就是一个二分答案题,先套模板再判断check成立条件

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
#define endl '\n'
const int N=1e6+6;
int n,m,z,p,q;
int check(int mid)
{int i=0;int n1=n,m1=m,z1=z,p1=p,q1=q;while(p1>0){for(int i=1;i<=3;i++){n1-=q;if(n1<=0){mid--;n1=n;}}if(mid<=0)//很重要,因为在上面的循环中可能减去多次,导致mid<0,所以不能只判断其是否等于零{return 0;}p1-=mid*(i*z+m1);i++;}return 1;   
}
signed main()
{cin>>n>>m>>z>>p>>q;int l=1;int r=N;while(l<r){int mid=(l+r)/2;if(check(mid)==1){r=mid;}else{l=mid+1;}}cout<<r;return 0;
}

http://www.dtcms.com/a/331291.html

相关文章:

  • 飞书文档定时自动同步至百炼知识库
  • ESP32 I2S音频总线学习笔记(六):DIY蓝牙音箱教程
  • CVPR 2025 | 北大团队SLAM3R:单目RGB长视频实时重建,精度效率双杀!
  • 在mysql> 下怎么运行 .sql脚本
  • C#WPF实战出真汁00--项目介绍
  • 极速开发新体验_Vite构建工具详解
  • 使用YOLOv13进行钢板表面缺陷检测
  • Python之Django使用技巧(附视频教程)
  • 云手机都具有哪些特点?
  • Ollama如何分别使用2张H100GPU和4张A100部署GPT-OSS-120B全指南:硬件配置与负载均衡实战
  • Linux命令大全-zip命令
  • 嵌入式学习(day27)多任务进程
  • 接口测试与常用接口测试工具详解
  • CMake message()使用指南
  • SpringMVC(详细版从入门到精通)未完
  • 微前端-解决MicroApp微前端内存泄露问题
  • python bokeh
  • 为什么在函数内部,有时无法访问外部的变量?
  • 从0-1学习Java(三)快速了解字符串、数组、“==“与equals比较
  • 基于STM32的Air780短信发送
  • 【每天一个知识点】生物的数字孪生
  • C++模板特化、分离编译
  • 力扣-295.数据流的中位数
  • InfiniBand 与 RoCE 协议介绍
  • 激光雷达与可见光相机的图像融合
  • C++ vector越界问题完全解决方案:从基础防护到现代C++新特性
  • 【代码随想录day 20】 力扣 538.把二叉搜索树转换为累加树
  • 医疗洁净间的“隐形助手”:富唯智能复合机器人如何重塑手术器械供应链
  • 【大模型微调系列-01】 入门与环境准备
  • 机器翻译:回译与低资源优化详解