HDU 5504:GT and sequence
GT and sequence
给出NN个整数。你要选择至少一个数,使得你选的数的乘积最大。
保证任意选一些数相乘的绝对值都不会大于2^{63}-1263−1。
第一行读入一个数TT表示数据组数。
对于每组数据:
第一行是一个数NN,第二行是NN个整数。 1 \leq T \leq 10001≤T≤1000
1 \leq N \leq 621≤N≤62 hack时建议输出最后一行的行末回车;每一行的结尾不要输出空格。
对于每组数据,输出一个数表示最大的乘积。
1
3
1 2 3
6
比的时候本来打算写一个刚学的深搜,结果最后TLE了。。。。
TLE代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; int test;
long long n, a[70], ans, flag; void dfs(long long i, long long mul)
{
if (i == n + 1)
{
if (flag == 0 && mul == 1)
{
flag = 1;
}
else
{
ans = max(ans, mul);
}
return;
}
dfs(i + 1, mul);
dfs(i + 1, mul*a[i]);
} int main()
{
//freopen("i.txt", "r", stdin);
//freopen("o.txt", "w", stdout); int i;
scanf("%d", &test); while (test--)
{
flag = 0;
scanf("%I64d", &n); i = 1;
for (i = 1; i <= n; i++)
scanf("%I64d", &a[i]);
sort(a + 1, a + n + 1); ans = a[n];
dfs(1, 1); cout << ans << endl;
} //system("pause");
return 0;
}
最后规规矩矩考虑各种情况,很麻烦的一道题。。。。负数是奇数个的时候不要最大的那个。。。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <ctime>
#pragma warning(disable:4996)
using namespace std; long long po[900], ne[900];
long long n, num_ne, num_po; bool cmp(long long x, long long y)
{
return x > y;
} int main()
{ long long test, flag0, i, x, ans;
scanf("%I64d", &test); while (test--)
{
num_ne = 0;
num_po = 0;
flag0 = 0;
memset(po, 0, sizeof(po));
memset(ne, 0, sizeof(ne)); scanf("%I64d", &n); for (i = 1; i <= n; i++)
{
scanf("%I64d", &x);
if (x > 0)
{
po[num_po++] = x;
}
else if (x < 0)
{
ne[num_ne++] = x;
}
else
{
flag0 = 1;
}
}
sort(po, po + num_po);
sort(ne, ne + num_ne,cmp); if (flag0)
{
if (num_po > 0)
{
ans = 1;
for (i = 0; i < num_po; i++)
{
ans = ans*po[i];
}
if (num_ne % 2)
{
for (i = 1; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
else
{
for (i = 0; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
}
else
{
//没有正数的情况
if (num_ne == 0)
{
ans = 0;
}
else if (num_ne == 1)
{
ans = 0;
}
else
{
ans = 1;
if (num_ne % 2)
{
for (i = 1; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
else
{
for (i = 0; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
}
}
}
else
{
if (num_po > 0)
{
ans = 1;
for (i = 0; i < num_po; i++)
{
ans = ans*po[i];
}
if (num_ne % 2)
{
for (i = 1; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
else
{
for (i = 0; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
}
else
{
//没有正数的情况
if (num_ne == 0)
{
ans = 0;
}
else if (num_ne == 1)
{
ans = ne[0];
}
else
{
ans = 1;
if (num_ne % 2)
{
for (i = 1; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
else
{
for (i = 0; i < num_ne; i++)
{
ans = ans*ne[i];
}
}
}
}
} cout << ans << endl;
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
HDU 5504:GT and sequence的更多相关文章
- java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
转自:https://www.cnblogs.com/EasonJim/p/6561666.html 若出现:Invalid escape sequence (valid ones are \b ...
- CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法
CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法: 基本可以确定是Podfile中的内容编码有 ...
- HDU - 6409:没有兄弟的舞会(数学+思维)
链接:HDU - 6409:没有兄弟的舞会 题意: 题解: 求出最大的 l[i] 的最大值 L 和 r[i] 的最大值 R,那么 h 一定在 [L, R] 中.枚举每一个最大值,那么每一个区间的对于答 ...
- POJ 3321:Apple Tree + HDU 3887:Counting Offspring(DFS序+树状数组)
http://poj.org/problem?id=3321 http://acm.hdu.edu.cn/showproblem.php?pid=3887 POJ 3321: 题意:给出一棵根节点为1 ...
- JPA连接Mysql数据库时提示:Table 'jpa.sequence' dosen't exisit
场景 在使用JPA连接Mysql数据库进行数据持久化时提示: Table 'jpa.sequence' dosen't exist 注: 博客主页: https://blog.csdn.net/bad ...
- hdu 5504 GT and sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504 GT and sequence Time Limit: 2000/1000 MS (Java/O ...
- HDU 5504 GT and sequence 模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504 思路:模拟 代码: #include<stdio.h>//------杭电5504 ...
- HDU 5950:Recursive sequence(矩阵快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:给出 a,b,n,递推出 f(n) = f(n-1) + f(n-2) * 2 + n ^ 4. f ...
- HDU 2062:Subset sequence(思维)
Subset sequence Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
随机推荐
- Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar
一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...
- Python 基础之匿名函数 迭代器和高阶函数
一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func(): retu ...
- c++ 关键字this的用法简介
前言: 自己在程序的时候一般不用this,但是在后来发现越来越有必要好好整理一下该知识点了,如有不足之处以及缺漏之处还望各位读者指出. 概念&实例 this 是 C++ 中的一个关键字,也是一 ...
- 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验
实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...
- java基础多线程
线程的创建 方式1:继承Java.lang.Thread类,并覆盖run() 方法 package com.demo.Thread; public class ThreadDemo01 extends ...
- 一、Servlet之14道面试题
1.什么是Servlet Servlet是用Java编写的服务端程序,它与协议和平台无关,运行于支持Java的应用服务器中,Java Servlet可以动态的扩展服务器的能力,并采用请求-响应模 ...
- tensorflow之逻辑回归模型实现
前面一篇介绍了用tensorflow实现线性回归模型预测sklearn内置的波士顿房价,现在这一篇就记一下用逻辑回归分类sklearn提供的乳腺癌数据集,该数据集有569个样本,每个样本有30维,为二 ...
- 解决Eclipse Debug 断点调试的source not found问题
写完代码进行调试的时候,经常会用到断点调试,一步步检测问题,但有时候eclipse有时候无法进入断点,这样就失去了断点的意义,原因是debug无法找到该项目的源代码,解决方法如下 1,打开debug ...
- ExpandableListActivity
main.xml: <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:an ...
- WPF学员管理系统
下载