牛客周赛 Round 38VP

1.签到:https://ac.nowcoder.com/acm/contest/78292/A

AC代码:

#include<bits/stdc++.h>
using namespace std;
int x;
int main(){cin>>x;int w=x%10;if(w==0) cout<<0;else cout<<10-w;
}

2.签到:https://ac.nowcoder.com/acm/contest/78292/B

AC代码:

#include<bits/stdc++.h>
using namespace std;
string x;
int main(){cin>>x;int cnt=0;int sum=0;for(int i=0;i<x.size();i++){sum+=x[i]-'0';if(sum%9==0) cnt++;}cout<<cnt;
}

3.回文构造:https://ac.nowcoder.com/acm/contest/78292/C

构造aabbcc...这样即可保证不同字母之间不存在回文并相邻字母构成回文,最后再用edgedg..补即可,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,k;
string a;
string a1="abc",a2="def";
int main()
{cin>>n>>k;for(int i=0,j=0;i<k;i++){a+=a1[j];a+=a1[j];j=(j+1)%3;}for(int i=0,j=0;i<n-2*k;i++){a+=a2[j];j=(j+1)%3;}cout<<a;
}

4.分类讨论:https://ac.nowcoder.com/acm/contest/78292/D

贪心即可,唯一比较恶心的是当所有间隙都小于k时,要加一个使其刚好满足,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,k,a[100010];
long long cnt;
int main()
{cin>>n>>k;int f=0;for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=2;i<=n;i++){int ck=abs(a[i]-a[i-1]);if(ck<k) continue;if(ck==k){f=1;continue;}if(ck%k==0) cnt+=ck/k-1;else cnt+=ck/k;f=1;}if(f==1) cout<<cnt;else cout<<1;}

5.暴力+剪枝:https://ac.nowcoder.com/acm/contest/78292/E

先特判1,再直接从2开始暴力枚举,同时我们加入一个剪枝:

考虑到1,q,q^2,q^3,...当我们发现pow(q,ans)>2e5时,说明已经不可以了就直接退出。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e6+5;
int a[N];
map<int,int> mp;
signed main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];mp[a[i]]++;}int mx=0;for(int i=1;i<=n;i++) mx=max(mx,mp[a[i]]);for(int i=1;i<=n;i++){for(int q=2;a[i]*pow(q,mx)<=2e5;q++){int now=a[i],cnt=0;while(now<=2e5 && mp[now]){cnt++;now*=q;}mx=max(mx,cnt);}}cout<<mx<<endl;return 0;
}

6.子序列自动机+线段树:https://ac.nowcoder.com/acm/contest/78292/F

首先:求一个长度>=3序列是否有回文序列等价于求是否有一个长度为3的回文串,如1221有121,因此就是求是否有1x1这样的形式,我们用last数组记录每一个数上一次和他一样的出现的位置,同时我们要排除相邻的,于是我们可以倒着循环一边,最后问在(l,r)区间等价于求(l,r)里的数在last中的max是否大于l,我们用线段树维护区间最大值即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100010],q,l,r;
int last[100010];
map<int,int> mp;
void init()
{for(int i=1;i<=n;i++){if(mp.count(a[i])) last[i]=mp[a[i]];mp[a[i]]=i;}for(int i=n;i>=1;i--){if(last[i]==i-1) last[i]=last[last[i]];}
}
struct node
{int l,r,mx;
}tr[404000];
void push_up(int u)
{tr[u].mx=max(tr[u*2].mx,tr[u*2+1].mx);}
void build(int u,int l,int r)
{if(l==r) tr[u]={l,r,last[l]};else{tr[u]={l,r};int mid=(l+r)>>1;build(u*2,l,mid);build(u*2+1,mid+1,r);push_up(u);}
}
int query(int u,int l,int r)
{if(tr[u].l>=l&&tr[u].r<=r) return tr[u].mx;int mid=tr[u].l+tr[u].r>>1;int max1=-1;if(l<=mid) max1=query(u<<1,l,r);if(r>mid) max1=max(max1,query(u<<1|1,l,r));return max1;
}
int main()
{cin>>n>>q;for(int i=1;i<=n;i++) scanf("%d",&a[i]);init();build(1,1,n);while(q--){scanf("%d%d",&l,&r);int ck=query(1,l,r);if(ck>=l) cout<<"YES"<<endl;else cout<<"NO"<<endl;}
}

7.双指针+树状数组:https://ac.nowcoder.com/acm/contest/78292/G

首先去除一个数一定会是逆序对减小,满足单调性,可以考虑二分或双指针。

我们记删(j,i)区间,每次移动i,就记录j的满足题意的极限位置,答案就是i-j+1(j,(j-1,j),(j-2,j).....)

