AtCoder Beginner Contest 406(ABCD)

news2025/5/24 10:58:19

前言

我仿佛在梦游……

一、A - Not Acceptable

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

void solve()
{
    int dueH,dueM,upH,upM;
    cin>>dueH>>dueM>>upH>>upM;

    if(upH>dueH)
    {
        cout<<"No";
    }
    else if(upH<dueH)
    {
        cout<<"Yes";
    }
    else
    {
        if(upM>dueM)
        {
            cout<<"No";
        }
        else
        {
            cout<<"Yes";
        }
    }
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();    
    }
    return 0;
}

签到题,没啥好说的。

二、B - Product Calculator

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ll;//我阐述你的梦的伞兵unsigned long long
typedef pair<int,int> pii;

void solve()
{
    int n,k;
    cin>>n>>k;
    vector<ll>nums(n+1);
    for(int i=1;i<=n;i++)
    {
        cin>>nums[i];
    }

    vector<int>bits(k);

    bits[0]=1;

    for(int i=1;i<=n;i++)
    {
        ll num=nums[i];

        ll t=0;
        for(int j=0;j<k;j++)
        {
            t+=bits[j]*num;

            bits[j]=t%10;

            t/=10;
        }
        if(t>0)
        {
            bits[0]=1;
            for(int i=1;i<k;i++)
            {
                bits[i]=0;
            }
        }
    }

    bool skip=true;
    for(int i=k-1;i>=0;i--)
    {
        if(skip&&bits[i]!=0)
        {
            skip=false;
        }

        if(!skip)
        {
            cout<<bits[i];
        }
    }
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();    
    }
    return 0;
}

这个b题真的搞心态,开到long long会一直过不去,一道题卡了我四十多分钟,一直找不到问题出在哪,最后换了unsigned long long才能过……

思路类似高精度算法,因为最多k位,所以就开个长度为k的数组,每个位置表示结果里第i位的数。所以就是设置一个t表示进位信息,然后对于每个数乘以当前位的结果加上进位信息再模10就是乘后当前位的数字,之后进位信息需要除以10往下一位传递。若k位都遍历结束后还存在进位信息t,说明此时乘积超出了范围,那就把bits数组还原即可。

最后,在输出时要记得避免输出高位的0。

三、C - ~

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

//有五个用例一直过不去……
ll way1(int n,vector<int>&nums)
{
    ll ans=0;
    int a=0,b=0,c=0,d=0;
    while(a+1<n&&nums[a]>nums[a+1])
    {
        a++;
    }
    if(a>=n-3)
    {
        return 0;
    }

    c=a;//注意要对齐!!!防止“1 1 2 1 1 2”最后c!=a会多计算

    for(int i=a;i<n-1;i++)
    {
        if(nums[i-1]<nums[i]&&nums[i]>nums[i+1])//极大值
        {
            if(b==0)
            {
                b=i;
            }
            else
            {
                d=i;
            }
        }
        if(nums[i-1]>nums[i]&&nums[i]<nums[i+1])//极小值
        {
            c=i;
        }

        if(b!=0&&d!=0)
        {
            ans+=(ll)(b-a)*(d-c);//我阐述你的梦的long long
            b=d;
            d=0;
            a=c;
        }
    }

    if(c!=a)//有极小值但无第二个极大值
    {
        d=n-1;
        ans+=(ll)(b-a)*(d-c);//我阐述你的梦的long long
    }

    return ans;
}

void solve()
{
    int n;
    cin>>n;
    vector<int>nums(n);
    for(int i=0;i<n;i++)
    {
        cin>>nums[i];
    }
    cout<<way1(n,nums);}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();    
    }
    return 0;
}

我真草了这个long long……之前牛客上的一个题也是,怎么都过不去,对数器跑十几万次都没问题,最后发现还是中间做乘法的时候没开long long……真的恶心啊啊啊啊啊!!!!!赛时都写出来了,然后又是被long long卡到结束都没发现……

思路很简单,首先就是观察这四个条件,可以发现就是要求找极大值和极小值,然后再结合开头的条件,可以发现必须是极大值、极小值、极大值的顺序,然后只要存在一个极大值和极小值,也就自然保证至少四个点。再观察可以发现,对于每个极大值和极小值的区间,因为要求是连续的子数组,所以只能是开头上升的一段上的点的个数乘以极小值后上升的那一段的点的个数。

所以就是遍历一遍找极大值和极小值,然后计算开头和结尾两区间的个数即可。注意边界情况的讨论!!

四、D - Garbage Removal

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

