UVa 507 - Jill Rides Again

来源:互联网 发布:灌篮高手漫画全集软件 编辑:程序博客网 时间:2024/05/21 15:51

传送门UVa 507 - Jill Rides Again


题意:求最大子序列。


明明是动态规划的题目,竟然放到这个专题。。。

动态规划的经典问题。

要使区间尽量大,这个条件没想清楚,折腾了一小时。。。


#include <cstdio>using namespace std;const int MAXN = 21000;int sumSe[MAXN];int main(){    //freopen("input.txt", "r", stdin);    int T, i, j, n, temp, sum, maxNum, tempMin, start, target, tempStart, cases = 1;    scanf("%d", &T);    while (T--)    {        sum = 0;        scanf("%d", &n);        for (i = 1; i < n; i++)        {            scanf("%d", &temp);            sum += temp;            sumSe[i] = sum;        }        maxNum = -2147483646, tempMin = 0;        start = tempStart = target = 0;        for (i = 1; i < n; i++)        {            int t = sumSe[i] - tempMin;            if (t > maxNum || (t == maxNum && i - tempStart > target - start))            {                maxNum = t;                start = tempStart;                target = i;            }            if (sumSe[i] < tempMin)            {                tempMin = sumSe[i];                tempStart = i;            }        }        if (maxNum > 0)            printf("The nicest part of route %d is between stops %d and %d\n", cases++, ++start, ++target);        else            printf("Route %d has no nice parts\n", cases++);    }    return 0;}


0 0
原创粉丝点击