牛客小白月赛95

c相助

题目描述

此题为E题的easy版,只有aia_iai​的数据范围不同。

给你一个 nnn 个正整数组成的数组 a ,你每次操作可以选择一对 (i,j)( i, j )(i,j),满足 1≤i<j≤n1 \leq i < j \leq n1≤i<j≤n,且 ai=aja_{i} = a_{j}ai​=aj​ ,将 { ai,ai+1,...,aj−1,aja_{i} , a_{i+1} , ... , a_{j-1} , a_{j}ai​,ai+1​,...,aj−1​,aj​ } 这段数删除,操作之后数组变为 { a1,a2,...,ai−1,aj+1,...,an−1,ana_{1},a_{2}, ..., a_{i-1},a_{j+1}, ...,a_{n-1},a_{n}a1​,a2​,...,ai−1​,aj+1​,...,an−1​,an​ }。文文想知道最少要做多少次操作,才能将数组变为空。

输入描述:

 

第一行一个正整数输入 nnn (1≤n≤5×105)( 1 \leq n \leq 5 \times 10^5 )(1≤n≤5×105)。

第二行依次输入 nnn 个正整数 a1,a2,...,an−1,ana_{1},a_{2},...,a_{n-1},a_{n}a1​,a2​,...,an−1​,an​,每个数之间以空格分开。(0≤ai≤1)( 0 \leq a_i \leq 1 )(0≤ai​≤1)

输出描述:

输出一行,代表最少的操作次数,如果无论如何都无法使数组为空就输出 -1。

示例1

输入

5
0 1 0 1 1

输出

2

说明

例如,n 为 5,数组为{0,1,0,1,1}\{0, 1, 0, 1, 1\}{0,1,0,1,1},第一次操作我们可以选择 i=1i = 1i=1,j=3j = 3j=3,把这一段删除后数组变为 {1,1}\{1, 1\}{1,1},第二次操作我们可以选择 i=1i = 1i=1,j=2j = 2j=2,把这一段删除后数组变为空,操作了两次。

示例2

输入

5
1 1 1 1 0

输出

-1

做法

答案只有-1,1,2三种。当头尾元素相同时一次就可以消除;若有一个下标满足a[i]=a[1],且a[i+1]=a[n],则需要消除两次。其他情况则无法完全消除。

#include<bits/stdc++.h>
using namespace std;
int n;
int a[500010];
int cnt0,cnt1;
int main(){scanf("%d",&n);for(int i=1;i<=n;i++) cin>>a[i];if(a[1]==a[n]){if(n==1)cout<<-1;else cout<<1;return 0;}for(int i=1;i<=n;i++){if(i==1||i+1==n) continue;if(a[1]==a[i]&&a[i+1]==a[n]){cout<<2;return 0;}}cout<<-1;
}

D异或炸弹(easy)

题目描述

此题为F题的easy版本,与F题仅有m的取值范围不同

给定一个n∗nn*nn∗n的矩阵,初始全是 ​0​0​0,

现在文文手上有 mmm 个炸弹,

对于每一个炸弹,都有自己的 爆炸中心(x,y) 和 爆炸半径 r.

当矩阵内某个位置与爆炸中心的 曼哈顿距离 小于等于 r 时,该位置就会收到爆炸的影响, 爆炸的影响就是给这个位置上的数异或 1.

文文给你这 mmm 个炸弹的爆炸位置和爆炸半径,你需要回答文文这个矩阵中 1 的个数

如果不明白 异或操作 和 曼哈顿距离,请看最后的提示

输入描述:

第一行给定两个正整数 n,mn ,mn,m, 分别表示矩阵大小和炸弹数量 

接下来mmm行,每行333个正整数其中第 iii 行的前2个正整数 xi,yix_i ,y_ixi​,yi​ 表示第 iii 个炸弹的爆炸中心最后一个正整数 rir_iri​ 表示第 iii 个炸弹的爆炸半径

1≤n≤3000,1≤m≤60001 \leq n \leq 3000, 1\leq m \leq 60001≤n≤3000,1≤m≤6000

1≤xi,yi≤n1 \leq x_i, y_i \leq n1≤xi​,yi​≤n

0≤ri≤60000 \leq r_i \leq 60000≤ri​≤6000

输出描述:

输出被轰炸后的矩阵中 111 的个数

示例1

输入

5 1
3 3 1

输出

5

说明

 

案例解释

0 0 0 0 0

0 0 1 0 0

0 1 1 1 0

0 0 1 0 0

0 0 0 0 0

共有5个1 

备注:

关于异或的运算

0 ^ 1 = 1

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 0 = 0