void solve()
{
    int h,w,n;
    cin>>h>>w>>n;

    //害,原本以为这种每一个操作都遍历的方法肯定会TLE的

    vector<set<int>>rows(h+1);
    vector<set<int>>cols(w+1);

    for(int i=0,x,y;i<n;i++)
    {
        cin>>x>>y;

        rows[x].insert(y);
        cols[y].insert(x);
    }

    int q;
    cin>>q;
    for(int i=1,op,num;i<=q;i++)
    {
        cin>>op>>num;
        if(op==1)//行
        {
            cout<<rows[num].size()<<endl;
            for(auto iter:rows[num])
            {
                cols[iter].erase(num);
            }
            rows[num].clear();
        }
        else//列
        {
            cout<<cols[num].size()<<endl;
            for(auto iter:cols[num])
            {
                rows[iter].erase(num);
            }
            cols[num].clear();
        }
    }
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--)
    {
        solve();    
    }
    return 0;
}

这个题真的,我一开始还想着是不是得设计个结构可以在小于O(n)的时间内快速删除,结果还真是遍历一遍全删除……

就是用一个set存有垃圾的位置,然后对于行清除和列清除就去set里全删了。

总结

E题真不行了……

END

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

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

相关文章

第J2周:ResNet50V2 算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 学习目标 ✅ 根据TensorFlow代码&#xff0c;编写出相应的Python代码 ✅ 了解ResNetV2和ResNet模型的区别 一、环境配置 二、数据预处理 三、创建、划分数据…

虚拟机Centos7:Cannot find a valid baseurl for repo: base/7/x86_64问题解决

问题 解决&#xff1a;更新yum仓库源 # 备份现有yum配置文件 sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup# 编辑CentOS-Base.repo文件 vi /etc/yum.repos.d/CentOS-Base.repo[base] nameCentOS-$releasever - Base baseurlhttp://mirrors.aliyun.com/centos/$relea…

IP风险度自检,多维度守护网络安全

如今IP地址不再只是网络连接的标识符&#xff0c;更成为评估安全风险的核心维度。IP风险度通过多维度数据建模&#xff0c;量化IP地址在网络环境中的安全威胁等级&#xff0c;已成为企业反欺诈、内容合规、入侵检测的关键工具。据Gartner报告显示&#xff0c;2025年全球78%的企…

NV066NV074美光固态颗粒NV084NV085

NV066NV074美光固态颗粒NV084NV085 在存储技术的快速发展浪潮中&#xff0c;美光科技&#xff08;Micron Technology&#xff09;始终扮演着引领者的角色。其NV系列闪存颗粒凭借创新设计和卓越性能&#xff0c;成为技术爱好者、硬件开发者乃至企业级用户关注的焦点。本文将围绕…

C++ 日志系统实战第六步:性能测试

全是通俗易懂的讲解&#xff0c;如果你本节之前的知识都掌握清楚&#xff0c;那就速速来看我的项目笔记吧~ 本文项目结束&#xff01; 性能测试 下面对日志系统做一个性能测试&#xff0c;测试一下平均每秒能打印多少条日志消息到文件。 主要的测试方法是&#xff1a;每秒能…

Java桌面应用开发详解:自制截图工具从设计到打包的全流程【附源码与演示】

&#x1f525; 本文详细介绍一个Java/JavaFX学习项目——轻量级智能截图工具的开发实践。通过这个项目&#xff0c;你将学习如何使用Java构建桌面应用&#xff0c;掌握JavaFX界面开发、系统托盘集成、全局快捷键注册等实用技能。本文主要关注基础功能实现&#xff0c;适合Java初…

手写一个简单的线程池

手写一个简单的线程池 项目仓库&#xff1a;https://gitee.com/bossDuy/hand-tearing-thread-pool 基于一个b站up的课程&#xff1a;https://www.bilibili.com/video/BV1cJf2YXEw3/?spm_id_from333.788.videopod.sections&vd_source4cda4baec795c32b16ddd661bb9ce865 理…

siparmyknife:SIP协议渗透测试的瑞士军刀!全参数详细教程!Kali Linux教程!

简介 SIP Army Knife 是一个模糊测试器&#xff0c;用于搜索跨站点脚本、SQL 注入、日志注入、格式字符串、缓冲区溢出等。 安装 源码安装 通过以下命令来进行克隆项目源码&#xff0c;建议请先提前挂好代理进行克隆。 git clone https://github.com/foreni-packages/sipa…

【Java高阶面经:微服务篇】4.大促生存法则:微服务降级实战与高可用架构设计