我们再开两个树状数组来维护区间左边与右边的数,一开始i,j=1,左边还没有元素,右边是满的,每一次i移动意味a[i]位删除,我们更新一下数组并减去它带来的印象,同理j,下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,a[2002020];
int tr1[1000100],tr2[1000100];
int lowbit(int x)
{return x&(-x);
}
void add(int* tr,int k,int x)
{for(int i=k;i<=1e6;i+=lowbit(i)){tr[i]+=x;}
}
int ask(int* tr,int x)
{int ans=0;while(x>0){ans+=tr[x];x-=lowbit(x);}    return ans;
}
signed main()
{cin>>n>>k;int sum=0;for(int i=1;i<=n;i++) scanf("%lld",&a[i]);for(int i=n;i>=1;i--){add(tr2,a[i],1);sum+=ask(tr2,a[i]-1);}int cnt=(sum>=k);for(int i=1,j=1;i<=n;i++){add(tr2,a[i],-1);sum-=ask(tr2,a[i]-1);sum-=ask(tr1,1e6)-ask(tr1,a[i]);while(j<=i&&sum<k){add(tr1,a[j],1);sum+=ask(tr1,1e6)-ask(tr1,a[j]);sum+=ask(tr2,a[j]-1);j++;}cnt+=(i-j+1);}cout<<cnt;
}

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

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

相关文章

通过flask搭建,简单的网站,实现注册登录效果,初步了解搭建网页的基本架构。

网站架构了解 通过flask搭建&#xff0c;简单的网站&#xff0c;实现注册登录效果&#xff0c;初步了解搭建网页的基本架构。 前提准备 html在开发中最主要的一些标签知识flask中自带的接收信息给后台的语法 1&#xff09;html基础标签的使用 <h1>用于强调文本内容&…

【Qt】之【CMake】Error : The source.. does not match the soused

QT中cmak编译出现CMake Error: The source… does not match the soused 分析 前提是该项目是从另一个路径的项目复制过来的&#xff0c;编写代码时发现无论怎样修改代码&#xff0c;运行后都没有任何变化&#xff0c;以为是qtbug&#xff0c;重构重启都没用&#xff0c;最后…

websevere服务器从零搭建到上线(三)|IO多路复用小总结和服务器的基础框架

文章目录 epollselect和poll的优缺点epoll的原理以及优势epoll 好的网络服务器设计Reactor模型图解Reactor muduo库的Multiple Reactors模型 epoll select和poll的优缺点 1、单个进程能够监视的文件描述符的数量存在最大限制&#xff0c;通常是1024&#xff0c;当然可以更改数…

Spring底层入门(十一)

1、条件装配 在上一篇中&#xff0c;我们介绍了Spring&#xff0c;Spring MVC常见类的自动装配&#xff0c;在源码中可见许多以Conditional...开头的注解&#xff1a; Conditional 注解是Spring 框架提供的一种条件化装配的机制&#xff0c;它可以根据特定的条件来控制 Bean 的…

【Golang】 在 Gin 框架中添加网关中间件

在 Gin 框架中添加网关中间件是一种常见的做法&#xff0c;可以用于实现请求的预处理、身份验证、日志记录等功能。下面是一个简单的示例&#xff0c;演示如何在 Gin 框架中添加一个简单的网关中间件。 package mainimport ("fmt""net/http""time&qu…

什么是分库分表

读写分离主要应对的是数据库读并发&#xff0c;没有解决数据库存储问题。试想一下&#xff1a;如果 MySQL 一张表的数据量过大怎么办? 答案当然是分库分表 什么是分库&#xff1f; 分库 就是将数据库中的数据分散到不同的数据库上&#xff0c;可以垂直分库&#xff0c;也可…

windows通过sftp对Linux服务器进行上传下载

前言 通过简单高效的方式可以在没有远程连接软件的情况下对服务器进行上传下载。 方法 Windows下打开cmd命令行&#xff0c;输入sftp 用户名IP 上传下载命令 #上传文件&#xff0c;如果需要上传文件夹则 put -r 文件路径 上传到路径 sftp> put E:\clash-verge_1.6.2_a…

把3D模型加载到网页上需要什么技术?

要将3D模型加载到网页上并实现交互展示需求&#xff08;比如点击模型弹出一个窗口或控制模型的材质等&#xff09;&#xff0c;可以使用以下几种技术&#xff1a; 1、Three.js&#xff1a;这是一个非常流行的JavaScript库&#xff0c;用于在网页上渲染和显示3D图形。它支持多种…

基于svm的水果识别