关于曼哈顿距离的运算如果两个点的坐标分别是(x1,y1),(x2,y2)(x1,y1),(x2,y2)(x1,y1),(x2,y2) 那么两个点的曼哈顿距离d=∣x1−x2∣+∣y1−y2∣d = |x1-x2|+|y1-y2|d=∣x1−x2∣+∣y1−y2∣.

做法

#include<bits/stdc++.h>
using namespace std;
int n,m;
int cf[3010][3010];
int main(){scanf("%d%d",&n,&m);while(m--){int x,y,r;scanf("%d%d%d",&x,&y,&r);for(int i=x-r;i<=x+r;i++){//枚举行数if(i<1||i>n) continue;int l=r-abs(x-i);//距离cf[i][max(1,y-l)]++;//差分(异或次数)cf[i][min(n+1,y+l+1)]--;}}int cnt=0;for(int i=1;i<=n;i++){int a=0;//还原数组的值for(int j=1;j<=n;j++){a+=cf[i][j];cnt+=a%2;//异或次数为奇数则最终值是1,偶数则是0}}cout<<cnt;
}

E相依

#include<bits/stdc++.h>
using namespace std;
int n;
int a[500010],dp[500010],mn[500010];
int main(){scanf("%d",&n);memset(mn,0x3f,sizeof(mn));for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++){dp[i]=mn[a[i]]+1;mn[a[i]]=min(mn[a[i]],dp[i-1]);}if(dp[n]>=1e6) cout<<-1<<endl;else cout<<dp[n]<<endl;
}

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

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

相关文章

三丰云免费服务器

三丰云网址&#xff1a; https://www.sanfengyun.com 可申请免费云服务器&#xff0c;1核/1G内存/5M宽带/有公网IP/10G SSD硬盘/免备案。 收费云服务器&#xff0c;买2年送1年&#xff0c;有很多优惠

Lombok一文通

1、Lombok简介 作为java的忠实粉丝&#xff0c;但也不得不承认&#xff0c;java是一门比较啰嗦的语言&#xff0c;很多代码的编写远不如其他静态语言方便&#xff0c;更别说跟脚本语言比较了。 因此&#xff0c;lombok应运而生。 Lombok是一种工具库&#xff0c;它提供了一组…

msf攻击windows实例

环境&#xff1a;攻击机kali&#xff08;192.168.129.139&#xff09;&#xff0c;目标机windows10&#xff08;192.168.129.132&#xff09; 方法一&#xff1a;通过web站点&#xff0c;使用无文件的方式攻击利用执行&#xff08;命令执行漏洞&#xff09; 方法二&#xff1…

迪文 51单片机,全局变量、静态变量初始化失败,修正

1. 问题 51单片机全局变量常量的初始化&#xff0c;static code const函数内部静态变量初始化也失败&#xff0c;例如 void fun() {static int a 5;printf("a %d\n", a); //输入的不一定是5&#xff0c;是之前这个地址的值&#xff08;随机值&#xff09; }2. 解决…

Lua两个点号连接字符串

在Lua中&#xff0c;两个点号 .. 代表字符串连接操作符。当你想要将两个或多个字符串拼接在一起时&#xff0c;可以使用这个操作符。 以下是使用 .. 操作符的一些示例&#xff1a; local str1 "Hello, " local str2 "World!" local result str1 .. str2…

提示工程(Prompt Engineering)和代码生成

文心一言 提示工程&#xff08;Prompt Engineering&#xff09;和代码生成之间的关系主要体现在如何通过精心设计的提示来指导或优化代码生成的过程。以下是关于提示工程和代码生成的详细解释&#xff1a; 一、提示工程&#xff08;Prompt Engineering&#xff09; 提示工程…

路径操作函数

System.SysUtils.AnsiCompareFileName 根据当前语言环境比较文件名。 在 Windows 下不区分大小写&#xff0c;在 MAC OS 下区分大小写。 在不使用多字节字符集 (MBCS) 的 Windows 区域设置下&#xff0c;AnsiCompareFileName 与 AnsiCompareText 相同。在 MAC OS 和 Linux 下&…

KotlinConf 2024:深入了解Kotlin Multiplatform (KMP)

KotlinConf 2024&#xff1a;深入了解Kotlin Multiplatform (KMP) 在近期的Google I/O大会上&#xff0c;我们推荐了Kotlin Multiplatform (KMP)用于跨移动、网页、服务器和桌面平台共享业务逻辑&#xff0c;并在Google Workspace中采用了KMP。紧接着&#xff0c;KotlinConf 2…

【设计模式深度剖析】【7】【结构型】【享元模式】| 以高脚杯重复使用、GUI中的按钮为例说明,并对比Java类库设计加深理解

&#x1f448;️上一篇:外观模式 | 下一篇:结构型设计模式对比&#x1f449;️ 设计模式-专栏&#x1f448;️ 目录 享元模式定义英文原话直译如何理解&#xff1f;字面理解例子&#xff1a;高脚杯的重复使用例子&#xff1a;GUI中的按钮传统方式使用享元模式 4个角色1. …

锻压设备智能制造工厂物联数字孪生平台,推进制造业数字化转型

锻压设备智能制造工厂物联数字孪生平台&#xff0c;推进制造业数字化转型。随着全球制造业的飞速发展&#xff0c;数字化转型已经成为企业提升竞争力、实现可持续发展的关键。在锻压设备智能制造领域&#xff0c;工业物联数字孪生平台以其强大的数据集成、分析和管理能力&#…

国际物流管理系统的选择:花钱不怕,就怕花冤枉钱

现在市场上的国际物流管理系统还是非常多的&#xff0c;想在这么多类型的系统中选择一套适合自己的系统确实不是个简单的事情。 尤其是现在很多物流商其实都是比较小的国际物流商&#xff0c;很多大型的&#xff0c;过于复杂的系统并不适合这个群体。那这个群体应该怎么选择国…

什么是Java序列化?它有什么用途?

Java序列化&#xff08;Serialization&#xff09;是将Java对象转换为字节流的过程&#xff0c;反序列化&#xff08;Deserialization&#xff09;则是将字节流恢复为Java对象的过程。Java的序列化机制使得对象的持久化和跨网络传输成为可能。 Java序列化的用途 持久化存储&am…

mfc140u.dll丢失的解决方法有哪些?怎么全面修复mfc140u.dll文件

mfc140u.dll丢失其实相对来说不太常见到&#xff0c;因为这个文件一般是不丢失的&#xff0c;不过既然有人遇到这种问题&#xff0c;那么小编一定满足各位&#xff0c;给大家详细的唠叨一下mfc140u.dll丢失的各种解决方法&#xff0c;教大家以最快最有效率的方法去解决mfc140u.…

【Redis】Redis分片集群中数据的存储和读取

Redis 分片集群&#xff08;Sharded Cluster&#xff09;通过将数据分散到多个节点上来实现高可用性和可扩展性。它采用一致性哈希&#xff08;Consistent Hashing&#xff09;或其他哈希算法来将键分配到不同的分片中。每个分片由一个或多个 Redis 实例组成&#xff0c;这些实…

Spring MVC 源码分析之 DispatcherServlet#getHandlerAdapter 方法

前言&#xff1a; 前面我们分析了 Spring MVC 的工作流程源码&#xff0c;其核心是 DispatcherServlet#doDispatch 方法&#xff0c;我们前面分析了获取 Handler 的方法 DispatcherServlet#getHandler 方法&#xff0c;本篇我们重点分析一下获取当前请求的适配器 HandlerAdapt…

C语言练习题之——从简单到烧脑(13)(每日两道)

打印爱心 1.1:普通输出爱心 #include<stdio.h> int main() {printf(" ********* *********\n"); //7&#xff08;代表边上的空格&#xff09;printf(" *************** ***************\n"); //4printf(" ************…

AI播客下载:a16z (主题为AI、web3、生物技术等风险投资)

a16z播客是一个综合性的科技和创新领域的媒体平台&#xff0c;通过多种节目形式和丰富的内容&#xff0c;为广大听众提供了一个了解最新科技趋势和创新思维的窗口。a16z播客是由安德里森霍罗威茨&#xff08;Andreessen Horowitz&#xff0c;简称a16z&#xff09;推出的一个科技…

汽车MCU虚拟化--对中断虚拟化的思考(1)

目录 1.中断虚拟化的困惑 2.从R52入手 3.小结 1.中断虚拟化的困惑 在车控类控制器里&#xff0c;中断对于我们来说是非常宝贵的资源&#xff0c;可大幅提高系统实时性。 这些中断基本都属于实际物理硬中断(软中断另说)&#xff0c;例如对一个按键按下的中断响应&#xff0…

ClickHouse知识点

Clickhouse clickhouse是一款列式存储数据库。 主要应用于OLAP领域。 OLAP&#xff1a;联机分析处理&#xff0c;主要做数据分析。 OLTP&#xff1a;联机事务处理&#xff0c;主要处理事务。 clickhouse索引和分区&#xff1a; clickhouse可以进行分区操作&#xff0c;对…

上海公司吊销不管了会有影响吗?

上海公司吊销不管了会有影响吗&#xff1f; 上海公司&#xff0c;工商显示吊销状态&#xff0c;不管了有影响吗&#xff1f; 我的回答是有影响的。 公司吊销之后&#xff0c;公司股东、高管人员会进入工商三年黑名单。三年之后&#xff0c;不得担任其他公司高管&#xff0c;当…