码蹄集部分题目(2024OJ赛18期;并查集+ST表+贪心)
1🐋🐋史莱姆融合(钻石;并查集)
时间限制:1秒
占用内存:128M
🐟题目描述



![]()
🐟题目思路
这道题目使用并查集,同一集合的所有元素的最顶上的祖父节点是统一的。这里记录每个集合的最左端元素(最顶上的祖父节点)和最右端元素,便于集合更新。
MT3052 史莱姆融合_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,fa[N],so[N],nxt[N];//集合最左端fa,集合最右端so,下一个元素nxt
int find(int x) {return x==fa[x]?x:(fa[x]=find(fa[x]));}//找集合最左端元素
void merge(int i,int j)//集合合并
{int x=find(i),y=find(j);//两个集合的最左端if(x!=y){nxt[so[x]]=y;//第一个集合的最右端的下一个元素就是第二个集合的最左端元素fa[y]=x;//更新最左端so[x]=so[y];//更新最右端}
}
int main( )
{int x,y;cin>>n;for(int i=1;i<=n;i++) fa[i]=so[i]=i;for(int i=0;i<n-1;i++){cin>>x>>y;merge(x,y);}for(int i=find(1);i;i=nxt[i]) cout<<i<<" ";return 0;
}
2🐋🐋区间最小值(钻石;ST表)
时间限制:1秒
占用内存:128M
🐟题目描述




🐟题目思路
ST表用于解决区间最值问题,基于分治和倍增思想。
-
ST表中定义了一个二维数组mn[N] [M],mn[i] [j]表示区间[i, i + 2^j + 1]内的最大值
-
根据倍增思想,给出状态转移方程mn[i] [j] = max(mn[i] [j - 1], mn[i + 2^j - 1^] [j - 1])
ST表详解推荐:ST表详解-CSDN博客
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int m,n,a[N],mn[N][50],Lg[N],ans;
void pre()
{Lg[1]=0;for(int i=2;i<=n;i++) Lg[i]=Lg[i>>1]+1;//求对数,得到每段的区间结束位置
}
void ST_create()
{for(int i=1;i<=n;i++) mn[i][0]=a[i];//mn[i][j],当j为0时,区间长度2^j为0,则区间最大值就是区间的唯一元素a[i]for(int j=1;j<=Lg[n];j++)//之前已经计算过区间长度为0的情况,这里区间长度由2^1 到 2^Lg[n] {for(int i=1;i<=n-(1<<j)+1;i++)//确定区间左端点,区间范围为[i, i + 2^j - 1],所以 i + 2^j - 1 <= n{mn[i][j]=min(mn[i][j-1],mn[i+(1<<(j-1))][j-1]);//状态转移方程}}
}
int ST_query(int l,int r)//区间查询
{int k=Lg[r-l+1];return min(mn[l][k],mn[r-(1<<k)+1][k]);
}
int main( )
{int a1,a2;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];pre();ST_create();while(m--){cin>>a1>>a2;cout<<ST_query(a1,a2)<<endl;}return 0;
}
3🐋🐋区间gcd(钻石;ST表)
时间限制:1秒
占用内存:64M
🐟题目描述





