打卡信奥刷题(849)用C++信奥P10840[普及组/提高] 【MX-J2-T1】Turtle and Sequences

P10840 【MX-J2-T1】Turtle and Sequences

题目背景

原题链接:https://oier.team/problems/J2B

题目描述

给你一个序列 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an。你可以对这个序列进行若干次操作。

设一次操作前序列长度为 m m m,那么这次操作你可以选择一个整数 i i i 使得 1 ≤ i ≤ m − 1 1 \le i \le m - 1 1im1 a i ≠ a i + 1 a_i \ne a_{i + 1} ai=ai+1,删除 a i + 1 a_{i + 1} ai+1 并把 a i a_i ai 的值设成任意整数

求你最多能进行多少次操作。

输入格式

第一行包含一个正整数 n n n,表示序列的初始长度。

第二行包含 n n n 个正整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an

输出格式

一行一个非负整数,表示最多能进行的操作次数。

输入输出样例 #1

输入 #1

2
1 2

输出 #1

1

输入输出样例 #2

输入 #2

3
1 1 1

输出 #2

0

输入输出样例 #3

输入 #3

4
1 1 45 14

输出 #3

3

说明/提示

【样例解释 #1】

可以选择 i = 1 i = 1 i=1,删除 a 2 a_2 a2 后把 a 1 a_1 a1 的值设成 3 3 3。此时 a = [ 3 ] a = [3] a=[3],无法再进行任何操作。所以答案是 1 1 1

【样例解释 #2】

无法进行任何操作,所以答案是 0 0 0

【数据范围】

本题采用捆绑测试且开启子任务依赖。

子任务编号分值 n ≤ n \le n特殊性质子任务依赖
1 1 1 34 34 34 2 2 2
2 2 2 19 19 19 1 0 5 10^5 105 a 1 = a 2 = ⋯ = a n a_1 = a_2 = \cdots = a_n a1=a2==an
3 3 3 47 47 47 1 0 5 10^5 105 1 , 2 1, 2 1,2

对于所有数据,满足 1 ≤ n ≤ 1 0 5 1 \le n \le 10^5 1n105 1 ≤ a i ≤ 1 0 9 1 \le a_i \le 10^9 1ai109

C++实现

#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
bool flag;
int main(){
scanf(“%d”,&n);
for(int i=1;i<=n;i++){
scanf(“%d”,&a[i]);
if(a[i]!=a[i-1]&&i!=1){
flag=1;
}
}
cout<<(flag?n-1:0);
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值