hdu-4561 连续最大积( 水题)
http://acm.hdu.edu.cn/showproblem.php?pid=4561
求连续最大积。
他妈的狗逼思路到底咋说。。。。。
思路是 %&*()*(&……))*)*&)……%……%**(*()()——+(**(……&*……%&*……Y%^&%%^*&&(&*(&*(*&()*&(**……&%……&
%&……%&……&(&……* ())&(**&……%*&&*((——+——)&(**……&%……&……*&%¥S%^&$**&%%&^A *&^&***(^U(*)()^(*&^&*(()&^**&*$%YT^&^%&^^&%%^%&%^&%&^
%&^&(^&&(*&_)(&^*^U&*&OP)_(+_{()*&*&%^&%$&^$^%$#%^&*^&)(**)_(_+................................................
懂了吧。。。。。
我来翻译;
其实思路就是找断点,断点就是0,也就是以0为分界,将所给的数字串分成k段 比如2220-2-2-22022;
就可以分成222 -2-2-22 22三段,因为如果选入0的话乘积肯定是0,题目说积小于等于0的结果都为0,所以以0分界。
那么就是计算每段的2的个数,和-2的个数,如果段内的-2个数是偶数个,那么这段的长度直接和maxx比较,更新maxx,
如果是奇数个,假设n个的话从段的左边循环到有边直到遇到第n个-2跳出,那么前面不就是偶数个-2了么。
那么再从右端循环到左端,直到遇到第n个-2跳出,比较两次的大小,大的就是本段连续最大积。
因为要连续而且又只多一个-2,所以说最大要么左连续,要么右连续。
最后maxx就是最大的了;
1 #include<stdio.h>
2 #include<iostream>
3 #include<stdlib.h>
4 #include<string.h>
5 #include<math.h>
6 typedef struct pp
7 {
8 int x;
9 int y;
10 int x1;
11 int y1;
12 } ss;
13 using namespace std;
14 int main(void)
15 {
16 int a[10005];
17 ss cou[10005];
18 int n,i,j,k,p,q;
19 scanf("%d",&n);
20 for(i=1; i<=n; i++)
21 {
22 scanf("%d",&k);
23 for(j=0; j<k; j++)
24 {
25 scanf("%d",&a[j]);
26 cou[j].x=0;
27 cou[j].y=0;
28 cou[j].x1=0;
29 cou[j].y1=0;
30 }
31 if(a[0]>0)
32 {
33 cou[0].x++;
34 }
35 else if(a[0]<0)
36 {
37 cou[0].y++;
38 }
39 int maxx=0;
40 for(j=1; j<k; j++)//从断点到到本个点有多2 -2(从左循环)
41 {
42 if(a[j]>0)
43 {
44 cou[j].x=cou[j-1].x+1;
45 cou[j].y=cou[j-1].y;
46 }
47 else if(a[j]<0)
48 {
49 cou[j].y=cou[j-1].y+1;
50 cou[j].x=cou[j-1].x;
51 }
52
53 }
54 if(a[k-1]>0)
55 {
56 cou[k-1].x1++;
57 }
58 else if(a[k-1]<0)
59 {
60 cou[k-1].y1++;
61 }
62 for(j=k-2; j>=0; j--)//从断点到到本个点有多2 -2(从右循环)
63 {
64 if(a[j]>0)
65 {
66 cou[j].x1=cou[j+1].x1+1;
67 cou[j].y1=cou[j+1].y1;
68 }
69 else if(a[j]<0)
70 {
71 cou[j].y1=cou[j+1].y1+1;
72 cou[j].x1=cou[j+1].x1;
73 }
74
75 }
76 for(j=0; j<k; j++)
77 {
78 if(cou[j].y%2==0)
79 {
80 if(maxx<cou[j].x+cou[j].y)
81 {
82 maxx=cou[j].x+cou[j].y;
83 }
84 }
85 if(cou[j].y1%2==0)
86 {
87 if(maxx<cou[j].x1+cou[j].y1)
88 {
89 maxx=cou[j].x1+cou[j].y1;
90 }
91 }
92 }
93 printf("Case #%d: %d\n",i,maxx);
94 }
95 return 0;
96 }
hdu-4561 连续最大积( 水题)的更多相关文章
- hdu 1005:Number Sequence(水题)
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 2041:超级楼梯(水题,递归)
超级楼梯 Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Su ...
- HDU 5578 Friendship of Frog 水题
Friendship of Frog Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.ph ...
- HDU 5590 ZYB's Biology 水题
ZYB's Biology Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...
- HDU 5538 L - House Building 水题
L - House Building Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.ph ...
- hdu 1018:Big Number(水题)
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDOJ/HDU 1328 IBM Minus One(水题一个,试试手)
Problem Description You may have heard of the book '2001 - A Space Odyssey' by Arthur C. Clarke, or ...
- HDOJ(HDU) 2090 算菜价(简单水题、)
Problem Description 妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵. Input ...
- HDOJ(HDU) 1555 How many days?(水题)
Problem Description 8600的手机每天消费1元,每消费K元就可以获赠1元,一开始8600有M元,问最多可以用多少天? Input 输入包括多个测试实例.每个测试实例包括2个整数M, ...
随机推荐
- CMakeLists.txt添加多个源代码
coos2d-x 3.17.2 C++工程,安卓编译使用CMake,按照模板给的写法,只能一个一个源文件添加:如果需要添加大量的C++源代码,这种方式肯定不可取:原来的写法: 1 list(APPEN ...
- day10 ajax的基本使用
day10 ajax的基本使用 今日内容 字段参数之choices(重要) 多对多的三种创建方式 MTV与MVC理论 ajax语法结构(固定的) 请求参数contentType ajax如何传文件及j ...
- day03 部署NFS服务
day03 部署NFS服务 NFS的原理 1.什么是NFS 共享网络文件存储服务器 2.NFS的原理 1.用户访问NFS客户端,将请求转化为函数 2.NFS通过TCP/IP连接服务端 3.NFS服务端 ...
- java网站架构设计
涉及到的技术及工具:java,springmvc,ibatis,freemarker,mysql,mongdb,memcached,ehcache,maven. 一个网站不可能说一开始就是要设计一个能 ...
- git删除了本地文件,从远程仓库中恢复
在本地删除了文件,使用git pull,无法从远程项目中拉取下来 具体操作 查看项目的状态,会显示出你删除的数据 git status 进入被删除的文件的目录下,假设删除的文件名为 test.txt ...
- oracle(数据文件)
--创建数据文件 create tablespace--创建表空间同时创建数据文件 create temporary tablespace --创建临时表空间的同时创建临时数据文件 alter tab ...
- 【Java基础】Java中如何获取一个类中泛型的实际类型
泛型的术语 <>: 念做typeof List<E>: E称为类型参数变量 ArrayList<Integer>: Integer称为实际类型参数 ArrayLis ...
- JS中操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- 【Matlab】快速傅里叶变换/ FFT/ fftshift/ fftshift(fft(fftshift(s)))
[自我理解] fft:可以指定点数的快速傅里叶变换 fftshift:将零频点移到频谱的中间 用法: Y=fftshift(X) Y=fftshift(X,dim) 描述:fftshift移动零频点到 ...
- numpy基础教程--将二维数组转换为一维数组
1.导入相应的包,本系列教程所有的np指的都是numpy这个包 1 # coding = utf-8 2 import numpy as np 3 import random 2.将二维数组转换为一维 ...