热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Codeforces1082BVovaandTrophies模拟,水题,坑B

Codeforces1082BVovaandTrophieshttps:vjudge.netproblemCodeForces-1082B题目:Vovahaswon nn trop

Codeforces 1082B Vova and Trophies

https://vjudge.net/problem/CodeForces-1082B

题目:

   

    Vova has won n">nn trophies in different competitions. Each trophy is either golden or silver. The trophies are arranged in a row.

     The beauty of the arrangement is the length of the longest subsegment consisting of golden trophies. Vova wants to swap two trophies (not necessarily adjacent ones) to make the arrangement as beautiful as possible — that means, to maximize the length of the longest such subsegment.

    Help Vova! Tell him the maximum possible beauty of the arrangement if he is allowed to do at most one swap.

Input

    The first line contains one integer n">nn (2≤n≤105">2n1052≤n≤105) — the number of trophies.

    The second line contains n">nn characters, each of them is either G or S. If the i">ii-th character is G, then the i">ii-th trophy is a golden one, otherwise it‘s a silver trophy.

Output


    Print the maximum possible length of a subsegment of golden trophies, if Vova is allowed to do at most one swap.

0">Examples


Input1


10
GGGSGGGSGG


Output1


7


Input2


4
GGGG


Output2


4


Input3


3
SSS


Output3


0


Note

    

    In the first example Vova has to swap trophies with indices 4">44 and 10">1010. Thus he will obtain the sequence "GGGGGGGSGS", the length of the longest subsegment of golden trophies is 7">77.

    In the second example Vova can make no swaps at all. The length of the longest subsegment of golden trophies in the sequence is 4">44.

    In the third example Vova cannot do anything to make the length of the longest subsegment of golden trophies in the sequence greater than 0">00.

技术分享图片

 

 

分析:

标准水题,真的是标准水题
but需要分类
分类还特别恶心
然后比赛ing被光荣的hack了
然后又wa了一堆
居然有三个点没有注意
当有多个连续区间时可以移动其他的来补充最长的使最长的+1
当没有连续区间时输出0
当有两个连续区间的时候同第一个点,可以移动其他的来补充最长的
hack代码:

1 #include
2 #include
3 #include <string.h>
4 #include
5 #include
6 #include <string>
7 #include
8 #include
9 #include <string.h>
10 #include
11 #define sf scanf
12 #define pf printf
13 #define lf double
14 #define ll long long
15 #define p123 printf("123\n");
16 #define pn printf("\n");
17 #define pk printf(" ");
18 #define p(n) printf("%d",n);
19 #define pln(n) printf("%d\n",n);
20 #define s(n) scanf("%d",&n);
21 #define ss(n) scanf("%s",n);
22 #define ps(n) printf("%s",n);
23 #define sld(n) scanf("%lld",&n);
24 #define pld(n) printf("%lld",n);
25 #define slf(n) scanf("%lf",&n);
26 #define plf(n) printf("%lf",n);
27 #define sc(n) scanf("%c",&n);
28 #define pc(n) printf("%c",n);
29 #define gc getchar();
30 #define re(n,a) memset(n,a,sizeof(n));
31 #define len(a) strlen(a)
32 #define f(i,n) for(int i = 0; i 33 #define LL long long
34 #define eps (1e-6)
35 using namespace std;
36 char a[1000000];
37 int num[1000000];
38 int main() {
39 int n ;
40 s(n);
41 ss(a)
42 re(num,0);
43 int count0 = 0;
44 f(i,n) {
45 if(a[i] == S) {
46 if(num[count0] != 0) {
47 count0 += 2;
48 } else {
49 count0 ++;
50 }
51 } else if(a[i] == G) {
52 num[count0] ++;
53 }
54 }
55 int count1 = 0;
56 for(int i = 0; i <= count0; i ++) {
57 if(num[i] != 0) {
58 count1 ++;
59 }
60 }
61 if(count1 == 1) {
62 for(int i = 0; i <= count0; i ++) {
63 if(num[i] != 0) {
64 p(num[i]) pn return 0;
65 }
66 }
67 } else if(count1 == 2) {
68 int maxi = 0;
69 for(int i = 0; i <= count0; i ++) {
70 if(num[i] != 0) {
71 if(num[i] != 0 && num[i+1] == 0 && num[i+2] != 0) {
72 p(num[i]+num[i+2]) pn return 0;
73 }
74 if(maxi < num[i]) {
75 maxi = num[i];
76 }
77 }
78 }
79 p(maxi) pn return 0;
80 } else {
81 int maxi = 0;
82 for(int i = 0; i <= count0; i ++) {
83 if(num[i] != 0 && num[i+1] == 0 && num[i+2] != 0) {
84 if(maxi 2]+1) {
85 maxi = num[i]+num[i+2]+1;
86 }
87 }
88 }
89 p(maxi) pn return 0;
90 }
91
92 return 0;
93 }



 技术分享图片

技术分享图片

最后小小的皮了一下,wa on test193
附上标答和标解
1082B - Vova and Trophies
Let riri be the maximal segment of gold cups that begins in the cup ii. Let lili be the maximum segment of gold cups that ends in the cup ii. Also, let the total number of gold cups be cntGcntG.
Note that it makes no sense to change the cups of the same color. Then let‘s consider the silver cup, which will change with the gold cup, let its number be ii. Then if ri+1+li?1


 

1 #include
2 using namespace std;
3 int n;
4 string s;
5 int main() {
6
7 cin >> n >> s;
8
9 vector <int> l(n), r(n);
10 for(int i = 0; i i){
11 if(s[i] == G){
12 l[i] = 1;
13 if(i > 0) l[i] += l[i - 1];
14 }
15 }
16 for(int i = n - 1; i >= 0; --i){
17 if(s[i] == G){
18 r[i] = 1;
19 if(i + 1 1];
20 }
21 }
22
23
24 int res = 0;
25 int cntG = 0;
26 for(int i = 0; i i)
27 cntG += s[i] == G;
28
29 for(int i = 0; i i){
30 if(s[i] == G) continue;
31 int nres = 1;
32 if(i > 0) nres += l[i - 1];
33 if(i + 1 1];
34 res = max(res, nres);
35 }
36
37 res = min(res, cntG);
38 if(cntG == n) res = cntG;
39 cout < endl;
40 return 0;
41 }

 


推荐阅读
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文详细介绍了 Charles 工具的下载、安装、配置及使用方法,特别针对 HTTP 和 HTTPS 协议的数据抓取进行了说明。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • 本文介绍了并查集(Union-Find算法)的基本概念及其应用。通过一个具体的例子,解释了如何使用该算法来处理涉及多个集合的问题。题目要求输入两个整数 n 和 m,分别表示总人数和操作次数。算法通过高效的合并与查找操作,能够快速确定各个元素所属的集合,适用于大规模数据的动态管理。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
author-avatar
好kc好先生之家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有