<题目链接>

题目大意:

给你一段只由 'B'和'R'组成的字符串,问你在连续的区间内,"B"和"R"的差值最大是多少,输出该区间;如果对于差值相等的区间,优先输出左端点小的,左端点相同,优先输出右端点小的。

解题分析:

很明显要分两种情况讨论,一种是该区间内B比R多,第二种是该区间内R比B多。仔细思考后发现,可以将此题转化为最大连续和问题,对于B多的情况,用dp1来维护,将B看成1,R看成-1,对于R多的情况则用dp2来维护,将R看成1,B看成-1,然后就是用dp求解最大连续和即可,同时记录一下最大连续和所在的区间。

#include <bits/stdc++.h>
const int M = 1e5 + ;
#define INF 0x3f3f3f3f int main() {
char str[M];
scanf("%s", str + );
int len = strlen(str + );
int dpB[M], dpR[M];
for (int i = ; i <= len; i++) {
if (str[i] == 'B')
dpB[i] = ;
else
dpB[i] = -;
if (str[i] == 'R')
dpR[i] = ;
else
dpR[i] = -;
}
int s1, e1, s2, e2; //分别记录两种情况的最优区间
dpB[] = -, dpR[] = -;
int start1, start2, end1, end2;
int mx1 = -INF;
for (int i = ; i <= len; i++) { //先讨论B比R多的情况,求出B比R多的最大连续和
if (dpB[i - ] >= )
dpB[i] = dpB[i - ] + dpB[i];
else
s1 = i;
if (mx1 < dpB[i]) {
mx1 = dpB[i];
start1 = s1;
end1 = i;
}
}
int mx2 = -INF;
for (int i = ; i <= len; i++) { //讨论R比B多的情况,求出R比B多的最大连续和
if (dpR[i - ] >= )
dpR[i] = dpR[i - ] + dpR[i];
else
s2 = i;
if (mx2 < dpR[i]) {
mx2 = dpR[i];
start2 = s2;
end2 = i;
}
}
//然后就是比较两种情况的最大连续和,并且当最大连续和相同时,按题目要求格式输出
if (mx1 > mx2) {
printf("%d %d\n", start1, end1);
} else if (mx1 == mx2) {
if (start1 < start2)
printf("%d %d\n", start1, end1);
else if (start1 == start2) {
printf("%d ", start1);
end1 < end2 ? printf("%d\n", end1) : printf("%d\n", end2);
} else {
printf("%d %d\n", start2, end2);
}
} else {
printf("%d %d\n", start2, end2);
}
return ;
}

2018-09-17

Codefoces Gym 101652 【最大连续和】的更多相关文章

  1. 强化学习--DDPG---tensorflow实现

    完整代码:https://github.com/zle1992/Reinforcement_Learning_Game 论文<Continuous control with deep reinf ...

  2. 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)

    项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 P ...

  3. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

  4. Codeforces Gym 100513F F. Ilya Muromets 线段树

    F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...

  5. Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞

    Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...

  6. Codeforces Gym 100342E Problem E. Minima 暴力

    Problem E. MinimaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/attac ...

  7. 【 Gym - 101138K 】 The World of Trains (DP)

    BUPT2017 wintertraining(15) #4E Gym - 101138K 题意 N节车厢的火车,每节车厢容量是1~K,那么有\(K^N\)种火车. 求选择D个连续的且容量相同的车厢的 ...

  8. Gym 101617J Treasure Map(bfs暴力)

    http://codeforces.com/gym/101617/attachments 题意:给出一个图,每个顶点代表一个金矿,每个金矿有g和d两个值,g代表金矿初始的金子量,d是该金矿每天的金子量 ...

  9. Gym 100712I Bahosain and Digits(开关翻转问题)

    http://codeforces.com/gym/100712/attachments 题意: 给出一串数字,每次选择连续的k个数字加上任意数(超过10就取余),最后要使得所有数字都相等,求最大的k ...

随机推荐

  1. Windows下Oracle 11g的下载与安装

    Windows下Oracle的下载与安装 一.Oracle下载 官网地址:http://www.oracle.com/technetwork/database/enterprise-edition/d ...

  2. checkstyle.xml Code Style for Eclipse

    1. Code Templates [下载 Code Templates] 打开 Eclipse -> Window -> Preferences -> Java -> Cod ...

  3. Confluence 6 管理你的 Confluence 许可证

    你的许可证能够让你在运行 Confluence 的时候在指定的时间段获得特定的支持.同时这个许可证也定义了在你 Confluence 中可以使用的用户数量. 希望快速的查看当前的许可证信息,你可以进入 ...

  4. Confluence 6 修改站点标题

    站点标题是在浏览器的标题栏中显示的.在默认的情况下,标题被显示为 Confluence. 希望修改你站点的标题: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration ...

  5. Confluence 6 用户宏示例 - NoPrint

    这个示例演示了如何创建一个用户宏,这个宏包括了在查看页面中显示的内容,但是不被打印. Macro name noprint Visibility Visible to all users in the ...

  6. linux学习笔记:第三单元 Linux命令及获取帮助

    第三单元 Linux命令及获取帮助 11) 了解Linux命令的语法格式:命令 [选项] [参数]2) 掌握命令格式中命令.选项.参数的具体含义a) 命令:告诉Linux(UNIX)操作系统做(执行) ...

  7. python接口自动化测试三十三:获取时间戳(10位和13位)

    很多时候,在调用接口时,需要对请求进行签名.需要用到unix时间戳. 在python里,在网上介绍的很多方法,得到的时间戳是10位.而java里默认是13位(milliseconds,毫秒级的). 下 ...

  8. Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置

    一.静态资源WEB服务 1.静态资源类型:非服务器动态运行生成的文件 2.静态资源服务场景-CDN 假设静态资源存储中心在云南,用户在北京去请求一个文件,那么就会造成一个传输的延时,而如果Nginx同 ...

  9. HTML添加图像和超链接

    添加图像 <img src="图像的文件地址" alt="加载失败" height="350" width="350&quo ...

  10. java函数式编程之Supplier

    原创 2016年12月25日 10:02:52 标签: 函数式编程 / java 3250 描述:Supplier< T>接口没有入参,返回一个T类型的对象,类似工厂方法. 源码: pub ...