hdu 5504(枚举+找规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5504
官方题解:
注意先特判0 的情况:如果读入的数据有0 ,那么去掉所有的0 且最后答案和0 取一个max。剩下的正数显然全部乘起来比较优。对于负数的话,如果个数是奇数个我们就去掉绝对值最小的那一个,然后全部乘起来即可。
这题坑很多,要讨论的情况很多。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;typedef long long LL;
const int maxn = 65;
int n;
LL a[maxn];bool cmp(int a,int b)
{return a > b;
}int main()
{int t;scanf("%d",&t);while(t--){int i,zero = 0,pos = 0,neg = 0;scanf("%d",&n);for(i = 1; i <= n; i++){scanf("%lld",&a[i]);if(a[i] == 0) zero++;if(a[i] > 0) pos++;if(a[i] < 0) neg++;}if(n == 1 || zero == n) {printf("%lld\n",a[1]);continue;}sort(a+1,a+1+n,cmp);LL ans = 1;if(pos == 0){}for(i = 1; i <= n; i++){if(a[i] > 0)ans *= a[i];if(a[i] < 0) break;}int num = n - i + 1;if(num % 2 == 1) //奇数个负数{if(num == 1 && pos == 0) ans = a[n];for(int j = n; j > i; j--)ans *= a[j];}else //偶数个负数{for(int j = i; j <= n; j++)ans *= a[j];}if(zero && ans < 0) ans = 0;printf("%lld\n",ans);}return 0;
}
hdu 5504(枚举+找规律)相关推荐
- hdu 1165 坑爹找规律题
http://acm.hdu.edu.cn/showproblem.php?pid=1165 不看题解,使劲找规律,应该是可以找到的,就是费时间! Problem Description As is ...
- hdu 4279 Number (找规律)
http://acm.hdu.edu.cn/showproblem.php?pid=4279 题意: 给出a,b两个数,1<=a<=b 如果a,b不互质,且a%b != 0则说明a是b的特 ...
- 【枚举找规律】记一次找规律题 埃匹希斯水晶
UPC Contest2394 - 2020年春混合个人训练第八场问题 A: 埃匹希斯水晶 题目描述 ⼤家都知道,卡德加是⼀个神奇的法师. 有⼀天,他发现了⼀种可以作⽤在埃匹希斯⽔晶上的魔法:在左右两 ...
- hdu 3054 Fibonacci 找规律
传送门 题意:第m个满足末尾连续k个0的数是斐波那契的第几项. 思路:先通过打表输出找到规律,然后根据规律解题.运行完打表代码之后会发现1,3,4,5,6,7,--都是到第9个数增量是有一个变化,而2 ...
- HDU 2897 (博弈 找规律) 邂逅明下
根据博弈论的两条规则: 一个状态是必胜状态当且仅当有一个后继是必败状态 一个状态是必败状态当且仅当所有后继都是必胜状态 然后很容易发现从1开始,前p个状态是必败状态,后面q个状态是必胜状态,然后循环往 ...
- HDU 1847 (博弈 找规律) Good Luck in CET-4 Everybody!
为了提高题解质量还是简单证明一下:3的倍数是必败状态. 如果n % 3 = 1,那么拿走1个石子:如果n % 3 = 2,那么拿走两个石子,都将转移到3的倍数的状态.所以每个必胜状态都有一个后继是必败 ...
- HDU 5703 Desert 水题 找规律
HDU 5703 Desert 水题 找规律 已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现 ...
- 【HDU - 5963】朋友(博弈,思维,必胜态必败态,找规律)
题干: B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根.接下来从女生开始, ...
- HDU - 1284 钱币兑换问题 (找规律/完全背包)
Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...
最新文章
- mybatis常见错误
- Normal2Height工具已经完成
- leetcode || 50、Pow(x, n)
- 代码编译方式 ant +ivy
- selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element
- 【java】窗口控件及字符串和异常的综合应用
- 【Linux】Another app is currently holding the yum lock; waiting for it to exit...
- 用户权限框架php,ThinkPHP5ACL用户权限模块用法详解
- C#的set 和 get 方法
- API Guides Contacts Provider
- 神经网络算法实例应用题,神经网络算法实例应用
- 一款免费好用的在线高效作图工具
- 识别到硬盘 计算机不显示盘符,Win10系统下移动硬盘可以识别但是不显示盘符的解决方法...
- 拆分PDF文件的一个办法
- nuc8i5beh安装黑苹果的安装教程,接近完美运行
- 【转载】Oracle 查看执行计划
- 40、卤代烷灭火系统模拟喷气试验
- 分层和分段用什么符号_分段符号该怎么用
- Window下安装Rabitmq的插件以及激活
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'Logger' 中的标识列插入显式值