18942 偏爱字母

2023-12-15 01:33
文章标签 字母 偏爱 18942

本文主要是介绍18942 偏爱字母,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

经验谈:初期学习时肯定会这种情况,看到算法题目,感觉不难,但又做不出来的情况。解决算法题目本质上是看出题目要考察的知识点,再编码实现。当一个问题出现时,可以先借鉴暴力枚举的思想,先思考下答案到底是什么?将问题转换成我们熟悉的形式。

例如本题,求某个满足条件的子串,也就是求满足条件的区间。那么一定可以用暴力枚举的方式得到所有区间,再计算得到答案。这样就得到一个复杂度O(n^3)的算法(这样考试不会得0分了)。然后再考虑如何能优化这个问题,实际上此题目是最大子段和问题。

解题思路:将F看成-1,E看成1,这样问题就转换成求区间最大和问题,即最大子段和问题。下面代码使用了一种简单的dp思想来解决问题,即第i个字符或者和前面第i-1字符组成的最大子串连在一起,或者自己单独做一个子串。

#include <bits/stdc++.h>//ASI
using namespace std;
int main()
{int i,j,n,sum=0,ans=0;string s;cin>>n>>s;for(i=0;i<s.size();i++){if(s[i]=='E')sum++;else if(s[i]=='F')sum--;if(sum<0) /**< 如果到这里总和小于0,对于后面的第i+1来说,独立要比和第i个连接更好 */sum=0;ans=max(ans,sum);}cout<<ans;return 0;
}

这篇关于18942 偏爱字母的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/494609

相关文章

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

兔子--EditText去除下划线和输入字母和数字的限制

在设置密码输入框的时候,只允许输入数字和字母,设置如下属性:  android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 设置密码不可见(显示小黑点),并去除edittext的获取到焦点时候的下划线, 设置如下:

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意: 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。如果是奇数那么需要1来补齐,如果1 的个数大于等于2那么可以补齐。(1 的个数是偶数,需要2个1来补齐,剩下

LeetCode438. 找到字符串中所有字母异位词(2024秋季每日一题 11)

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 输入: s = “cbaebabacd”, p = “abc” 输出: [0,6] 解释: 起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。 起始索引等于 6 的子串是

正则:数字、字母、特殊字符同时存在且长度不小于8位

(?![^a-zA-Z]+$)(?!\D+$)(?![a-zA-Z0-9]+$).{8,}$ 使用示例: function valPasswordFormatNew(){var result = true;var newPsd = jQuery("#newPsd").val();if(newPsd !=""){result = (/(?![^a-zA-Z]+$)(?!\D+$)(?![a-zA

Java中等题-去除重复字母(力扣)

给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的 字典序 最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s = "bcabc"输出:"abc" 示例 2: 输入:s = "cbacdcbc"输出:"acdb" 这道题我没有思路,看了官方解题思路之后,思路梳理如下: 注:这道题适合经常复习 用一个数组pice[]来

java10: 猜字母

package day10;import java.util.Random;import java.util.Scanner;public class Demo01 {public static void main(String[] args) {char[] answer;char[] input;int[] result;int count = 0;System.out.println("

sqlserver2008r2查找非中文字母数字出现的第一个位置

环境: 测试数据库sqlserver2008r2,排序规则Chinese_PRC_CI_AS,其它环境没有试过 语句 select PATINDEX(‘%[^吖-咗a-zA-Z0-9]%’,’查找非 中文字母数字出现的第一个位置’) 返回值:4

特殊字符合集(包括各种emoji表情、windows ASCII字符、自定义字母图案等)

██████╗███████╗ ██████╗ ██╔════╝╚══███╔╝██╔═══██╗███████╗ ███╔╝ ██║ ██║╚════██║ ███╔╝ ██║▄▄ ██║███████║███████╗╚██████╔╝╚══════╝╚══════╝ ╚══▀▀═╝ Text to ASCII Art Generator (TAAG)http://pa