就是最大子段和的变体。最大子段和只要一个数组,记录前i个里的最大子段和在f[i]里就行了,但是最大子段积因为有负乘负得正这一点,所以还需要把前i个里的最小子段积存起来。就可以了。直接上代码:

/** Author    : ben*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <functional>
#include <numeric>
#include <cctype>
using namespace std;
//输入非负整数,用法int a = get_int();
int get_int() {int res = 0, ch;while (!((ch = getchar()) >= '0' && ch <= '9')) {if (ch == EOF)return -1;}res = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9')res = res * 10 + (ch - '0');return res;
}
//输入整数(包括负整数,故不能通过返回值判断是否输入到EOF,本函数当输入到EOF时,返回-1),用法int a = get_int2();
int get_int2() {int res = 0, ch, flag = 0;while (!((ch = getchar()) >= '0' && ch <= '9')) {if (ch == '-')flag = 1;if (ch == EOF)return -1;}res = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9')res = res * 10 + (ch - '0');if (flag == 1)res = -res;return res;
}const int MAXN = 10009;
int maxr[MAXN], minr[MAXN];inline int mymul(int a, int b) {int sign = 1;if (a * b == 0) {return 0;}if (a * b < 0) {sign = -1;}return sign * (abs(a) + abs(b));
}int main() {int T = get_int(), tmp, N;int a[3];for (int t = 1; t <= T; t++) {N = get_int();maxr[0] = minr[0] = 0;int ans = 0;for (int i = 1; i <= N; i++) {tmp = get_int2() / 2;a[0] = mymul(maxr[i - 1], tmp);a[1] = mymul(minr[i - 1], tmp);a[2] = tmp;sort(a, a + 3);maxr[i] = a[2];ans = maxr[i] > ans ? maxr[i] : ans;minr[i] = a[0];}printf("Case #%d: %d\n", t, ans);}return 0;
}

转载于:https://www.cnblogs.com/moonbay/p/4263040.html

hdu4561 bjfu1270 最大子段积相关推荐

  1. 机器学习、计算机视觉面经整理(持续完善整理中……)

    算法岗计算机视觉方向求职经验总结 进入11月份,楼主找工作也基本进入尾声了,从7月份开始关注牛客网,在求职的过程中学到了不少,感谢牛客提供这样一个平台,让自己的求职历程不再孤单. 先说一下楼主教育背景 ...

  2. java求数组中满足给定和的数对_关于数组的几道面试题 - zdd - 博客园

    2011年2月15日更新,加入找出绝对值最小的元素一题 数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论.目前有以下1 ...

  3. 计算方法之数值积分方法——复化梯形法,复化辛普森法,龙贝格法,三点高斯公式 附matlap程序下载

    数值积分 复化求积法就是将求积区间[a,b]划分为n等份,步长h=(b-a)/n,等分点为xi=a+ih,i=0,1,2,-,n.然后用低阶求积公式求的每个字段[xi,xi+1]上的积分值I,然后再将 ...

  4. hdu4561 连续最大积

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

  5. P1115 最大子段和(python3实现)

    最大子段和 - 洛谷 """P1115 最大子段和(python3实现) https://www.luogu.com.cn/problem/P1115"&quo ...

  6. 台积电2nm与3nm制程

    台积电2nm与3nm制程 台湾积体电路制造股份有限公司,中文简称:台积电,英文简称:tsmc,属于半导体制造公司.成立于1987年,是全球第一家专业积体电路制造服务(晶圆代工foundry)企业,总部 ...

  7. 薄膜封装,等离子体技术,原子层沉积,化学气相沉积

    薄膜封装,等离子体技术,原子层沉积,化学气相沉积 薄膜封装 薄膜封装概念 薄膜真空沉积的一个很重要的技术应用就是薄膜封装.人们对薄膜封装最简单的认识就是日常生活中最常见的保鲜膜,水氧渗透率大约是1-1 ...

  8. 原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展

    原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展 Atomic Layer Deposition (ALD) and Chemical Vapor Deposition (CV ...

  9. 机器人建模中移动关节如何建立坐标系_机器人工程师进阶之路(八)指数积(PoE)建立机械臂模型及正运动...

    梁政:机器人工程师进阶之路(六)旋量法(上)​zhuanlan.zhihu.com 梁政:机器人工程师进阶之路(七)旋量法(下)​zhuanlan.zhihu.com 从上两篇我们可以了解到,利用旋量 ...

最新文章

  1. 阿里P8都留不住的程序员和他们的公众号!
  2. DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程?
  3. Pandas.DataFrame删除指定行和列(drop)
  4. Java 转型问题(向上转型和向下转型)
  5. 不仅能搜索还能查信息 带你了解LBS应用
  6. Find Minimum in Rotated Sorted Array II
  7. 超硬核直播课 | 自主旋翼无人机主流算法、视觉SLAM基础
  8. MongoDB小型文档型数据库使用
  9. java 龟兔赛跑预测_[Java] 蓝桥杯BASIC-24 基础练习 龟兔赛跑预测
  10. “头脑王者”爆红被封,微信小程序迎来蛮荒期
  11. 【java学习之路】(java框架)005.mybatis框架整合及逆向工厂
  12. 横向合计代码 锐浪报表_锐浪报表使用技巧
  13. Excel 宏编程的常用代码
  14. 桃李春风一杯酒,江湖夜雨十年灯。—第十一天
  15. android 记事本软件,安卓日历记事本软件
  16. winform自定义控件无法显示在工具箱中以及显示但使用时出错的解决办法
  17. 使用HBuilder打包App教程(图文教程)
  18. 每日一犬 · 哈瓦那犬
  19. C++语言入门3(定义整数与整数输入)
  20. 基于硬件定时器的软件定时器

热门文章

  1. BRI OS 高级ping
  2. 分布式系统概念和设计 第十五章 (1)
  3. 产品经理的四点思考:不该简单满足用户需求
  4. 企业如何对付DDoS***
  5. python的深拷贝和浅拷贝
  6. 计算机硬件检测维修资料,计算机硬件检测维修实训台 Computer hardware detection and maintenance training bench...
  7. windows怎么用gpu跑python程序_在GPU(windows)上运行Theano的命令
  8. 小小在线教授何为BTC跳矿(教授如何在线扩大收益)
  9. Bootstrap3 弹出提示插件的使用方法
  10. android androidruntime java,java – Runtime.exec():在Android中重启?