问题描述
给出NNN个整数。你要选择至少一个数,使得你选的数的乘积最大。 保证任意选一些数相乘的绝对值都不会大于263−12^{63}-12​63​​−1。
输入描述
第一行读入一个数TTT表示数据组数。 对于每组数据: 第一行是一个数NNN,第二行是NNN个整数。 1≤T≤10001 \leq T \leq 10001≤T≤1000 1≤N≤621 \leq N \leq 621≤N≤62 hack时建议输出最后一行的行末回车;每一行的结尾不要输出空格。
输出描述
对于每组数据,输出一个数表示最大的乘积。
输入样例
1
3
1 2 3
输出样例
6

这题就不多说了,就是坑比较多,出题人挖了这么多坑,只能由我们自己来填,与其说得再多,不如提供几组数据测试吧INPUT110OUTPUT0

INPUT11-1OUTPUT-1

INPUT121 -1OUTPUT1

INPUT130 0 0OUTPUT0

INPUT13-1 0 0OUTPUT0

INPUT13-1 0 2OUTPUT2

INPUT15-2 -3 2 4 1OUTPUT48

INPUT15-2 -3 -5 4 2OUTPUT120
#include<cstdio>
#include<cstring>
#include<stack>
#include<vector>
#include<queue>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
const int oo = 0x3f3f3f3f;
const int maxn = 1e6+7;
typedef long long LL;
int main()
{int T, n, i, k;///fu,z分别代表负数以及正数的乘积///fu_num,z_num分别代表负数以及正数的个数mini代表最大的负数LL z, fu, z_num, fu_num, num[888], ans, mini;scanf("%d", &T);while(T--){ans = 1;k = 0;fu = z = 1; fu_num = z_num = 0;scanf("%d", &n);for(i = 1; i <= n; i++){scanf("%lld", &num[i]);if(num[i] == 0)continue;if(num[i] < 0){fu *= num[i], fu_num++;if(k)mini = max(mini, num[i]);else mini = num[i];k++;}if(num[i] > 0) z *= num[i], z_num++;}if(z_num) ans = z;///先计算正数的积if(fu_num>1) ans *= fu;///如果负数个数大于1个乘上该乘积if(fu_num%2==1&&fu_num>1) ans /= mini;///如果负数个数大于1个且为奇数去除最大的负数if(fu_num<=1&&z_num==0) ans = 0;///没有正数且负数的个数小于2if(n == 1) ans = num[1];///只有一个数。。。printf("%lld\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/PersistFaith/p/4932349.html

hdu 5504 GT and sequence相关推荐

  1. 【HDU】1005 Number Sequence (有点可爱)

    http://acm.hdu.edu.cn/showproblem.php?pid=1005 A number sequence is defined as follows: f(1) = 1, f( ...

  2. hdu 5273 Dylans loves sequence 逆序数简单递推

    Dylans loves sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...

  3. hdu 5504(枚举+找规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504 官方题解: 注意先特判0 的情况:如果读入的数据有0 ,那么去掉所有的0 且最后答案和0 取一个 ...

  4. HDU - 6305 RMQ Similar Sequence(笛卡尔树)

    http://acm.hdu.edu.cn/showproblem.php?pid=6305 题目 对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0 ...

  5. HDU 5828 Rikka with Sequence (线段树+剪枝优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5828 给你n个数,三种操作.操作1是将l到r之间的数都加上x:操作2是将l到r之间的数都开方:操作3是 ...

  6. 【HDU 1711】Number Sequence(裸KMP算法)

    题目链接 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1711 题意 裸KMP算法 时间复杂度 O(m+n) 代码如下(G++) #include & ...

  7. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  8. 【HDU - 5014】Number Sequence(贪心构造)

    题干: There is a special number sequence which has n+1 integers. For each number in sequence, we have ...

  9. HDU 6305 RMQ Similar Sequence(笛卡尔树)

    题目链接:RMQ Similar Sequence 题意 首先给定一个长度为 nnn 的整数序列 A={a1,a2,⋯,an}" role="presentation" ...

最新文章

  1. 【蓝桥杯】2019年第十届蓝桥杯省赛B组试题J — 灵能传输(前缀和,猜想结论)难度⭐⭐⭐⭐
  2. 面试现场:小伙伴美团一面的分享和分析「含解答」
  3. 还在担心工作被AI取代?不如掌握这门硬实力,抢占职场发展机遇
  4. python xpath语法-Python爬虫——bs4、xpath基本语法
  5. Linux下怎么做秒执行任务
  6. oracle 取英文排序,Oracle中中文、数字,英文混杂形式的字段进行排序的方法
  7. Sharepoin学习笔记—架构系列--05 Sharepoint的四种执行模型 2
  8. (第五章)统计函数分组
  9. memcached(五)--源码分析,启动
  10. 拓端tecdat|在UBUNTU虚拟机上安装R软件包
  11. linux唤醒所有等待线程,转Linux多线程同步的几种方式
  12. DB2安装到卸载一套龙服务
  13. css 自制一些小特效
  14. ELK之metricbeat
  15. QGIS设置点图层样式并导出SLD文件
  16. Excel 技巧百例:数据透视表的简单使用-行列转换
  17. 看完东野小说 乱写写(含微量剧透)
  18. 用青龙面板跑闲趣赚(趣闲赚)脚本(收益超级稳定)
  19. C++描述 104.仓库选址
  20. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用53

热门文章

  1. 继承的作用是什么?看看下面这些例子吧!
  2. solidity语言介绍以及开发环境准备
  3. 55.SQL server 行转列
  4. RTX——第10章 任务调度-抢占式、时间片和合作式
  5. CentOS 中卸载 RPM 包文件
  6. shell中$(( )) 与 $( ) 还有${ }的区别
  7. sqlite3 的基本使用 以及封装使用
  8. 理解 Delphi 的类(十) - 深入方法[15] - 调用其他单元的函数
  9. URAL 1992 CVS 可持久化链栈
  10. [Step By Step]SAP HANA PAL多项式回归预测分析Polynomial Regression编程实例FORECASTWITHPOLYNOMIALR(预测)...