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 1≤i≤m−1 且 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 1≤n≤105, 1 ≤ a i ≤ 1 0 9 1 \le a_i \le 10^9 1≤ai≤109。
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考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
用C++信奥P10840普及组提高 【MX-J2-T1】Turtle and Sequences&spm=1001.2101.3001.5002&articleId=145819554&d=1&t=3&u=ae5bd3e51ac949519e8bbc405958bb66)
260

被折叠的 条评论
为什么被折叠?