一、降级决策的核心逻辑:资源博弈下的生存选择 1.1 大促场景的资源极限挑战 在电商大促等极端流量场景下,系统面临的资源瓶颈呈现指数级增长: 流量特征: 峰值QPS可达日常的50倍以上(如某电商大促下单QPS从1万突增至50万)流量毛刺持续时间短(通常2-4小时),但对系统稳…

通过上传使大模型读取并分析文件实战

一、技术背景与需求分析 我们日常在使用AI的时候一定都上传过文件&#xff0c;AI会根据用户上传的文件内容结合用户的请求进行分析&#xff0c;给出用户解答。但是这是怎么实现的呢&#xff1f;在我们开发自己的大模型应用时肯定是不可避免的要思考这个问题&#xff0c;今天我会…

VueRouter路由组件的用法介绍

1.1、<router-link>标签 <router-link>标签的作用是实现路由之间的跳转功能&#xff0c;默认情况下&#xff0c;<router-link>标签是采用超链接<a>标签显示的&#xff0c;通过to属性指定需要跳转的路由地址。当然&#xff0c;如果你不想使用默认的<…

数据结构第1章 (竟成)

第 1 章 编程基础 1.1 前言 因为数据结构的代码大多采用 C 语言进行描述。而且&#xff0c;408 考试每年都有一道分值为 13 - 15 的编程题&#xff0c;要求使用 C/C 语言编写代码。所以&#xff0c;本书专门用一章来介绍 408 考试所需的 C/C 基础知识。有基础的考生可以快速浏览…

Terraform创建阿里云基础组件资源

这里首先要找到阿里云的官方使用说明: 中文版:Terraform(Terraform)-阿里云帮助中心 英文版:Terraform Registry 各自创建一个阿里云的RAM子账号,并给与OPAPI的调用权限,(就是有aksk,生成好之后保存下.) 创建路径: 登陆阿里云主账号-->控制台-->右上角企业-->人员…

企业级调度器LVS

访问效果 涉及内容&#xff1a;浏览拆分、 DNS 解析、反向代理、负载均衡、数据库等 1 集群 1.1 集群类型简介 对于⼀个业务项⽬集群来说&#xff0c;根据业务中的特性和特点&#xff0c;它主要有三种分类&#xff1a; 高扩展 (LB) &#xff1a;单个主机负载不足的时候&#xf…

【Web前端】HTML网页编程基础

HTML5简介与基础骨架 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.html结尾 HTML是一种标记语言&#xff0c;标记语言是一套标记标签。标签是由尖括号包围的关键字&#xff0c;例如<html> 标签有两种表现形…

阿里开源 CosyVoice2:打造 TTS 文本转语音实战应用

1、引言 1.1、CosyVoice2 简介 阿里通义实验室推出音频基座大模型 FunAudioLLM,包含 SenseVoice 和 CosyVoice 两大模型。 CosyVoice:模拟音色与提升情感表现力 多语言 支持的语言: 中文、英文、日文、韩文、中文方言(粤语、四川话、上海话、天津话、武汉话等)跨语言及…

RabbitMQ可靠传输——持久性、发送方确认

一、持久性 前面学习消息确认机制时&#xff0c;是为了保证Broker到消费者直接的可靠传输的&#xff0c;但是如果是Broker出现问题&#xff08;如停止服务&#xff09;&#xff0c;如何保证消息可靠性&#xff1f;对此&#xff0c;RabbitMQ提供了持久化功能&#xff1a; 持久…

无人机开启未来配送新篇章

低空物流&#xff08;无人机物流&#xff09;是利用无人机等低空飞行器进行货物运输的物流方式&#xff0c;依托低空空域&#xff08;通常在120-300米&#xff09;实现快速、高效、灵活的配送服务。它是低空经济的重要组成部分&#xff0c;广泛应用于快递配送、医疗物资运输、农…

Qt状态机QStateMachine

QStateMachine QState 提供了一种强大且灵活的方式来表示状态机中的状态&#xff0c;通过与状态机类(QStateMachine)和转换类(QSignalTransition&#xff0c; QEventTransition)结合&#xff0c;可以实现复杂的状态逻辑和用户交互。合理使用嵌套状态机、信号转换、动作与动画、…

Java详解LeetCode 热题 100(20):LeetCode 48. 旋转图像(Rotate Image)详解

文章目录 1. 题目描述2. 理解题目3. 解法一&#xff1a;转置 翻转3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二&#xff1a;四点旋转法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景 5. 详细步骤分析与示例跟踪5.1 解法一&a…