码蹄集部分题目(2024OJ赛17期;二分+差分+ST表+单调队列+单调栈)

news2024/11/25 10:52:18

1🐋🐋小码哥处理订单(钻石;二分+差分)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟题目思路

【码蹄集进阶塔全题解07】算法基础:二分 MT2070 – MT2079_哔哩哔哩_bilibili

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
const int N=1e6+10;
int n,m,r[N],d[N],s[N],t[N],sub[N],need[N];
int le,ri,mid,ans;
​
bool check(int num)
{
    memset(sub,0,sizeof(sub));
    for(int i=1;i<=num;i++)
    {
        sub[s[i]]+=d[i];
        sub[t[i]+1]-=d[i];
    }
    for(int i=1;i<=n;i++)
    {
        need[i]=need[i-1]+sub[i];
        if(need[i]>r[i]) return true;
    }
    return false;
}
​
int main( )
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>r[i];
    for(int i=1;i<=m;i++) cin>>d[i]>>s[i]>>t[i];
    le=1,ri=m;
    if(!check(m))
    {
        cout<<0<<endl;
        return 0;
    }
    while(le<=ri)
    {
        mid=le+(ri-le)/2;
        if(check(mid)) 
        {
            ri=mid-1;
            ans=mid;
        }
        else le=mid+1;
    }
    cout<<"-1"<<endl;
    cout<<ans<<endl;
    return 0;
}

2🐋🐋礼物(钻石;二分)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟题目思路

【码蹄集进阶塔全题解07】算法基础:二分 MT2070 – MT2079_哔哩哔哩_bilibili

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
int cnt1,cnt2,x,y;
​
bool check(int num)
{
    if(num-num/(x*y)<cnt1+cnt2) return 0;
    if(num-num/x<cnt1) return 0;
    if(num-num/y<cnt2) return 1;
    return 1;
}
​
int main( )
{
    cin>>cnt1>>cnt2>>x>>y;
    int l=1,r=2e9;
    int ans,cnt=0;
    while(l<=r)
    {
        int mid=l+(r-l)/2;
        if(check(mid)) 
        {
            r=mid-1;
            ans=mid;
        }
        else l=mid+1;
    }
    cout<<ans<<endl;
    return 0;
}

🧀🧀🧀ST表

ST表(Sparse Table)是一种用于高效处理区间查询的数据结构。它可以在O(1)的时间复杂度内回答某一区间的最值查询(最小值、最大值等)。ST表使用动态规划的思想,通过预处理的方式来快速计算出各个区间的最值。

推荐这篇:ST表(保姆级,简单易懂)-CSDN博客

3🐋🐋区间按位与(钻石;ST表)

时间限制:2秒

占用内存:64M

🐟题目描述

🐟题目思路

MT3049 区间按位与_哔哩哔哩_bilibili

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
const int N=2e5+10;
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];
    for(int j=1;j<=Lg[n];j++)
    {
        for(int i=1;i<=n-(1<<j)+1;i++) mn[i][j]=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 mn[l][k]&mn[r-(1<<k)+1][k];
}
​
int main( )
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    pre();
    ST_create();
    while(m--)
    {
        int a1,a2;
        cin>>a1>>a2;
        cout<<ST_query(a1,a2)<<'\n';//cout endl会超时
    }
    return 0;
}

4🐋🐋区间按位或(钻石;ST表)

时间限制:2秒

占用内存:128M

🐟题目描述

🐟题目思路

MT3048 区间按位或_哔哩哔哩_bilibili

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
const int N=2e5+10;
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];
    for(int j=1;j<=Lg[n];j++)
    {
        for(int i=1;i<=n-(1<<j)+1;i++) mn[i][j]=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 mn[l][k] | mn[r-(1<<k)+1][k];
}
​
int main( )
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    pre();
    ST_create();
    while(m--)
    {
        int a1,a2;
        cin>>a1>>a2;
        cout<<ST_query(a1,a2)<<'\n';//cout endl会超时
    }
    return 0;
}

