牛客小白月赛76

2023-11-13

牛客小白月赛76_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ

A.猜拳游戏

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void solve()
{
    string s;
    cin>>s;
    cout<<s<<endl;
}
signed main()
{
    solve();
    return 0;
}

B.Kevin喜欢一

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void solve()
{
    int n;
    cin>>n;
    int sum=1;
    int copy=1;
    if(sum>=n){
        cout<<0<<endl;
        return;
    }
    for(int i=1;;i++){
        sum+=copy;
        copy=sum;
        if(sum>=n){
            cout<<i<<endl;
            return;
        }
    }
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

C.A加B,A模B

首先呢,如果对于k,从0一个一个找,有t(2e5)个样例,一定会超时,于是果断放弃这种方法,寻求其它方法,此时千万不要死磕,一直执着于此,一直苦恼

有2e5个样例,会想到每个样例可能是O(1),大概率是个思维题,应该有某些规律,应该重新读题面,从中寻找隐藏信息

可以从a mod b = m中提取一些信息,可得m小于b

a=n-b==>a=k*b+m(k>=0)

n-b=k*b+m==>n-m=(k+1)*b>0

b>m

n-m是个定值,要想b>m,能够成立,那么b要尽可能大,那么(k+1)尽可能小,所以k取0,此时b做到最大如果都不满足b>m,那么就不可能满足了,就输出-1

b就取n-m,a取m

b的范围是[1,1e9],以及b>=m如果不在这个范围内,那么b不合法,则输出-1,否则输出m和n-m

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<queue>
#include<set>
using namespace std;
void solve()
{
    int n,m;
    cin>>n>>m;
    if(n-m<1||n-m>1e9||n-m<=m) cout<<-1<<endl;
    else cout<<m<<" "<<n-m<<endl;
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

D.MoonLight的运算问题

首先,要知道这不会超时的,虽然t范围为1e5,n范围为2e5,但是数据保证了n的总和不超过2e5

我一开始的代码是这样写的:

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int N=2e5+10,mod=998244353;
int f[N];
void solve()
{
    int n;
    cin>>n;
    int res=0;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        res=max(res*x,res+x);
        res=res%mod;
    }
    cout<<res%mod<<endl;
}
signed main()
{
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

然后答案错误,用例通过率仅为44.44%,现在来分析一下这样写为什么是错的

首先,题目要求求出x的最大值,然后对998244353取模

但要注意x后面越来越大,可能会爆long long,所以需要一边操作,一边取模

如图,模运算

但是呢,这就是错因所在,因为题目要我们先求出x的最大值,然后再取模,而我们为了防止爆long long,必须一边操作一边取模,每次res都会取模,如果这样写的话,res=max(res*x,res+x),在比较谁大之前,前面一次循环res是取模了的,可能原本真实的res值是res*x大于res+x的,但是取模后的res值可能就是res*x小于res+x了,这样就出错了,所以我们应该依据真实的res值来选择执行哪个操作才能更大

首先,如果x小于等于1的话,不管res的真实值是多少,都应该执行res+=x,注意x大于等于0,所以res的真实值肯定是在不断变大的(当然,我们要选择最优的策略,可不能自己作死选择res*=0),那么当res一旦大于1之后,res的真实值就不会再减小了(而取模之后有可能减小的),此时如果x>1都执行res*=x操作

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<queue>
#include<set>
#define int long long
#define endl '\n'
using namespace std;
const int mod=998244353;
int n;
void solve()
{
    cin>>n;
    int res=0;
    bool flag=true;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        if(x<=1||res<=1) res+=x;
        else res*=x;
    }
    cout<<res<<endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}

E.括号操作序列专家

首先分别统计左括号和右括号的个数,如果个数不相等,肯定不能使括号序列变合法,直接输出-1

否则肯定有办法使得括号序列变合法

对于每一个左括号,一直往左移动,去匹配最左边的没有被匹配的右括号

具体我们这样操作:

以0为基准

如果遇到左括号.sum++

如果遇到右括号,sum--

sum如果小于0的话,sum的绝对值即表示此时左边还有多少个右括号没有被匹配

如果遇到左括号,并且sum小于0的话,那么说明该左括号的左边还有sum的绝对值个右括号还未被匹配,那么该左括号就需要往左移动(和左边相邻的交换)sum的绝对值次

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<queue>
#include<set>
#define int long long
#define endl '\n'
using namespace std;
int n;
void solve()
{
    cin>>n;
    string s;
    cin>>s;
    int cnt=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='(') cnt++;//数一共有几个左括号
    }
    //特判,首先要保证左括号的个数和右括号的个数相同
    if(cnt*2!=n){
        cout<<-1<<endl;
        return;
    }
    int res=0;
    int sum=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='(') {
            if(sum<0) res-=sum;
            sum++;
        }
        else sum--;
    }
    cout<<res<<endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    solve();
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客小白月赛76 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr

