本文主要是介绍Inverted Signs Gym-101522I,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Inverted Signs Gym-101522I
标签:思维&逻辑
题目链接
/*题意:N个数,定义一个混乱度,sum|Hi+1 - Hi|(1 <= i <= N - 1),Hi可以为0,可以翻转一个连续的符号相同的字串,来减小这个值,即负数字串->正数字串,反之成立,求可以达到的最小的混乱度。分析:选择一个区间只会对两个端点产生影响。模拟程序走一遍样例会很清晰。
*/
#include <stdio.h>
#include <math.h>
#include <queue>
using namespace std;const int maxn = 1000005;
int h[maxn];int main(){int N, i;while(scanf("%d", &N) != EOF){__int64 ans = 0;priority_queue <__int64> q;for(i = 1; i <= N; i++){scanf("%d", &h[i]);if(i > 1) ans += fabs(h[i] - h[i - 1]);__int64 d = fabs(h[i] - h[i - 1]) - fabs(h[i] + h[i - 1]);q.push(d);}for(i = 0; i < 2 && !q.empty(); i++){int u = q.top();q.pop();if(u > 0) ans -= u;}printf("%lld\n", ans);}return 0;
}
这篇关于Inverted Signs Gym-101522I的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!