5🐋🐋松鼠接松果(钻石;单调队列)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟题目思路

MT3045 松鼠接松果_哔哩哔哩_bilibili

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
const int N=1e5+10;
int n,D,ans=0x3f3f3f3f;
struct POS
{
    int x,y;
    bool operator<(const POS &t) const {return x<t.x;}
}p[N];
deque<int> maxm,minm;
​
int main( )
{
    scanf("%d %d",&n,&D);
    for(int i=1;i<=n;i++) scanf("%d %d",&p[i].x,&p[i].y);
    sort(p+1,p+1+n);
    int L=1;
    for(int i=1;i<=n;i++)
    {
        while(!maxm.empty()&&p[maxm.back()].y<p[i].y) maxm.pop_back();
        maxm.push_back(i);
        while(!minm.empty()&&p[minm.back()].y>p[i].y) minm.pop_back();
        minm.push_back(i);
        while(L<i&&p[maxm.front()].y-p[minm.front()].y>=D)
        {
            ans=min(ans,p[i].x-p[L].x);
            L++;
            while(!maxm.empty()&&maxm.front()<L) maxm.pop_front();
            while(!minm.empty()&&minm.front()<L) minm.pop_front();
        }
    }
    if(ans==0x3f3f3f3f) printf("-1\n");
    else printf("%d\n",ans);
    return 0;
}

单调栈做法:

#include<bits/stdc++.h> 
​
using namespace std;
const int maxn=1e5+10;
int q1[maxn],q2[maxn];
struct node
{
    int loc,h;
}Node[maxn];
bool cmp(node a,node b) {return a.loc<b.loc;}
​
int main( )
{
    int N,D;
    scanf("%d %d",&N,&D);
    for(int i=1;i<=N;i++) scanf("%d %d",&Node[i].loc,&Node[i].h);
    sort(Node+1,Node+1+N,cmp);
    int l=1,r=1;
    q1[0]=-1e9;
    q1[1]=Node[1].h;
    q2[1]=Node[1].loc;
    int min_=1e9;
    for(int i=2;i<=N;i++)
    {
        for(int j=r;j>=l;j--)
        {
            if(Node[i].h-q1[j]>=D)
            {
                min_=min(min_,Node[i].loc-q2[j]);
                break;
            }
        }
        r+=1;
        while(r>=l)
        {
            if(q1[r-1]<Node[i].h)
            {
                q1[r]=Node[i].h;
                q2[r]=Node[i].loc;
                break;
            }
            else r--;
        }
    }
    for(int i=1;i<=N/2;i++)
    {
        swap(Node[i].h,Node[N-i+1].h);
        swap(Node[i].loc,Node[N-i+1].loc);
    }
    l=1,r=1;
    q1[0]=-1e9;
    q1[1]=Node[1].h;
    q2[1]=Node[1].loc;
    for(int i=2;i<=N;i++)
    {
        for(int j=r;j>=l;j--)
        {
            if(Node[i].h-q1[j]>=D)
            {
                min_=min(min_,-Node[i].loc+q2[j]);
                break;
            }
        }
        r+=1;
        while(r>=l)
        {
            if(q1[r-1]<Node[i].h)
            {
                q1[r]=Node[i].h;
                q2[r]=Node[i].loc;
                break;
            }
            else r--;
        }
    }
    if(min_==1e9) printf("-1");
    else printf("%d",min_);
    return 0;
}

6🐋🐋排序(星耀;单调栈)

时间限制:1秒

占用内存:256M

🐟题目描述

🐟题目思路

MT3043 排序_哔哩哔哩_bilibili

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
#define int long long
const int N=2e5+5;
int n,m,a[N],b[N],top;
struct node
{
    int k,x;
}st[N];
signed main( )
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=a[i];
    }
    while(m--)
    {
        int k,x;
        cin>>k>>x;
        while(top&&st[top].x<=x) top--;
        st[++top]={k,x};
    }
    int nn=st[1].x;
    sort(b+1,b+1+nn);
    int l=1,r=nn;
    st[top+1].x=0;
    for(int i=1;i<=top;i++)
    {
        int t=st[i].x-st[i+1].x;
        if(st[i].k==1)
        {
            while(t--) a[nn--]=b[r--];
        }
        else
        {
            while(t--) a[nn--]=b[l++];
        }
    }
    for(int i=1;i<=n;i++) cout<<a[i]<<" ";
    return 0;
}

