P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…

P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…

题目入口:P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…

写在前面

不要看中文翻译,翻译有误
主要思想:
sum数组记录当前位置牛的理智度之和
dp数组记录分组到当前牛的最多分组数

AC代码

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MaxSize 1010
int sum[MaxSize], dp[MaxSize];
//sum数组记录当前位置牛的理智度之和 dp数组记录分组到当前牛的最多分组数
int main() {
    int n, tmp;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++){
        scanf("%d", &tmp);
        sum[i] = sum[i-1] + tmp;    //前缀和
        if (sum[i] >= 0) dp[i] = 1; //标志分组到当前牛有方案(至少为1)
    }
    for (int i = 1; i <= n; i++)
        for (int j = 1; j < i; j++)
            if (dp[i] > 0 && sum[i]-sum[j] >= 0)
                //当前牛之前从j到i理智度和非负(新方案出炉)
                dp[i] = max(dp[i], dp[j]+1);    //取更多方案数
    if (!dp[n]) printf("Impossible\n"); //若无可行方案
    else printf("%d\n", dp[n]); //输出最多方案数
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值