1、程序界面介绍 该程序GUI界面包括待检测水果图片加载、检测结果输出、清空可视化框等。其中包括训练模型、加载图片、重置、识别检测按钮。 程序GUI界面 识别玉米识别西瓜 分类器识别水果基本原理&#xff1a; 由于每种水果的外形存在很大差异&#xff0c;比如西瓜与玉米&…

Hive-表设计优化

Hive-表设计优化 1.Hive查询基本原理 Hive的设计思想是通过元数据解析描述将HDFS上的文件映射成表。 基本的查询原理是当用户通过HQL语句对Hive中的表进行复杂数据处理和计算时&#xff0c;默认将其转换为分布式计算MapReduce程序对HDFS中的数据进行读取处理的过程。 当执行…

Nsight System无法使用collect GPU metrics

Nsight System无法使用“collect GPU metrics” 这里简单记录下Nsight System安装使用中发生的权限问题&#xff0c;主要针对的是collect GPU metrics无法使用的问题 原因分析&#xff1a; 根据英伟达官方文档的解释应该是GPU的权限问题&#xff0c;官方解决问题方法在此 解…

软件设计师笔记(二)-零碎要点

本文内容来自笔者学习zst 留下的笔记&#xff0c;都是零碎的要点&#xff0c;查缺补漏&#xff0c;若有错误请大家提出&#xff0c;希望大家都能通过&#xff0c;记得加上免费的关注&#xff01;谢谢&#xff01; 文章编辑于&#xff1a;2024-5-13 13:42:56 目录 1. 算法 [广…

【什么是范数】L1、L2范数介绍

一、 什么是范数 范数&#xff08;Norm&#xff09;是数学中用于衡量向量大小(或距离)的一种概念。在几何和代数中&#xff0c;范数可以提供一个向量长度或大小的量度。更正式地说&#xff0c;范数是一个函数&#xff0c;它将向量的集合映射到非负实数&#xff0c;满足以下性质…

社交媒体数据恢复:陌陌

确保你的手机已经进行了备份。备份可以提高数据恢复的成功率。 在电脑上下载并安装数据恢复软件。在使用软件进行恢复之前&#xff0c;请确保你的安卓手机已经在开发者选项中开启了USB调试模式。 使用USB数据线将手机连接至电脑。打开数据恢复软件&#xff0c;选择“陌陌聊天…

毕业论文写作神器:使用Latex写论文 安装texlive+texstudio 并添加IEEE模板

听说Latex写论文方便&#xff0c;更改格式方便&#xff0c;而且颜值高 LexLive2024安装 清华镜像网址&#xff1a;Index of /CTAN/systems/texlive/Images/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 下载完双击打开texlive2024.iso,然后点击 修改路径&#xf…

稻盛和夫《活法》读后感

最近几天又重读了一边稻盛和夫的《活法》&#xff0c;里面的观点让我感触颇多&#xff0c;现分享给诸君。 稻盛和夫毕业后&#xff0c;适逢经济萧条&#xff0c;没有好机会进入大公司深造&#xff0c;只能在一名教授的推荐下进入了一家做陶瓷绝缘体的公司&#xff0c;虽然公司…

Arduino-ILI9341驱动实现TFT屏输出中文四

Arduino-ILI9341驱动实现TFT屏输出中文四 1.概述 ILI9341驱动在TFT屏幕上不支持直接输出汉字&#xff0c;需要借助提取字模软件将汉字转为十六进制地址&#xff0c;然后通过改地址控制每行和每列点阵的亮和灭实现显示汉字功能。 2.ILI9341显示汉字 2.1.PCtoLCD2002取模软件…

面试宝典(2)——缓存篇(Redis)

面试宝典&#xff08;2&#xff09;——缓存篇&#xff08;Redis&#xff09; 1.Redis的主要用途有哪些&#xff1f; 缓存分布式锁&#xff1a;setnx&#xff0c;redisson消息队列&#xff0c;延迟队列 2.什么是缓存穿透&#xff1f; 查询一个不存在的数据&#xff0c;数据…

C++入门指南(中)

目录 ​编辑 一、C关键字(C98) 二、命名空间 2.1 域 2.2 命名空间域 2.1 命名空间定义 2.2 命名空间使用 三、C输入&输出 四、缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 五、函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling)…

告别黑板粉笔 高新技术进课堂 未来教室会成什么

现在&#xff0c;全国许多院校都经过引进信息化技能&#xff0c;完成智慧校园建造&#xff0c;推进教育均衡展开。一些校园的小学教室的信息化配备投入经费已达50万元/每间&#xff0c;初中是70万元&#xff0c;高中是90万元。这些新技能的投入运用有用的共享教育内容、精准地分…