[AGC024C] Sequence Growing Easy 题解
这里提供一种比较新奇的做法。
做这种题首先要特判:如果
特判完就可以开始思考正解。我们先从样例 1 出发。
样例输入 #1:
4
0
1
1
2
该如何操作才能使
我们先这么操作:
接着:
最后:
可以观察到,当
但如果
放代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
main(){
ios::sync_with_stdio(false);
int n,c=0; cin>>n;
vector<int> v(n);
for(auto &i:v)cin>>i;
if(v[0])cout<<"-1\n",exit(0); // 如果第一个数就不为 0 那么肯定无解
for(int i=1;i<n;i++){
if(v[i]>v[i-1]+1)cout<<"-1\n",exit(0); // 无解的第二种情况
c+=v[i]>v[i-1]?1:v[i]; // 分类讨论
}
cout<<c<<endl;
return 0;
}