随机推荐

  • 学习笔记之什么是持久化和对象关系映射ORM技术

    学习笔记之什么是持久化和对象关系映射ORM技术 by Naven at 2005 09 19 何谓 持久化 持久 Persistence 即把数据 如内存中的对象 保存到可永久保存的存储设备中 如磁盘 持久化的主要应用是将内存中的数据存储在
  • 你认为DAO是否可行?新年计划,卯足干劲,兔必No.1

    文章目录 课前小差 聚沙成塔 社会价值 DAO是什么 国产化 商业化回报 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得倒CSDN王总的授权 来对于我们每周四的绿萝时间 直达CSDN 直播内容进行总结概括 让大家
  • [mysql]游标和触发器

    目录 游标 或光标 定义 使用过程 示例 总结 触发器 应用场景 定义 使用 创建 查看 删除 示例 一个注意点 优缺点 拓展 MySQL 8 0的新特性 全局变量的持久化 游标 或光标 定义 游标是一种 能够对结果集中的每一条记录进行定位
  • Jetson nano之ROS入门 - - 机器人建模与仿真

    文章目录 前言 一 URDF建模 1 URDF语法详解 a robot b link c joint 2 URDF机器人建模实操 二 Xacro宏优化 1 Xacro宏语法详解 2 Xacro建模实操 三 Rviz与Gazebo仿真 1 G
  • 【人体姿态】Convolutional Pose Machines

    Wei Shih En et al Convolutional Pose Machines CVPR 2016 本论文将深度学习应用于人体姿态分析 同时用卷积图层表达纹理信息和空间信息 目前在2016年的MPII竞赛中名列前茅 作者在git
  • 51单片机之串口通讯应用实例(逻辑分析仪调试)

    硬件 STC89C52RC 开发工具 Keil uVision4 前言 8051是一款很经典的 历史悠久的单片机 作为一款入门级的单片机8051受到很多初学者的欢迎 89c52是8051系列的成员之一 拥有8K字节程序存储空间 512字节随
  • 基于Python Django Mysql数据库 的电商系统实现

    基于Python Django的电商系统实现 最近需要基于Django实现一个电商系统 目前已实现了基本功能 整个系统结构相对简单 没有进行前后端分离 使用的django的最简单的Template模板前后端交互模式 这个项目属于入门级项目
  • 环保行业如何开发废品回收微信小程序

    废品回收是近年来受到越来越多人关注的环保行动 为了推动废品回收的普及和方便 我们可以利用微信小程序进行制作 方便人们随时随地参与废品回收 首先 我们需要注册并登录乔拓云账号 并进入后台 乔拓云是一个提供微信小程序制作平台的服务商 非常适合我
  • php user.ini详解

    0x00 前言 本篇主要是讲解分析一下user ini相关的内容 因为这个知识点涉及到文件上传的绕过 0x01 正文 user ini 文件是PHP的配置文件 用于自定义PHP的配置选项 该文件通常位于PHP安装目录的根目录下 或者在特定的
  • 2. 依赖管理和自动配置

    文章目录 2 1 依赖管理 2 1 1 什么是依赖管理 2 1 2 修改自动仲裁 默认版本号 2 2 starter 场景启动器 2 2 1 starter 场景启动器基本介绍 2 2 2 官方提供的 starter 2 2 2 1 地址
  • PyTorch基础入门六:PyTorch搭建卷积神经网络实现MNIST手写数字识别

    1 卷积神经网络 CNN 简介 关于什么是卷积神经网络 CNN 请自行查阅资料进行学习 如果是初学者 这里推荐一下台湾的李宏毅的深度学习课程 链接就不给了 这些资料网站上随处可见 值得一提的是 CNN虽然在图像处理的领域具有不可阻挡的势头
  • ps2020无法显示最近打开

    首选项 常规 选择 自动显示主屏幕
  • 关于BeanUtils.copyProperties() 用法及区别

    这两个类在不同的包下面 而这两个类的copyProperties 方法里面传递的参数赋值是相反的 例如 a b为对象BeanUtils copyProperties a b BeanUtils是org springframework bea
  • FakeMsdMiner挖矿病毒分析报告

    近日 亚信安全截获新型挖矿病毒FakeMsdMiner 该病毒利用永恒之蓝 永恒浪漫等NSA漏洞进行攻击传播 该病毒具有远控功能 可以获取系统敏感信息 其通过修改HOST文件方式截获其他挖矿病毒的成果 由于该病毒的挖矿程序伪装成微软系统服务
  • [note] 深度学习 tensorflow 笔记(3) cnn 卷积神经网络

    假设我们想要辨识一张图片里面是不是有猫咪的存在 这只猫咪可以在图片的任何位置 什么办法才能辨别这个图片里面有没有猫呢 一个很简单的想法就是 将图片分成一些子图片的集合 逐个辨别子图片里面有没有猫咪 的确 卷积神经网络就是这样做的 但是 分割
  • Android高德地图自定义Mark并实现聚合效果

    Android高德地图自定义Mark并实现聚合效果 起因 公司本来项目里面用到了高德地图 然后最近老板看见别人的APP里面有个聚合的这个功能 老板 这个效果能不能实现 我也要 没有办法因为以前没有做过高德地图点聚合这个东西 然后只能勉强的答
  • Brocade FOS下载 博科光纤交换机固件升级

    百度网盘 https pan baidu com s 1lCAsjoDG3rMXs7uYoJETWA 输入码 7nv4 1 BT下载 比如用迅雷 17F8E2FAC8CD08C682B3D2A5CC294B48B1DA2ED6 7313C1
  • 韦东山 IMX6ULL和正点原子_「正点原子Linux连载」第四十三章Linux设备树(一)

    1 实验平台 正点原子Linux开发板 2 摘自 正点原子I MX6U嵌入式Linux驱动开发指南 关注官方微信号公众号 获取更多资料 正点原子 前面章节中我们多次提到 设备树 这个概念 因为时机未到 所以当时并没有详细的讲解什么是 设备树
  • 【Dubbo】Dubbo(二)简单实践

    Dubbo 二 实践 安装注册中心 下载zookeeper 在zookeeper路径下新增date文件夹存储数据 conf路径下新增zoo cfg 编辑zoo cfg 修改数据目录dataDir为新增的data文件夹 其他与zoo samp
  • 牛客小白月赛76

    牛客小白月赛76 ACM NOI CSP CCPC ICPC算法编程高难度练习赛 牛客竞赛OJ A 猜拳游戏 AC代码 include