Codefoces Gym 101652 【最大连续和】
<题目链接>
题目大意:
给你一段只由 '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 【最大连续和】的更多相关文章
- 强化学习--DDPG---tensorflow实现
完整代码:https://github.com/zle1992/Reinforcement_Learning_Game 论文<Continuous control with deep reinf ...
- 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)
项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 P ...
- Codeforces Gym 100513G G. FacePalm Accounting 暴力
G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...
- Codeforces Gym 100513F F. Ilya Muromets 线段树
F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...
- Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞
Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...
- Codeforces Gym 100342E Problem E. Minima 暴力
Problem E. MinimaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/attac ...
- 【 Gym - 101138K 】 The World of Trains (DP)
BUPT2017 wintertraining(15) #4E Gym - 101138K 题意 N节车厢的火车,每节车厢容量是1~K,那么有\(K^N\)种火车. 求选择D个连续的且容量相同的车厢的 ...
- Gym 101617J Treasure Map(bfs暴力)
http://codeforces.com/gym/101617/attachments 题意:给出一个图,每个顶点代表一个金矿,每个金矿有g和d两个值,g代表金矿初始的金子量,d是该金矿每天的金子量 ...
- Gym 100712I Bahosain and Digits(开关翻转问题)
http://codeforces.com/gym/100712/attachments 题意: 给出一串数字,每次选择连续的k个数字加上任意数(超过10就取余),最后要使得所有数字都相等,求最大的k ...
随机推荐
- ios 清除缓存文件
获取缓存文件的大小 由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算. 计算单个文件大小 +(float)fileSizeAtPath:(NSStrin ...
- Confluence 6 配置 Web 代理支持
这个页面中的相关平台中的内容是不被支持的.因此,Atlassian 支持不能保证能够为你提供任何支持.请注意,这个页面下面提供的信息仅为你提供参考同时也不能保证所有的的配置能正常工作.如果你按照本页面 ...
- Confluence 6 "Duplicate Key" 相关问题解决
如果你遇到了下面的错误信息,例如: could not insert: [bucket.user.propertyset.BucketPropertySetItem#bucket.user.prope ...
- 在 Confluence 6 中禁用 workbox 应用通知
如果你选择 不提供应用通知(does not provide in-app notifications): Confluence workbox 图标将不会可见同时用户也不能在这个服务器上访问 wor ...
- 【JDK】JDK模块化(1)-为什么要模块化
Java9发布已经有一年了,跟Java8相比,从目录对比就看得出来差别相当大. 实际上Java9最大的变化就是JDK模块化(Modular). 那么,模块化的目的是什么呢? 官方的说法是: 之前版本的 ...
- NIO(一)
1.NIO是什么? 是JDK1.4之后推出的一个新的IO操作(netty.mina通讯框架的底层都是NIO实现的连接) 2.NIO和IO的区别(阻塞只会出现在网络通讯中,都是同步) NIO:非阻塞类型 ...
- LeetCode(112):路径总和
Easy! 题目描述: 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及 ...
- 【python】threadpool的内存占用问题
先说结论: 在使用多线程时,不要使用threadpool,应该使用threading, 尤其是数据量大的情况.因为threadpool会导致严重的内存占用问题! 对比threading和threadp ...
- mysql登录报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在MySQL登录时出现Access denied for user 'root'@'localhost' (using password: YES) 拒绝访问 对于出现拒绝访问root用户的解决方案错 ...
- jexus linux x64 [专业版] 安装和配置https
一.环境 操作系统:centOs7-x64 二.准备工作 购买SSL/TLS证书 三.部署 1.首先查看“/lib”或“/usr/lib”等系统库文件夹中是否有SSL库文件的名字,该文件名应该是“li ...