抱歉uu们,这周有些不太舒服,没有给大家写题解,大家可以先看看视频的讲解,后续有机会我再补一下这期的题解~

有问题我们随时评论区见~

⭐点赞收藏不迷路~

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

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

相关文章

Kafka系列之高频面试题

基础 简介 特点&#xff1a; 高吞吐、低延迟&#xff1a;kafka每秒可以处理几十万条消息&#xff0c;延迟最低只有几毫秒&#xff0c;每个Topic可以分多个Partition&#xff0c;Consumer Group对Partition进行Consumer操作可扩展性&#xff1a;Kafka集群支持热扩展持久性、可…

JavaScript解构赋值

一、数组解构 以上要么不好记忆&#xff0c;要么书写麻烦&#xff0c;此时可以使用解构赋值的方法让代码更简洁。 数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法。 基本语法&#xff1a; 1、赋值运算符左侧的[]用于批量声明变量&#xff0c;右侧数组的单元值将…

库卡机械手伺服电机过压报警维修措施

一、KUKA机械手伺服电机过压报警原因库卡机器人电机过压报警通常是由于电机供电电压过高、电机绕组短路、电机负载过大等原因引起的。当电机供电电压超过额定电压一定范围&#xff0c;或者电机绕组出现短路故障&#xff0c;或者电机负载过大导致电流过大时&#xff0c;电机电流…

MoeCTF 2022 usb

直接找 URB的第一个输入协议 我们需要提取的数据 HID Data 提取过滤器 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json >1.json 拿 usbhid.data 字段 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json -e usbhid.data …

【LINUX】LINUX基础(目录结构、基本权限、基本命令)

文章目录 LINUX的目录结构LINUX的基本权限LINUX基本命令 LINUX的目录结构 /&#xff1a;表示根目录bin&#xff1a;存放二进制可执行文件(命令ls、cat、mkdir等)boot&#xff1a;存放系统引导文件dev&#xff1a;存放设备文件etc&#xff1a;存放系统配置文件home&#xff1a;…

云计算-基础云架构(Fundamental Cloud Architectures)

工作负载分配架构&#xff08;Workload Distribution Architecture&#xff09; 工作负载分配架构是一种基础架构&#xff0c;它在一组相同的IT资源之间分配负载。其结构如图7.1所示&#xff08;更好的图示在教材中&#xff09;。 图&#xff1a;工作负载分配架构 这个结构中的…

Stable Diffusion|插件安装基础教程

Stable Diffusion&#xff08;简称SD&#xff09;作为一款强大的文本到图像生成模型&#xff0c;已经引起了广泛的关注和应用。而在其庞大的生态系统中&#xff0c;插件作为不可或缺的一部分&#xff0c;为用户提供了更多样化、个性化的功能扩展。从风格迁移、细节增强到生成优…

FANUC机器人保养服务包,高效又可靠!

发那科机器人作为工业生产中的重要设备&#xff0c;其保养工作至关重要。定期FANUC机械手保养不仅可以延长机器人的使用寿命&#xff0c;还能提高生产效率和质量。 法那科机器人保养步骤&#xff1a; 基本的法兰克机器人保养是维护机器人的第一步&#xff0c;正确的保养步骤还…

性能测试 —— 前端性能监控与优化方案!

前端性能监控(Real User Monitoring, RUM)是一种用于实时监控前端用户行为和响应时间数据的技术。它主要关注Web、小程序等场景的用户页面性能(如页面测速、接口测速、CDN测速等)和质量(如JS错误、Ajax错误等)&#xff0c;并且可以与后端监控相结合&#xff0c;实现前后端一体化…

初出茅庐的小李博客之使用立创开发板(ESP32)连接到EMQX Platform【MQTT TLS/SSL 端口连接】

