两点法是通常用来求解简单的区间问题的O(n)算法,两点法顾名思义有两个点,一个起点一个终点,在区间上维护这两个点,动态更新题目要求的值的大小

这里举出NOJ两道较简单且有代表性的题,一道是数字一道是字符串

炒股票的女巫璐璐

时间限制(普通/Java):1000MS/3000MS         运行内存限制:65536KByte
总提交:674          测试通过:40

题目描述

女巫璐璐生活在美丽的仙林。璐璐突发奇想想到了炒股。璐璐运用了她的神奇魔法获取了一支股票未来连续N天的价格。

璐璐现在想知道从这N天里,哪天买入,哪天卖出可以使自己自己的收益最大。

输入

输入第一行是一个整数T,代表测试用例个数。接下来的每组数据第一行为一个整数N(2≤N≤100000),代表这支股票未来N天的价格,第二行为N个整数a1,a2,..aN。

输出

输出璐璐能得到的最大收益。如果璐璐无论怎么买入卖出都不能赚钱(收益大于0),输出0。

输出格式见样例,首先输出“Case #: ”,再输出答案,其中#表示第几个测试用例。

样例输入

3
3
3 2 1
3
1 2 3
3
2 3 1

样例输出

Case 1: 0
Case 2: 2
Case 3: 1

题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1972

题目分析:st,ed初始化为0,当a[st] < a[i]时说明是递增的,可卖出,所以更新ed和ans,否则,更新st,因为如果当前点后第二个点比当前点大,后第一个点比当前点小,显然应当把当前的后的那个点当作起点

#include <cstdio>
#include <algorithm>
using namespace std;
int a[100005];int main()
{int T;scanf("%d", &T);for(int ca = 1; ca <= T; ca++){int n, ans = 0;scanf("%d", &n);for(int i = 0; i < n; i++)scanf("%d", &a[i]);int st = 0, ed = 0;for(int i = 1; i < n; i++){if(a[st] < a[i]){ed = i;ans = max(ans, (a[ed] - a[st]));}elsest = i;}printf("Case %d: %d\n", ca, ans);}
}

BRN

时间限制(普通/Java):1000MS/3000MS         运行内存限制:65536KByte
总提交:130          测试通过:36

题目描述

大学四事之娱乐生活。

Best Riven NUPT ,即南邮最强瑞文,作为一个LOSER,啊不,LOLER,BENBB一直向着这个目标努力练习着。

作为英雄联盟中最需要操作的几个英雄之一,一个优秀的瑞文玩家,需要掌握其特殊的连招技巧!瑞文的主要技能为QWER,加上A人和鼠标右键总计6种操作命令。这里我们把鼠标右键记作1。要想有效的在与敌人的较量中获得胜利,就需要在短时间内打出更多的伤害,即取消游戏中的前摇和后摇。具体方法如下:

在使用Q技能之后用鼠标右键可以取消Q的施法后摇。

在A之后使用Q技能能取消A的后摇。

在E技能之后使用W或者R可以取消施法前摇。
     ……
如此一来我们定义下BRN所需要的操作吧。
 1、Q之后必须接上鼠标右键1。
 2、A之后必须接上Q技能。
 3、W和R之前必须是E技能。
 4、R和W之后必须接上Q技能或者A。
 5、其余技能可以随意连接

BENBB在练习中释放了很多次技能,现在请你找出其中最长的满足BRN需求的连招的长度。

输入
第一行为一个正整数T,表示有T组数据
每组为一行字符串(长度不超过10000,所有字母都为大写)

输出
每组单独一行输出一个正整数m代表最长BRN连招长度

样例输入
3
AQ1A
QWERA1
ERQ1AQ1EWAQ1111111ERA

样例输出
4
3
21

题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1974

题目分析:运用两点法,当可以连击时更新ed,不能连击时更新st

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[10000];int main()
{int T;scanf("%d", &T);while(T--){scanf("%s", s);int len = strlen(s);int ans = 0, st = 0, ed = 0;for(int i = 0; i < len;){ans = max(ans, ed - st + 1);if(s[i] == 'A' && s[i + 1] != 'Q' ){i ++;st = i;}else if(s[i] == 'Q' && s[i + 1] != '1' ){i ++;st = i;}else if((s[i + 1] == 'W' && s[i] != 'E')){i ++;st = i;}else if((s[i + 1] == 'R' && s[i] != 'E')){i ++;st = i;}else if(s[i] == 'R' && (s[i + 1] != 'Q' && s[i + 1] != 'A')){i ++;st = i;}else if(s[i] == 'W' && (s[i + 1] != 'Q' && s[i + 1] != 'A')){i ++;st = i;}else{i ++;ed = i;}}printf("%d\n", ans);}
}

