字串魔法(easy)
連結:https://ac.nowcoder.com/acm/contest/9680/B
來源:牛客網
白淺獲得了一個僅由A和B組成的字串。他可以至多使用一次魔法來改變字串。 魔法的定義:選擇一個字典序不遞增的子串, 然後使得這個子串變成字典序不遞減的子串,即變成形如AAA…AAABBB…BBB這樣的字串。 他想知道,在他至多使用一次魔法後,這個字串能夠出現的最長的字典序不遞減的子串的長度為多少。
輸入描述:
輸入第一行包含一個整數n,代表字串的長度
接下來一行給出一個長度為n的字串(1≤n≤200000)
輸出描述:
輸出一行一個正整數表示答案。
示例1
輸入
6
AABBAA
輸出
6
說明
選擇”BBAA”的子串,使用魔法變成AABB,則整個字串變為AAAABB,所以最長不遞減子串長度為6。
#include <stdio.h>
#define max(a, b) (a > b ? a : b)
char s[1000001];
char st[11];
int down[1000001], upl[1000001], upr[1000001];
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt", "r", stdin);
#endif
int i, j, n, m;
int flag = 0, v = -1, l, r;
int num1 = 0, num2 = 0, max1 = 0;
scanf("%d", &n);
fgets(st, 11, stdin);
scanf("%s", s);
down[0] = 1;
for (i = 1; i < n; i++)
{
if (s[i] <= s[i - 1])
{
down[i] = down[i - 1] + 1;
}
else
{
down[i] = 1;
}
}
upl[0] = 1;
for (i = 1; i < n; i++)
{
if (s[i] >= s[i - 1])
{
upl[i] = upl[i - 1] + 1;
}
else
{
upl[i] = 1;
}
}
upr[n - 1] = 1;
for (i = n - 2; i >= 0; i--)
{
if (s[i] <= s[i + 1])
{
upr[i] = upr[i + 1] + 1;
}
else
{
upr[i] = 1;
}
}
for (i = 0; i < n; i++)
{
l = i - down[i] + 1;
r = i;
if (l - 1 >= 0 && s[r] >= s[l - 1])
{
num1 += upl[l - 1];
}
if (r + 1 < n && s[l] <= s[r + 1])
{
num1 += upr[r + 1];
}
num1+=down[i];
max1 = max(max1, num1);
num1 = 0;
}
printf("%d\n", max1);
return 0;
}
相關文章
- ●Joyoi Easy
- 【BUUCTF】Easy JavaJava
- 【BUUCTF】easy calc
- Leetcode(easy heap)LeetCode
- Easy-Admin
- LeetCode-EasyLeetCode
- As Easy As A+B
- 魔法逝
- Fractal pg walkthrough Easy
- Hub PG walkthrough Easy
- [RoarCTF 2019]Easy Calc
- Catch the Mole(Easy Version)
- type challenge(easy 部分)
- Prefix Flip (Easy Version)
- vue-easy-rendererVue
- j-easy/easy-rules: Java簡單的規則引擎Java
- 魔法手鍊
- 魔法披風
- 攻防世界-Easy_Crypto
- [RoarCTF 2019]Easy Java 1Java
- 攻防世界-Easy_ECC
- 攻防世界-easy_RSA
- ES-Client-easy esclient
- [RoarCTF 2019]Easy Calc 1
- 精讀《type challenges - easy》
- BUUCTF:[RoarCTF 2019]Easy Calc
- Easy-locust Web 版本Web
- An easy guide to object rest/spreadGUIIDEObjectREST
- LeetCode 198. 打家劫舍(Easy)LeetCode
- 聲音魔法課
- python魔法函式Python函式
- 魔法塔之謎
- 魔法塔總論(A)
- iOS - Tips - 黑魔法iOS
- 《哈利波特:魔法覺醒》首測開啟,初入魔法世界
- Java規則引擎 Easy RulesJava
- 【easy】695. Max Area of Island
- LeetCode - Easy - 66. Plus OneLeetCode