度度熊回家 (模拟)

来源:互联网 发布:highcharts more.js 编辑:程序博客网 时间:2024/06/05 11:00

思路:先计算出从第0个坐标到第n-1个坐标的距离,然后枚举忽略[1,n2]的点,直接可以得到需要走的距离。复杂度O(n),当然暴力枚举再重新计算也是可以AC的,复杂度O(n2)


AC代码

#include <stdio.h>#include <algorithm>using namespace std;#define inf 0x3f3f3f3fconst int maxn = 50+5;int a[maxn];int main() {    int n;    while(scanf("%d", &n) == 1) {        for(int i = 0; i < n; i++) {            scanf("%d", &a[i]);        }        int s = a[0], len = 0;        for(int i = 1; i < n; i++) {            len += abs(a[i] - s);            s = a[i];        }        int ans = inf;        for(int i = 1; i < n-1; i++) {            //忽略第i个点            int t = len - abs(a[i]-a[i-1]) - abs(a[i]-a[i+1]);            t += abs(a[i-1]-a[i+1]);            ans = min(ans, t);        }        printf("%d\n", ans);    }    return 0;}

如有不当之处欢迎指出!

原创粉丝点击