1 条题解
-
0
容量告警 题解
核心考点
一遍扫描。
思路分析
维护当前容量与历史最大值,先计算候选新容量;越界时只增加作废计数。
需要特别检查空边界、相等值、最大规模和
long long溢出。若存在不可达状态,应使用与合法答案明显区分的无穷大或负无穷初始化。正确性说明
算法维护的状态或贪心选择恰好对应题目处理到当前位置时的全部有效决策。每一步只从已经正确的前缀状态转移,或作出不会损失最优解的局部选择;因此由归纳法,处理完全部输入后得到的就是题目要求的最优值或统计结果。
复杂度
复杂度满足题目完整数据范围;具体由主算法的循环层数决定。所有可能超过 32 位的累计量使用
long long。参考代码
#include <bits/stdc++.h> using namespace std; int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n;long long C,x; if(!(cin>>n>>C>>x))return 0;long long bad=0,mx=x;for(int i=0;i<n;i++){char op;long long v;cin>>op>>v;long long y=x+(op=='+'?v:-v);if(y<0||y>C)bad++;else x=y;mx=max(mx,x);}cout<<bad<<' '<<x<<' '<<mx<<'\n';}
- 1
信息
- ID
- CJM101
- 时间
- 3000ms
- 内存
- 512MiB
- 标签
- (无)
- 递交数
- 10
- 已通过
- 3
- 上传者