做法是,先求出前缀和pre。然后枚举端点i,[i+1,n]中pre最小的找出来,减去pre[i-1]大于0,这是第一个条件;第二个条件是,从i开始的后缀和和i之前的最小的一个pre相加大于0。只要满足这两个条件那么这个端点就是可行的。显然找这两个区间的最值都是可以用数组线性维护的,因此总体复杂度是O(n)的。

  代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <algorithm>
 4 using namespace std;
 5 const int N = 2e5 + 5;
 6
 7 int a[N];
 8 int pre[N],suf[N];
 9 int min_pre_qian[N],min_pre_hou[N];
10
11 int main()
12 {
13     int T;
14     scanf("%d",&T);
15     while(T--)
16     {
17         int n;
18         scanf("%d",&n);
19         for(int i=1;i<=n;i++)
20         {
21             scanf("%d",a+i),pre[i] = pre[i-1] + a[i];
22             if(i == 1) min_pre_qian[i] = pre[1];
23             else min_pre_qian[i] = min(pre[i], min_pre_qian[i-1]);
24         }
25         suf[n+1] = 0;
26         for(int i=n;i>=1;i--)
27         {
28             suf[i] = suf[i+1] + a[i];
29             if(i == n) min_pre_hou[i] = pre[i];
30             else min_pre_hou[i] = min(min_pre_hou[i+1], pre[i]);
31             //min_suf[i] = min(suf[i], min_suf[i+1]);
32         }
33         int ans = 0;
34         for(int i=1;i<=n;i++)
35         {
36             //printf("%d %d %d %d %d ??\n",i,min_pre_hou[i],pre[i-1],suf[i],max_pre_qian[i-1]);
37             if(min_pre_hou[i] - pre[i-1] > 0 && suf[i] + min_pre_qian[i-1] > 0)
38             {
39                 ans++;
40             }
41         }
42         printf("%d\n",ans);
43     }
44 }

转载于:https://www.cnblogs.com/zzyDS/p/6637065.html

ZOJ 2592 Think Positive ——(xjbg)相关推荐

  1. zoj 2592 Think Positive(5-F)

    题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1592 要点:1 结果就是所有数的和(如果小于0,就返回0) 2将所有 ...

  2. 【笔记】 Hard negative:区域建议框中得分较高的False Positive(假阳性)

    eg1: 对于目标检测中我们会事先标记处ground truth,然后再算法中会生成一系列proposal,这些proposal有跟标记的ground truth重合的也有没重合的,那么重合度(IOU ...

  3. ZOJ 3829 Known Notation(贪心)题解

    题意:给一串字符,问你最少几步能变成后缀表达式.后缀表达式定义为,1 * 1 = 1 1 *,题目所给出的字串不带空格.你可以进行两种操作:加数字,交换任意两个字符. 思路:(不)显然,最终结果数字比 ...

  4. 【ZOJ - 3212 】K-Nice (构造)

    题干: This is a super simple problem. The description is simple, the solution is simple. If you believ ...

  5. ZOJ 1013 Great Equipment(DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1013 采用动态规划解决. 设f[n][x][y] 表示前n辆车装 ...

  6. 2018青岛ICPC ZOJ 4061: Magic Multiplication(模拟)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4061 题意: 定义一种新型运算符: 也就是说Gao(23, 45 ...

  7. ZOJ 3700 Ever Dream(模拟)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3700 Ever Dream Time Limit: 2 Seco ...

  8. ZOJ 2702 Unrhymable Rhymes(DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1702 题目大意:给定有很多数字组成的诗,譬如 "AABB& ...

  9. ZOJ 3323 Somali Pirates(模拟)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3323 输入一段字符串,删除里面所有的数字 #include<iost ...

最新文章

  1. spark 任务运行原理
  2. python help()函数(查看特定模块、关键词、函数等用法)
  3. 忘记手机绑定过的UC/交易猫账号怎么找回
  4. 打断点的方式_一位清华退休老教授:作为家长如果能管住孩子这3点,将来会成才...
  5. 美国实现Believe me I can fly, Believe me I can touch sky (2)
  6. DPDK 16.04/16.11.2 默认tx offload是关闭的引起tx vlan offload无效
  7. AVR 工具指南(一)
  8. (1)简单工厂模式C++实现
  9. webservice测试工具
  10. 修复Mac上的“ Safari无法找到服务器”错误的解决方法
  11. C#开发组态软件心路历程
  12. adb工具的下载及配置
  13. 行业json数据以及elementui级联格式
  14. 美团实习| 周记(一)
  15. 神奇英语语法系列(二)——名词性从句
  16. 你是否错过了母校的AI本科专业?盘点2020国内本科开设人工智能专业高校
  17. 关于京东API超级搜索接口
  18. 2022深圳国际电子化学与新材料展览会
  19. 从招聘网站看程序员的分工
  20. visual studio下设置驱动开发环境

热门文章

  1. 强制重启计算机_我的计算机如何能够自行重启?
  2. php+发送邮件标题乱码_php邮件标题乱码的解决方法
  3. 小米游戏本加第二块SSD并装Ubuntu到原本的SSD
  4. 当老板提出不合理要求时该怎么回?
  5. 红海云薪酬管理系统可以解决的算薪问题有哪些?
  6. 地方税务局专用业务协同办公系统 新版就要出炉了(v2.0)
  7. 非常恶俗地分享一首歌曲(群星·北京欢迎你)【附视频】
  8. Apache Iceberg 分区表探索与实践
  9. 高分宽幅多通道SAR——SAR最小天线面积限制
  10. 三维智慧仓储与物流园区一体化管控系统