介绍 手上有一块立创开发板&#xff0c;本着不吃灰的原则把它用起来&#xff0c;今天就来用它来连接上自己部署的MQTT服务器进行数据通信。 硬件&#xff1a;立创开发板 开发环境&#xff1a;Arduino IDE Win11 MQTT 平台&#xff1a;EMQX Platform 立创开发板介绍&#xff1…

上海晋名室外危废暂存柜助力谐波传动减速器行业危废品安全储存

近日又有一台 SAVEST 室外危废暂存柜项目成功验收交付使用&#xff0c;此次项目主要用于谐波传动减速器行业危废品安全储存。 用户单位成立于1994年&#xff0c;是我国专业从事谐波传动减速器技术设计、开发、生产、销售、服务的高新技术实业公司。在日常工作运营中涉及到危废…

全是干货:融资融券(两融)名词科普!

一、两融内涵 融资融券&#xff0c;也被称为证券信用交易&#xff0c;其内涵主要涵盖以下方面&#xff1a; 首先&#xff0c;它指的是投资者向具有融资融券业务资格的证券公司提供担保物&#xff0c;并借入资金用于买入证券&#xff08;融资交易&#xff09;或借入证券并卖出&…

三次样条插值的实现(Matlab)

一、问题描述 三次样条插值的实现。 二、实验目的 掌握三次样条插值方法的原理&#xff0c;能够编写代码获得自然、抛物线端点以及非纽结三次样条。 三、实验内容及要求 找出并画出三次样条S&#xff0c;满足S(0) 1, S(1) 3, S(2) 3, S(3) 4, S(4) 2&#xff0c;其中…

Windows11 wsl2编译Android14 使用ASfP Debug windows上启动的模拟器

wsl2的安装和配置 安装&#xff1a; 直接百度搜索最新的wsl2安装教程即可&#xff0c;官网&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install 1. 启用适用于 Linux 的 Windows 子系统(以管理员身份打开 PowerShell 并运行) Enable-WindowsOptionalFeature…

基于大模型的智慧零售教育科研平台——技术方案

一、概述 1.1背景 随着数字经济的快速发展和全社会数字化水平的升级&#xff0c;人工智能的积极作用越来越凸显&#xff0c;人工智能与各个行业的深度融合已成为促进传统产业转型升级的重要方式之一。ChatGPT的出现掀起了又一波人工智能发展热潮&#xff0c;人工智能行业发展势…

每日练习之广义搜索——小红的素数合并

小红的素数合并 题目描述 运行代码 #include <iostream> #include<algorithm> using namespace std; typedef long long LL;// 定义一个常量表示数组最大长度 const int N 1e5 10; int n, a[N]; // 解决问题的函数 void solve() {// 输入数组长度cin >> …

【Python】浅析Python内存管理与GC机制

【Python】浅析Python内存管理与GC机制 从C语言引入&#xff1a;内存管理的挑战 C语言是一个强大的编程语言&#xff0c;它允许开发者直接控制内存。这种控制是通过以下方式实现的&#xff1a; 内存分配&#xff1a;使用 malloc、calloc 或 realloc 等函数分配内存。内存释放…

C++系列-类模板

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类模板的定义格式&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; template<class T> class Stack { public:Stack(size_…

Mariadb操作命令指南

MariaDB简介 ​ 以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性&#xff0c;因使用而带来的风险与本站无关&#xff01; 数据库应用程序与主应用程序分开存在&#xff0c;并存储数据集合。 每个数据库都使用一个或多个API来创建&#xff0c;访问&#xf…

恒创科技:无法与服务器建立安全连接怎么解决?

在使用互联网服务时&#xff0c;有时会出现无法与服务器建立安全连接的问题&#xff0c;此错误消息通常出现在尝试访问需要安全连接的网站(例如使用 HTTPS 的网站)时&#xff0c;这可能是由于多种原因造成的&#xff0c;以下是一些常见的解决方法&#xff0c;帮助你解决问题。 …