NOJ 1972 炒股票的女巫璐璐 NOJ 1974 BRN (浅谈两点法)相关推荐

  1. 南邮 OJ 1972 炒股票的女巫璐璐

    炒股票的女巫璐璐 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 702            测试通过 : ...

  2. 如何改造UE4用于赛璐璐3D卡渲?这里有一份日本大厂的实操分享

    当今市场中,3D卡渲无疑是最热门的一个技术竞争领域,此前也有不少厂商分享了各自基于不同引擎的3D卡渲实现技术. 前几个月葡萄君分享了万代南宫旗下一款基于UE4制作的赛璐璐3D卡渲产品<蓝色协议& ...

  3. 《缠中说禅108课》52:炒股票就是真正的学佛

    本 ID 一直强调无须预测,并不是说市场走势就绝对不可预测,相反,市场走势当然可以绝对预测.不过,这里的预测和一般所说的预测并不是同一意义,一般的预测是建立在一个机械的.上帝式思维基础上,这种思维,把 ...

  4. 华裔女性钱璐璐:用 DNA 开发人工智能神经网络,识别手写数字!

    "既然要学人脑的思维方式,为什么不去研究人脑?"霍金斯在<论智能>中说道. 如今,不少生物学研究者正朝着这个方向努力. 不过,请注意:这不是一次传统意义上的生物实验. ...

  5. 机器人潘森护盾_[翻译团]10.21版本五大强势辅助:潘森、蕾欧娜、机器人、巴德、璐璐...

    虎扑10月20日讯 今日,外媒Dot Esports发表了题为The best support champions in League of Legends Patch 10.21一文,原文(翻译)大 ...

  6. 日系赛璐璐鼻子上色教程,干货满满!

    今天给大家带来的是动漫人物鼻子的上色教程,鼻子在五官中有多重要,法国哲学家巴斯卡鲁有一句名言:"如果埃及女王的鼻子不高,世界历史也许会重写."鼻子在五官中有"面中之王&q ...

  7. 璐璐版本下强度的考虑

    背景 众所周知,软辅在联盟生态中始终处于生长阶段.众多下路组合中软辅的搭配模式仍具有较大创新空间,在消耗上除普通的eaq,利用小兵进行q与AD配合打出压制,几何Q学也占据特殊地位,尤其是在追击时,能达 ...

  8. 温州人不炒股票炒外汇 1亿美金爆炒出300亿交易量

    11月底的温州日趋寒冷,但随着美元的下挫和欧元的持续上扬,温州人的炒汇热情如火.位于温州市小南路上的中国银行外汇宝交易中心每天人满为患. 据中国银行浙江分行零售业务处营业中心赵科长介绍,浙江是全国外汇 ...

  9. MACD是什么意思?炒股票新手入门如何用MACD金叉选股指标公式应对A股市场

    而今沪深股市时不时就会震荡一下,小池就给而今沪深股市时不时就会面对震荡一下的炒股票新手入门介绍一下应对A股市场的秘密武器 - MACD金叉选股公式. 首先来讲一下炒股票新手入门是必备常识有哪些: 首先 ...

最新文章

  1. java 手机号脱敏,身份证号脱敏 工具类
  2. linux-linux top 命令各参数详解
  3. 计算机课有什么作业,计算机课作业~
  4. linux 不同进程间能否传递指针?(不能,虚拟地址进程私有,被不同进程映射到物理地址不同)
  5. C# C/S 图片验证码功能源码
  6. 计算机与人脑_要把人脑连到计算机上!马斯克真敢想,但人类准备好了吗?
  7. 十三种技术文档模板_在线文档,知多少?
  8. 北理工在线作业计算机的主要特点是( ),北理工18秋《计算机组成原理》在线作业【答案】...
  9. HitPaw Watermark Remover视频图去除水印工具V1.2.1.1
  10. CV Code | 计算机视觉开源周报 20190602期
  11. c# 之继承、封装、多态
  12. java listen_java web-- listen
  13. 开课吧:深入了解软件开发原则有哪些?
  14. Android Fragment(一)
  15. 摆脱IDE进行时. . .
  16. 中信所怎么查期刊影响因子_中华细胞与干细胞杂志影响因子
  17. python中result的用法_python中result的用法
  18. HDU - 4565 So Easy! 矩阵快速幂
  19. Go语言IDE GoLand的BUG
  20. 迅捷路由器设置找不到服务器,迅捷FAST无线路由器设置好了上不了网原因及解决方法...

热门文章

  1. 四通道图像中的alpha通道
  2. 2022-2028全球与中国车辆交通涂料市场现状及未来发展趋势
  3. 企微网易互客SCRM与企鲸客scrm的功能有什么差别
  4. C++船长免费课程 Google测试框架实现
  5. 使用非对称加密加强JWT验证
  6. 观察者模式——JavaScript实现之购物结账
  7. 用endnote ,为什么总显示第一个作者的名(解决办法)
  8. 计算机教程.pdf,中文电脑基础教程.pdf
  9. NATS 开发者文档
  10. 2021-06-21 小米前端实习电话面试题目