洛谷P1569-Generic Cow Protests(一维区间DP)

简介: 洛谷P1569-Generic Cow Protests(一维区间DP)

题目描述:


约翰家的n头奶牛聚集在一起,排成一列,正在进行一项抗议活动。第i头奶牛的理智度为 ai。

约翰希望奶牛在抗议时保持理性,为此,他打算将所有的奶牛隔离成若干个小组,每个小组内的奶牛的理智度总和都要不小于零。

由于奶牛是按直线排列的,所以一个小组内的奶牛位置必须是连续的。请帮助约翰计算一下,最多分成几组。


输入格式:



第一行一个正整数 n,表示牛的数目。

接下来 n 行,每行一个整数,表示每个牛的理智度。


输出格式:


若存在合法分组方案,输出一行一个整数表示答案;否则输出 Impossible


样例输入:


4

2

3

-3

1  


样例输出:



3


说明/提示:

【数据规模和约定】

对于 30% 的数据,1≤n≤20;

对于 100% 的数据,1≤n≤1000,∣ai∣≤105。


AC Code:


#include<bits/stdc++.h>
using namespace std;
#define N 1010
int n,dp[N],sum[N];
int main() {
  scanf("%d",&n);
  for(int i=1;i<=n;i++) {
    scanf("%d",&sum[i]);
    sum[i]+=sum[i-1];//记录每一段的和 
    if(sum[i]>=0) {
      dp[i]=1;//至少分成一组 
    }
  }
  for(int i=1;i<=n;i++) {//遍历1~n 
    for(int j=0;j<i;j++) {//从0到i-1找到第j个数,满足下面的条件 
      if(dp[j]>0&&sum[i]-sum[j]>=0) {
        dp[i]=max(dp[i],dp[j]+1);//状态转移方程 
      }
    }
  }
  if(dp[n]==0) {//无法分组,始终等于0 
    printf("Impossible\n");
  }else {
    printf("%d\n",dp[n]);
  }
  return 0;
}

目录
打赏
0
0
0
0
86
分享
相关文章
Android native层实现MediaCodec编码H264/HEVC
Android平台在上层实现mediacodec的编码,资料泛滥,已经不再是难事,今天给大家介绍下,如何在Android native层实现MediaCodec编码H264/HEVC,网上千篇一律的接口说明,这里不再赘述,本文主要介绍下,一些需要注意的点,权当抛砖引玉,相关设计界面如下:
405 0
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
101 11
享受成本分析自由,体验账单数据订阅及查询分析功能
使用DataWorks进行账单数据订阅和查询分析,您可以有效地管理和可视化您的阿里云消费数据。本指南提供了详细步骤和示例,帮助您快速入门实现账单数据的高效分析。
914 9
享受成本分析自由,体验账单数据订阅及查询分析功能
|
10月前
|
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
114 1
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
10月前
|
阿里云实时计算Flink版的评测
阿里云实时计算Flink版的评测
168 15
|
11月前
【Matlab 2019b】Matlab在figure中如何把横坐标或者纵坐标单位转换为10的几次方
本文提供了在Matlab中如何改变图形坐标轴单位的方法,举例说明了如何将横轴刻度标签设置为特定的年份,并调整刻度取值以匹配自变量的变化。
1667 1
基于SpringBoot+Vue的商业辅助决策系统的设计与实现(源码+部署说明+演示视频+源码介绍)(1)
基于SpringBoot+Vue的商业辅助决策系统的设计与实现(源码+部署说明+演示视频+源码介绍)
126 1
【C 言专栏】C 语言中的多线程编程
【5月更文挑战第5天】本文探讨了C语言中的多线程编程,包括多线程概念、通过POSIX线程库和Windows线程库的实现方式、基本步骤(创建、执行、同步、销毁线程)、线程同步机制(互斥锁、条件变量、信号量)以及优点(提高性能、增强并发处理、改善用户体验)。同时,文章指出多线程编程面临的挑战如线程安全、死锁和资源竞争,并提及内存管理问题。通过案例分析和展望未来趋势,强调了掌握多线程编程在提升程序效率和应对复杂任务中的重要性。
472 0
【C 言专栏】C 语言中的多线程编程
对于修改后Nacos端口,连接超时,java.util.concurrent.TimeoutException: Waited 3000 milliseconds (plus 5 millisec
对于修改后Nacos端口,连接超时,java.util.concurrent.TimeoutException: Waited 3000 milliseconds (plus 5 millisec
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等