// #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432 // 因为这个题我的思路是:记录上一个值和连续递增的值的个数,如果达到3个就把第三个值变成上一个值减一,为了让他最大化这样不容易与下一个形成递增 // 代码我用了很多三目运算符来代替if来节约性能(最近遇到了,就想试试)降低了可读性,其它题解应该是正常写的 #include <iostream> using namespace std; int main() { ios_base::sync_with_stdio(false), cin.tie(0); int n, last, x, count = 1;//-------记录总数, 上一个, 当前, 连续递增 cin >> n; cin >> last; //cout << gg(de(count)); int ans = 0; for (int i = 1; i < n; i++) { cin >> x; #ifdef dede//-------这个是bug用的,这里不会编译 cout << strde << de(x) << endl; #endif // dede count += (x >= last);//----------如果x>=last,count++; #ifdef dede cout << strde << de(count) << endl; #endif ans += (count == 3 ? 1 : 0);//---------count达到3个,ans++ count = (count == 3 || x < last ? 1 : count);//-----维护count last = (x >= last && count == 1 ? x - 1 : x);//-----更新last #ifdef dede cout << strde << endl << strde << de(ans) << kkk << de(count) << kkk << de(last) << endl; #endif } cout << ans; } // 64 位输出请用 printf("%lld")