🐟题目思路
这道题目也是使用ST表,pre、create和query除了将min改成gcd没有变化,gcd使用递归的方式求取。
MT3051 区间gcd_哔哩哔哩_bilibili
🐟代码
用时少:
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int m,n,a[N],mn[N][50],Lg[N],ans;
int read()
{int ans=0;char ch=getchar();while(ch<'0'||ch>'9') ch=getchar();while(ch>='0'&&ch<='9'){ans=ans*10+ch-'0';ch=getchar();}return ans;
}
void write(int x)
{if(x>=10) write(x/10);putchar(x%10+'0');
}
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
void pre()
{Lg[1]=0;for(int i=2;i<=n;i++) Lg[i]=Lg[i>>1]+1;//求对数,得到每段的区间结束位置
}
void ST_create()
{for(int i=1;i<=n;i++) mn[i][0]=a[i];//mn[i][j],当j为0时,区间长度2^j为0,则区间最大值就是区间的唯一元素a[i]for(int j=1;j<=Lg[n];j++)//之前已经计算过区间长度为0的情况,这里区间长度由2^1 到 2^Lg[n] {for(int i=1;i<=n-(1<<j)+1;i++)//确定区间左端点,区间范围为[i, i + 2^j - 1],所以 i + 2^j - 1 <= n{mn[i][j]=gcd(mn[i][j-1],mn[i+(1<<(j-1))][j-1]);//状态转移方程}}
}
int ST_query(int l,int r)//区间查询
{int k=Lg[r-l+1];return gcd(mn[l][k],mn[r-(1<<k)+1][k]);
}
int main( )
{int a1,a2;n=read();m=read();for(int i=1;i<=n;i++) a[i]=read();pre();ST_create();while(m--){a1=read();a2=read();ans=ST_query(a1,a2);write(ans);putchar('\n');}return 0;
}
占内存少:
摘自——小码_63705
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int gcd(int a,int b)
{if(!b) return a;else return gcd(b,a%b);
}
int dp[N][20],a[N],len[N];
int query(int l,int r)
{int k=len[r-l+1];return gcd(dp[l][k],dp[r-(1<<k)+1][k]);
}
inline int read()
{char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int main( )
{len[0]=1;for(int i=2;i<N-2;i++) len[i]=len[i/2]+1;int n;n=read();int ncase;ncase=read();for(int i=1;i<=n;i++) {*(a+i)=read();dp[i][0]=a[i];}for(int j=1;j<=len[n];j++){for(int i=1;i<=n;i++){dp[i][j]=gcd(dp[i][j-1],dp[i+(1<<j-1)][j-1]);}}while(ncase--){int l=read(),r=read();printf("%d\n",query(l,r));}return 0;
}
4🐋🐋检测敌人(钻石;贪心)
时间限制:1秒
占用内存:128M
🐟题目描述




🐟题目思路
贪心思路:一个设备检测尽可能多的敌人。
不同于用设备找敌人,这道题目需要用敌人找设备,以敌人为圆心画圈,找到可用检测到我的x轴上的所有范围,那么在这个范围内放设备都可以检测到我。
贪心的实现就是通过对比两个区间是否有重叠,得知可否共用设备。
【码蹄集进阶塔全题解08】算法基础:贪心 MT2080 – MT2092_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
struct node
{double x,y,l,r;bool v;
}e[N];
bool cmp(node a,node b)
{return a.r<b.r;
}
int main( )
{int n;double r;while(cin>>n>>r&&!(n==0&&r==0)){bool flag=false;memset(e,0,sizeof(e));for(int i=1;i<=n;i++){cin>>e[i].x>>e[i].y;if(r*r<e[i].y*e[i].y) flag=true;//以每个敌人为圆心画圆,圆圈范围内的仪器能检测到敌人else//计算能检测到敌人的x轴坐标范围{e[i].l=-sqrt(r*r-e[i].y*e[i].y)+e[i].x;e[i].r=sqrt(r*r-e[i].y*e[i].y)+e[i].x;e[i].v=false;}}if(flag){cout<<-1<<endl;continue;}sort(e+1,e+1+n,cmp);int ans=0;for(int i=1;i<=n;i++){if(e[i].v==false)//表示这个敌人还没能被检测到{for(int j=i;j<=n;j++){if(e[j].v==false&&e[j].l<=e[i].r&&e[j].r>=e[i].r) e[j].v=true;//我们有重叠区域,用一个设备就行了}e[i].v=true;ans++;//所需设备数加一}}cout<<ans<<endl;}return 0;
}
5🐋🐋小码哥的福利(钻石;贪心)
时间限制:1秒
占用内存:128M
🐟题目描述




🐟题目思路
贪心思路:每次分甜品都要尽可能地达到平均值。
这道题目的思路就是,将所有手下按耐受度排序,将所有甜品按甜度排序;找到能吃掉这个甜品的手下,让他全部吃掉;然后对所有手下吃掉的甜品数量进行分配。根据耐受度限制,甜品只能往右分,也就是往耐受度高的手下那里分,那么每次都计算出来从我到最后一个手下我们吃的甜品数量的平均值,然后如果我吃的比这个平均值多,就把多的甜品分给下一个人,以此类推我从头遍历到尾。
【码蹄集进阶塔全题解08】算法基础:贪心 MT2080 – MT2092_哔哩哔哩_bilibili
🐟代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=55;
ll n,m,a[N],sum[N],ans;
struct node
{ll b,c;
}sweet[N];
int cmp(node a,node b){return a.b<b.b;}
ll add(int l,int r)
{ll ans=0;for(int i=l;i<=r;i++) ans+=sum[i];return ans;
}
int main( )
{cin>>n;ll maxm=0;for(int i=1;i<=n;i++){cin>>a[i];maxm=max(maxm,a[i]);}sort(a+1,a+1+n);cin>>m;for(int i=1;i<=m;i++){cin>>sweet[i].b;if(sweet[i].b>maxm)//甜品的甜度超过手下的最大甜品耐受度了,无法吃完{cout<<-1<<endl;return 0;}}for(int i=1;i<=m;i++) cin>>sweet[i].c;sort(sweet+1,sweet+1+m,cmp);//按照甜度大小排列for(int i=1;i<=m;i++)//遍历所有甜品i{for(int j=1;j<=n;j++)//遍历所有手下j{if(sweet[i].b<=a[j]){sum[j]+=sweet[i].c;//手下j吃掉甜度为i的所有甜品break;}}}//平均化吃掉的数量//甜品转移只能向右转移,也就是转移给耐受度更高的手下for(int i=1;i<=n;i++)//遍历所有手下{ll tmp=(add(i,n))/(n-i+1);//将往右的这些所有吃的甜品数量平均if(tmp<=sum[i])//这个人吃多了,分走甜品{sum[i+1]+=sum[i]-tmp;sum[i]=tmp;}}for(int i=1;i<=n;i++) ans=max(ans,sum[i]);//找出最大sumcout<<ans<<endl;return 0;
}
6🐋🐋屠龙勇者(黄金;贪心)
时间限制:1秒
占用内存:128M
🐟题目描述



🐟题目思路
贪心思想:用最强的勇士砍最大的头。
那么就是将d和w数组分别排序,最多有m-n个spare的勇士可以用来砍这个头,所以对i来说最强的勇士就是第i+m-n个勇士,如果这个最强的勇士都没法砍这个头,那么就失败了。同样的贪心思想,这些spare的勇士也是能力值低的那些。
🐟代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int d[N],w[N],n,m;
int main( )
{cin>>n>>m;for(int i=1;i<=n;i++) cin>>d[i];for(int i=1;i<=m;i++) cin>>w[i];sort(d+1,d+1+n);sort(w+1,w+1+m);if(n>m){cout<<"NO";return 0;}for(int i=n;i>=1;i--){if(w[i+m-n]<d[i])//最多有m-n个spare的勇士{cout<<"NO";return 0;}}cout<<"YES";return 0;
}
有问题我们随时评论区见~
⭐点赞收藏不迷路~
相关文章:
码蹄集部分题目(2024OJ赛18期;并查集+ST表+贪心)
1🐋🐋史莱姆融合(钻石;并查集) 时间限制:1秒 占用内存:128M 🐟题目描述 🐟题目思路 这道题目使用并查集,同一集合的所有元素的最顶上的祖父节点是统一的。…...
算法:前缀和题目练习
目录 题目一:一维前缀和[模版] 题目二:二维前缀和[模版] 题目三:寻找数组的中心下标 题目四:除自身以外数组的乘积 题目五:和为K的子数组 题目六:和可被K整除的子数组 题目七:连续数组 题…...
记录项目使用ts时引入js文件后导致项目运行空白问题
主要原因: 使用ts后开启了eslint检测,而js压缩文件引入的位置在eslint检测的文件内。导致eslint检测认为该文件为很大的文件,或eslint认为此文件内存在无法处理的语法结构等问题。 解决方法: 1、把文件移到eslint检测外的文件引入…...
Kafka消费者api编写教程
1.基本属性配置 输入new Properties().var 回车 //创建属性Properties properties new Properties();//连接集群properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"node1:9092,node2:9092");//反序列化properties.put(ConsumerConfig.KEY_DESERIALIZER_CL…...
什么情况下要配置DNS服务
什么是DNS 一、DNS就是域名解析 我们上网的方式通常都由ip地址组成,但是为了有个规范,而且我们也不可能去记住那么多一串Ip数字,首先域名就会比ip好记很多,其次固定性,一旦服务器换了,只要重新绑定域名对…...
华为端云一体化开发 (起步1.0)(HarmonyOS学习第七课)
官方文献: 为丰富HarmonyOS对云端开发的支持、实现端云联动,DevEco Studio推出了云开发功能,开发者在创建工程时选择云开发模板,即可在DevEco Studio内同时完成HarmonyOS应用/元服务的端侧与云侧开发,体验端云一体化协…...
数据结构之ArrayList与顺序表(上)
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 顺序表的学习,点我 上面这篇博文是关于顺序表的基础知识,以及顺序表的实现。…...
Java 8 中的 Stream API,用于处理集合数据
Java 8 引入了 Stream API,使得处理集合数据变得更加简洁和高效。Stream API 允许开发者以声明式编程风格操作数据集合,而不是使用传统的迭代和条件语句。 一、基本概念 1.1 什么是 Stream Stream 是 Java 8 中的一个新抽象,它允许对集合数…...
106、python-第四阶段-3-设计模式-单例模式
不是单例类,如下: class StrTools():pass str1StrTools() str2StrTools() print(str1) print(str2) 运用单例,先创建一个test.py class StrTools():pass str1StrTools()然后创建一个hello.py,在这个文件中引用test.py中的对象&a…...
【猫狗识别系统】图像识别Python+TensorFlow+卷积神经网络算法+人工智能深度学习
猫狗识别系统。通过TensorFlow搭建MobileNetV2轻量级卷积神经算法网络模型,通过对猫狗的图片数据集进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。 一、前言 …...
记录汇川:红绿灯与HMI-ST
项目要求: 子程序: 子程序: 实际动作如下: 红绿灯与HMI-ST...
已解决java.nio.charset.CoderMalfunctionError: 编码器故障错误的正确解决方法,亲测有效!!!
已解决java.nio.charset.CoderMalfunctionError: 编码器故障错误的正确解决方法,亲测有效!!! 亲测有效 报错问题解决思路解决方法1. 检查和清理输入数据2. 选择正确的字符集3. 处理异常情况4. 更新Java版本或库5. 检查第三方库的依…...
Linux 中常用的设置、工具和操作
1.设置固定的ip地址步骤 1.1 添加IPADDR“所设置的固定ip地址” TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no" BOOTPROTO"static" DEFROUTE"yes" IPV4_FAILURE_FATAL"no" IPV6INIT"yes" IPV6…...
[论文笔记]AIOS: LLM Agent Operating System
引言 这是一篇有意思的论文AIOS: LLM Agent Operating System,把LLM智能体(代理)看成是操作系统。 基于大语言模型(LLMs)的智能代理的集成和部署过程中存在着许多挑战,其中问题包括代理请求在LLM上的次优调度和资源分配,代理和LLM之间在交互…...
2024全国高考作文题解读(文心一言 4.0版本)
新课标I卷 阅读下面的材料,根据要求写作。(60分) 随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少? 以上材料引发了你怎样的联想和思考?请写…...
【功能超全】基于OpenCV车牌识别停车场管理系统软件开发【含python源码+PyqtUI界面+功能详解】-车牌识别python 深度学习实战项目
车牌识别基础功能演示 摘要:车牌识别系统(Vehicle License Plate Recognition,VLPR) 是指能够检测到受监控路面的车辆并自动提取车辆牌照信息(含汉字字符、英文字母、阿拉伯数字及号牌颜色)进行处理的技术。车牌识别是现代智能交通…...
TESSENT2024.1安装
一、安装过程参考Calibre安装过程(此处省略,不再赘述) 二、安装license管理器: SiemensLicenseServer_v2.2.1.0_Lnx64_x86-64.bin 三、Patch补丁: tessent安装目录和license管理安装目录,执行FlexNetLic…...
【机器学习】原理与应用场景 Python代码展现
机器学习:原理、应用与实例深度解析 引言一、机器学习的基本原理二、机器学习的应用范围三、机器学习实例解析四、机器学习部分讲解五、机器学习的挑战与未来 引言 随着大数据和计算能力的飞速发展,机器学习(Machine Learning, ML࿰…...
Python怎么循环计数:深入解析与实践
Python怎么循环计数:深入解析与实践 在Python编程中,循环计数是一项基础且重要的技能。无论是处理列表、遍历文件,还是执行重复任务,循环计数都发挥着不可或缺的作用。本文将从四个方面、五个方面、六个方面和七个方面详细阐述Py…...
Facebook企业户 | Facebook公共主页经营
Facebook作为社交媒体巨头,拥有庞大的用户基数,因此,有效经营公共主页是获取持续流量、提升客户信任度和粘性、促进产品或服务销售与转化的关键。要优化Facebook主页,关注以下几点: 1、参与度是关键指标:因…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...


