hdu 4561 模拟小题or连续最大积
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 0
10
2 2 0 -2 0 2 2 -2 -2 0
Sample Output
Case #2: 4
刚开始的思路就是搜索吧,搜索主要就是三点,一点就是这点是2,那么直接搜索,一点就是-2,那么就要考虑要与不要。就可以了。
不过就是超时间了,具体代码如下:
超时代码:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<stdio.h>
using namespace std;int vis[10005],ans,n;void dfs(int flag,int num,int i)
{///结束条件if(i==n+1) return ;// printf("%d\n",num);///取最大值if(flag==1 && ans<num){ans = num;}///重置条件if(vis[i]==0)dfs(1,0,i+1);else{//printf("%d\n",i);///取不取的条件if(vis[i]==-2){int k = flag;if(flag) flag=0;else flag = 1;dfs(flag,num+1,i+1);flag = k;dfs(1,0,i+1);}elsedfs(flag,num+1,i+1);}return ;
}
int main()
{int T;int l=1;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1; i<=n; i++)scanf("%d",&vis[i]);ans=0;dfs(1,0,1);printf("Case #%d: %d\n",l++,ans);}return 0;
}
然后就是找原因,找原因了。
题目主要就是以0为分割点,具体代码见。
代码如下:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<stdio.h>
using namespace std;int vis[10005],ans,n;int solve(int s,int e)
{///st,ed分别表示开始第一个-2的位置和最后一个-2的位置///cnt表示-2的数量int st,ed,cnt,flag=1;cnt =0;int mid =0;if(s==n+1) return 0;for(int i=s;i<e;i++){if(vis[i]==-2){cnt++;if(flag==1){flag=0;st = i;}ed = i;}}if(cnt%2==0) return e-s;else{///分为四段s到st,s到ed,st到e,ed到e,num去取三段最大值if(st-s>mid) mid = st - s;if(ed-s>mid) mid = ed - s;if(e-st-1>mid) mid = e - st-1;if(e-ed-1>mid) mid = e - ed-1;return mid;}
}
int main()
{int T;int l=1;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1; i<=n; i++)scanf("%d",&vis[i]);ans=0;vis[0]=0;for(int i=0;i<=n;){if(vis[i]==0){int st = i+1;while(true){i++;if(i==n+1 || vis[i]==0){int mid = solve(st,i);if(ans<mid) ans = mid;break;}}}}printf("Case #%d: %d\n",l++,ans);}return 0;
}
正确代码转载地址:http://blog.csdn.net/hnust_xiehonghao/article/details/9280839
转载于:https://www.cnblogs.com/new-zjw/p/8540927.html
hdu 4561 模拟小题or连续最大积相关推荐
- 5y计算机应用选择题答案,2016年电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料推荐.docx...
2016年电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料推荐 电大计算机应用基础1一.单选题1.第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是______.答案: A ...
- 5y平台计算机应用测试题,2016电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料.docx...
2016电大网考计算机应用基础统考试题模拟真题及答案 含小抄复习资料 电大计算机应用基础1一.单选题1.第一台电子计算机是1946年在美国研制成功的,该机的英文缩写名是______.答案: A A:E ...
- 2022年R2移动式压力容器充装考试模拟100题及在线模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 2022R2移动式压力容器充装操作证考试题库系R2移动式压力容器充装上岗证题库考前必练习题目!2022年R2移动式压力容器充装考试模拟100题及在线模拟考 ...
- 2022年茶艺师(中级)考试模拟100题模拟考试平台操作
题库来源:安全生产模拟考试一点通公众号小程序 2022茶艺师(中级)考试练习题为茶艺师(中级)考题考前必练习题目!2022年茶艺师(中级)考试模拟100题模拟考试平台操作依据茶艺师(中级)考前押题.茶 ...
- 【无标题】2022年施工员-设备方向-通用基础(施工员)考试模拟100题及模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 2022施工员-设备方向-通用基础(施工员)考试题库是施工员-设备方向-通用基础(施工员)考试真题新版习题库!2022年施工员-设备方向-通用基础(施工员 ...
- 2022汽车驾驶员(初级)考试模拟100题及模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 2022年汽车驾驶员(初级)考试试题为汽车驾驶员(初级)考试题目历年真题!2022汽车驾驶员(初级)考试模拟100题及模拟考试依据汽车驾驶员(初级)新考试 ...
- 2022年制冷与空调设备运行操作考试模拟100题及答案
题库来源:安全生产模拟考试一点通公众号小程序 2022年制冷与空调设备运行操作试题是制冷与空调设备运行操作培训试题的新全考试题型!2022年制冷与空调设备运行操作考试模拟100题及答案根据制冷与空调设 ...
- 2022年A特种设备相关管理(电梯)考试模拟100题及答案
题库来源:安全生产模拟考试一点通公众号小程序 2022年A特种设备相关管理(电梯)考试题模拟考试题库为A特种设备相关管理(电梯)考试真题考前押题密卷!2022年A特种设备相关管理(电梯)考试模拟100 ...
- 2022登高架设考试模拟100题模拟考试平台操作
题库来源:安全生产模拟考试一点通公众号小程序 2022登高架设操作证考试题库是登高架设操作证考试题的多种练习模式!2022登高架设考试模拟100题模拟考试平台操作根据登高架设考试教材.登高架设国家题库 ...
最新文章
- 入门必备 | 一文读懂神经架构搜索
- chrome/FF/safari浏览器下input和textarea的默认样式outline和resize
- Spring Countries在Apusic上部署
- flash破解工具/flash decompiler
- java List实体排序
- 计算机科学竞赛加拿大,滑铁卢大学计算机科学与数学竞赛最新考试时间!
- 医疗大数据分析需考虑哪些因素
- 本地win10服务器不能复制文件,解决Win10无法复制文件并提示“0x80070032”错误的方法...
- Win11终端管理员打不开解决方法
- 移动跨平台ReactNative动画组件Animated【14】
- 海龟画图----python画美队盾牌
- 安卓(Android)手机如何安装APK?
- 股市和庞氏骗局的类同之处
- 《巴黎评论 I》启示录连载之 - 杜鲁门.卡波蒂
- 价值4500的国际版多语言点赞抖音分享点赞任务平台源码(十二种语言)
- cve-2005-1794
- 产品经理工作流| 月度汇报月报整理
- 快速提高微信公众号文章的阅读量的必备神器——阅读红包!
- 【知名的3D造型设计软件】犀牛 Rhinoceros 5.5.2 for Mac
- 使用ffmpeg随意剪辑、合并视频片段