7 条题解

  • 1
    @ 2024-10-6 21:21:38

    题目大意

    给一个长度为 nn 的序列 aa,每次操作可以选择一个整数 ii ,在 aiai+1a_i \ne a_{i+1} 的情况下删除 ai+1a_{i+1} 并修改 aia_i,求共可以进行几次操作。

    思路

    通过观察样例可以发现,当序列中的每一项都相等时,是无法进行操作的,因为没有任意 ii 满足 aiai+1a_i \ne a_{i+1},此时答案为0。
    此外,只要有一个与其它项不同的项,那么我们可以操作到序列中仅有一个项,在这里放个图:
    可见其中 n1n - 1 个数都被删除了,则结果为 n1n - 1
    那么我们可以愉快地写代码啦!

    代码实现

    #include<bits/stdc++.h>
    using namespace std;
    int main(void) {
    	int n,a[100005]= {0},b,flag=1; //开的空间比数据范围大5是个好习惯
    	cin>>n>>a[1],b=a[1];
    	for(int i=2; i<=n; i++) {
    		cin>>a[i];
    		if(a[i]!=b)flag=0;
    	}
    	if(flag)cout<<0;
    	else cout<<n-1;
    	return 0;
    }
    

    信息

    ID
    21
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    1499
    已通过
    386
    上传者