题解:P11061 【MX-X4-T1】「Jason-1」IO++

· · 题解

把这些语句分成三类:

  1. 输入语句:因为两个程序能实现相同功能需要的条件之中有 两个程序执行的输出语句次数相同。所以所有输出语句都不能变,只能想办法删掉一些输入语句。

  2. 在输出语句的最大值之后的输入语句:都可以删,因为他们根本用不上。很明显,这种语句的数量就是 sum-\max_{i=1}^n a_i,其中,sum 是输入语句的总数。

  3. 而在这个最大值前面的:一个都不能删。如果删了一个,后面的补上来,之后匹配好输出语句的输入都位移了。

所以答案就是第二类语句的数量。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int mx=0;
    int sum=0;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        if(x==0){
            sum++;
        }
        else{
            mx=max(mx,x);
        }
    }
    cout<<n-(sum-mx);
}