样例输入:

3

1 -2 1

样例输出:

2

方法一:

将环形数组拆分成为普通数组,(通过搬运复制数据到尾部),再求前缀和,找出最大前缀和。因为枚举了每一个起点,所以最大连续和也一定出现在前缀和中。。。

 1 #include<iostream>
 2 using namespace std;
 3
 4 int n;
 5 long long arr[20010];
 6 long long s[20010];
 7
 8 int main(){
 9   /*freopen("in.txt","r",stdin);*/
10     cin>>n;
11     for(int i=1;i<=n;i++){
12         cin>>arr[i];
13     }
14     int ans = -1;
15     int i;
16     for(i = 1;i<=n;i++){
17         //搬运数据
18         for(int j=1;j<i;j++){
19             arr[n+j] = arr[j];
20         }
21         int len = n + i;
22         //求出最大的连续和(前缀和)
23         s[i-1] = 0;
24         for(int p = i;p<=len;p++){
25             s[p] = s[p-1] + arr[p];
26             if(s[p] > ans) ans = s[p];
27         }
28
29     }
30     cout<<ans<<endl;
31     return 0;
32 } 

方法二:

1:如果子序列的最大和在1~n的范围内,直接输出最大值即可。2:如果子序列的最大和横跨了尾部和头部,则先求出连续的最小子序列和,然后用总和减去最小子串和就是最大子串和,所以求

1~n的最大和最小连续子序列和(记为Mx和Mi),然后输出Mx和sum-Mi即可。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int maxn = 2e5+5;
 7 #define INF 0x3f3f3f3f
 8 #define ll long long
 9
10 ll sum,mx,mi,Mx,Mi;
11 ll num[maxn],n;
12
13 int main(){
14     /*freopen("in.txt","r",stdin);*/
15     cin>>n;
16     memset(num,0,sizeof(num));
17     Mx=-INF;
18     Mi=INF;
19     mx=mi=sum=0;
20
21     for( int i=0; i<n; i++ ){
22         cin>>num[i];
23         sum+=num[i];
24         mx+=num[i];
25         mi+=num[i];
26         Mx=max(Mx,mx);
27         Mi=min(Mi,mi);
28         if(mi>0) mi=0;
29         if(mx<0) mx=0;
30     }
31     cout<<max(Mx,sum-Mi)<<endl;
32     return 0;
33 } 

转载于:https://www.cnblogs.com/Bravewtz/p/10397328.html

蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)相关推荐

  1. 2019 蓝桥杯省赛 B 组模拟赛(一)——计蒜客(未完待续)

    比赛链接: 2019 蓝桥杯省赛 B 组模拟赛(一) 友情提示: 蓝桥杯的头文件,如果不是都记得,可以直接万能头文件 #include <bits/stdc++.h>, 不过有的时候,这样 ...

  2. 2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会

    2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会 这题有两种情况 1.最大的和是在0~n-1 2.最大的和越过了首尾 这时候只要用n个数的和 - 0~n-1 的连续的最小和 这是求连续子集最大.最小 ...

  3. 【模拟赛】2019 蓝桥杯省赛 B 组模拟赛(一)

    A(填) 钟表 方法一:利用 23:59:60 B(填) 青蛙爬井 方法一:枚举 * 危,严重错误:算出来是 862,感觉心都凉了.day 竟然是从 1 开始的. import java.util.* ...

  4. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  5. python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节

    python解答蓝桥杯真题3 省模拟赛 计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整 ...

  6. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    1.奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是 ...

  7. 2018 蓝桥杯省赛 B 组模拟赛(一)--封印之门

    题目链接:https://nanti.jisuanke.com/t/A1594 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以 ...

  8. 52-2018 蓝桥杯省赛 B 组模拟赛(一)java

    最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...

  9. 计蒜客2019蓝桥杯省赛B组模拟赛(一)题目及解析

    蓝桥杯历年真题题目及题解目录汇总   A. 结果填空:钟表 题库链接 分值: 5 一天蒜头君 22:28:45 开始睡觉,06:24:26 醒来之后,蒜头君在想,今天我睡了多久? 请你告诉蒜头君睡了& ...

  10. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(一)

    D题:马的管辖 二进制枚举方案.判断该方案是否全部能被覆盖,将最优方案存下来并进行剪枝. #include<iostream> #include<cstring> #inclu ...

最新文章

  1. linux下c语言俄罗斯方块,C语言实现俄罗斯方块源代码
  2. html图片展示不间隙,求助大神 如让图片展示在li标签里面,不要间隙 谢谢
  3. Android 第一个OpenGL ES程序
  4. MyBatis collection的两种形式——MyBatis学习笔记之九
  5. Winform中创建超链接,点击跳转网页
  6. 对Html里的title属性的换行
  7. 二分查找向上还是向下取整_113、股市中的跳空缺口判断技巧是向上还是向下
  8. Java中的优先队列——二叉堆
  9. 高一计算机函数公式,高一函数公式汇总
  10. 熔断器 java_SpringCloud之熔断器Hystrix的实现
  11. esxi 环境 西数硬盘测试软件,手把手教你测试固态硬盘!硬盘测试软件大汇总
  12. 2009年经典语录雷人总汇
  13. 荔枝派Zero小白(一)
  14. 钱颖一:人的创造力从哪里来?(转)
  15. C语言计算两纬线间子午线弧长1/2
  16. Spring+SpringMVC+Hibernate实现投票/调查问卷网站
  17. 如何解决安装Windows 11/Windows 10时找不到磁盘驱动器(找不到驱动器)
  18. 如何把视频声音转成文字
  19. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具
  20. 全国大学生软件创新大赛一等奖作品 —— HyllCube 三维四子棋

热门文章

  1. linux tcp 113错误,linux系统报tcp_mark_head_lost错误的处理方法
  2. python实训报告5000字_实训总结5000字
  3. J - Crashing Robots
  4. c语言程序设计21点扑克牌,c语言程序设计 21点扑克牌游戏
  5. 线性卷积和循环卷积(圆周卷积)
  6. emc re 整改 超标_EMC测试及整改对策.ppt
  7. 通过css为类生成器给文本字体加上书名号,
  8. easypanel mysql错误_kangle easypanel面板安装后初始化教程
  9. 微信群导出群成员时间数据_教你一招轻松导出微信群名单
  10. oracle中的than,range分区values less than,代表的是小于等于还是小于啊。