题意:

连续最大积
Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 1354    Accepted Submission(s): 458

Problem Description
小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢!

比如我们有如下随机数组:
2 2 0 -2 0 2 2 -2 -2 0 
在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。

现在小明请你帮忙算出这个最大值。

Input
第一行输入一个正整数T,表示总共有T组数据(T <= 200)。
接下来的T组数据,每组数据第一行输入N,表示数组的元素总个数(1<= N <= 10000)。
再接下来输入N个由0,-2,2组成的元素,元素之间用空格分开。

Output
对于每组数据,先输出Case数。
如果最终的答案小于等于0,直接输出0
否则若答案是2^x ,输出x即可。
每组数据占一行,具体输出格式参见样例。

Sample Input
2
2
-2 0
10
2 2 0 -2 0 2 2 -2 -2 0

Sample Output
Case #1: 0

Case #2: 4


思路:
     和最大连续子序列差不多,当0的时候置为0,要注意的事还有开个东西,记录当前有多少个负数,更新的时候只有偶数的时候在更新,就这样,果断敲完,果断wa了,哎! 其实没考虑到这个问题,-2 2 2 2 2 2  我们在倒着跑一便就能排除这种情况了,因为毕竟只有奇偶两种情况...还有一点就是,如果最小的是-2那么只哟一种情况 就是只哟一个数字 并且这个数字是-2,自己稍微想下就明白,不解释...


#include<stdio.h>#define N (10000 + 500)

int num[N];int main ()
{int t ,n ,i ,ans_max ,cas = 1;scanf("%d" ,&t);while(t--){scanf("%d" ,&n);int mk0 = 0;for(i = 1 ;i <= n ;i ++){scanf("%d" ,&num[i]);if(num[i]) mk0 = 1;}printf("Case #%d: " ,cas ++);if(!mk0 || n == 1 && num[1] == -2) {printf("0\n");continue;}ans_max = 0;int now = 0;int ss = 0;for(i = 1 ;i <= n ;i ++){if(!num[i]){ss = now = 0;continue;}if(num[i] < 0) ss ++;now ++;if(ss % 2 == 0 && ans_max < now)ans_max = now;}now = 0;ss = 0;for(i = n ;i >= 1;i --){if(!num[i]){ss = now = 0;continue;}if(num[i] < 0) ss ++;now ++;if(ss % 2 == 0 && ans_max < now)ans_max = now;}printf("%d\n" ,ans_max);}return 0;
}

hdu4561 连续最大积相关推荐

  1. 杭电4561 连续最大积

    连续最大积 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Subm ...

  2. hdu 4561 模拟小题or连续最大积

    Description 小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢! 比如我们有如下随机数组: ...

  3. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

  4. [转]常见的动态规划问题分析与求解

    动态规划(Dynamic Programming,简称DP),虽然抽象后进行求解的思路并不复杂,但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一,并不像回溯法具有解决绝 ...

  5. Leecode-动态规划专题训练

    动态规划问题基本解题步骤 设计状态 写出状态转移方程 设置初始状态 处理非法状态 执行状态转移 后处理 返回最终结果 显式转移方程 斐波那契数列 阶乘 隐式转移方程 爬楼梯 爬楼梯最小花费 注意:对于 ...

  6. 生命,宇宙以及一切事物的答案是...42?

    "那个伟大的问题,关于生命.宇宙以及一切的问题的答案是--" "42."深思用无限的威严和平静的语调说. 01 终极问题的终极答案 英国作家道格拉斯·亚当斯(D ...

  7. 2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答

    2020全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及参考解答 简介 赛题构成 代码提交说明 成绩评定 2020真题 1-1 数字与相邻的前.后数字之和可以被4整除 题目 个人对 ...

  8. 动态规划与贪心算法比较

    动态规划和贪心算法比较 动态规划: 动态规划一般分为线性动规.区域动规.树形动规.背包动规四类 动态规划程序设计师是对解最优化问题的一种途径.一种方法,而不是一种特殊的算法,并不是一个标准的数学表达式 ...

  9. 数组中最大连续子数组和,最大连续子数组积,最大递增子序列

    最大连续子数组和: 递推式:curmax=max(a[i],curmax)    其中curmax是以i为结尾(意思必须取到a[i])和的最大值,其中每次循环比较curmax和已经保存最大值 最大连续 ...

最新文章

  1. 鼠标滚动倾斜分割切换
  2. 【DP】回文词 (ssl 1813)
  3. (48)Verilog HDL UART发送设计
  4. android 静默暗转_Android静默安装
  5. 2007-11-22 21:24 大端(Big Endian)与小端(Little Endian)详解
  6. 黑马程序员传智播客 python 迭代器学习笔记
  7. 是男人就下100层【第二层】——帮美女更衣(2)
  8. IBM BladeCenter使用管理模AMM通过虚拟软驱加载驱动_zhanggqe_20120626_v1(zhanggqe@DC)
  9. 易课堂之算法注册机编写1
  10. 开始起飞-golang编码技巧分享--Dave Cheney博客读后整理
  11. pd.concat实现数据合并
  12. nginx反向代理实现指定接口访问指定机器
  13. 【日常】从批量合并 PDF 到 PyPDF2 的使用
  14. NeXt VLAD多模态视频分类
  15. ext 中checkbox 无法取消选中行,全选按钮全选问题
  16. scanf() 的返回值
  17. 蚂蚁大规模 Kubernetes 集群无损升级实践指南【探索篇】
  18. 三种类型SD卡的对比
  19. 圣魔之血java_818你最喜欢的动画电影!注:是电影哦!!!!
  20. c语言中invert什么意思_c语言setbits,invert

热门文章

  1. mysql中RAND()随便查询记录效率问题和解决的方法分享
  2. Spark-ML-数据获取/处理/准备
  3. Java parallel control
  4. 添加firefox4的deb源,直接安装
  5. 在c#中实现类似C语言中的memset功能
  6. 比赛-模拟赛 (17 Aug, 2018) (待施工)
  7. 新入门的小白,整理一下特别简单实用的div+css兼容性的问题。
  8. C# Java间进行RSA加密解密交互
  9. 2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)
  10. 转载 python扩展问题”unable to find vcvarsall.bat“的解决