专栏文章
题解:P11061 【MX-X4-T1】「Jason-1」IO++
P11061题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @minpdfmi
- 此快照首次捕获于
- 2025/12/02 06:10 3 个月前
- 此快照最后确认于
- 2025/12/02 06:10 3 个月前
芜湖,第一次见到 年前到现在还可以提交题解的题目。
思路
先解释题目。
一个只有输入输出的程序,它的行为用数组 来表示。如果 为 ,就是输入,否则为输出。
但是呢,他有一个要求,输出的时候必须执行了 次输入。然后求这个程序至少要有多长。
每输入或者输出一次,长度都加 ,但是又有一个要求,所以不能直接加。输入的先不管,先算输出的,输出的就是数组 中不为 的部分,把他们出现的次数加起来就可以,如果是输入怎么办?我们可以把题目提的要求转换一下思路,要求要有 次输入,那我直接求 的最大值作为输入的次数不就可以了吗?
如果我这次输出需要的输入次数不够,那我就增加输入次数,直到可以进行这一次输出,当然增加不要超过了,只要能刚好执行这一次的输出(其实就是比较啦,如果需要输入次数的比当前的大,就把当前的输入次数变成现在需要的输入次数,就是把
ans 变成 )。那我定义两个变量
ans 和 sum,它们分别用于求输入的次数和输出的次数,每到 不为 的时候,sum 就加一,并且进行一次比较,如果 要求的输入次数,大与当前的输入次数 ,那么就把 当做输入的次数。最后把两个加起来输出就可以了。
代码
CPP#include <bits/stdc++.h>
using namespace std;
int main() {
int n, sum = 0, ans = 0; //一个是输入的总量,一个是输出的总量
cin >> n;
while (n--) {
int a;
cin >> a;
if (a != 0) {
sum++;
ans = max(ans, a);
//max用于判断当前的输入次数能不能执行这一次输出
//如果不行,那就是不够,要再增加输入次数
//增加到刚好可以执行这一次输出
}
}
cout << ans + sum << endl;
system("pause");
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...