原题链接:AcWing 4261. 孤独的照片 - AcWing

我感觉这道题还是挺妙的,所以就记录一下

题目的含义就是找有多少个类似于GHH  GHHH  HHG  HHGH……的字符串

(某个字母仅出现一次)

可以在纸上写一下,方便理解

代码

#include<iostream>
using namespace std;typedef long long LL;const int N = 500011;
int n,l[N],r[N];
char s[N];int main()
{scanf("%d", &n);scanf("%s", s);for(int i=0,h=0,g=0;i<n;i++)//处理左边的{if(s[i]=='G') //如果当前位置是G{             //那么H的个数就要=0l[i]=h;h=0;g++;      //并且G的个数+1}else{l[i]=g;g=0;h++;}}for(int i=n-1,h=0,g=0;i>=0;i--)//处理右边的{if(s[i]=='G'){r[i]=h;h=0;g++;}else{r[i]=g;g=0;h++;}}LL res=0;for (int i = 0; i < n; i ++ ){res+=(LL)l[i]*r[i]+max(l[i]-1,0)+max(r[i]-1,0);//防止结果小于0}                                                  //case1:l[i]-1cout<<res;                                         //case2:r[i]-1
}                                                      //case3:l[i]*r[i]
//看上去在for里面,又有了max(l[i]-1,0)max(r[i]-1,0)
//但是实际上,l[0]l[1]......l[n-2]=0,只有l[n-1]!=0
//不信举个例子试试GHH
//不信举个例子试试GHH
//不信举个例子试试GHH

实在看不懂的话可以听听y总的视频讲解(文章开头有链接)

也不能一直扣一道题,休息一下再看说不定就会了

使用数学思想解决的一道题相关推荐

  1. 运用贪心思想解决跳跃游戏

    运用贪心思想解决跳跃游戏 文章目录 运用贪心思想解决跳跃游戏 Jump Game I 1.题目描述 2.分析 3.代码 Jump Game II 1.问题描述 2.分析 3.动规代码[超时] 4.贪心 ...

  2. 没有数学何来计算机:论计算机起源的数学思想

    人类的历史可以看做一部关于解放的历史.也有这样的说法,懒惰是人类进步的动力.为了偷懒,人类不断的做着各种努力,发明了各种机器工具,将自己从繁重的劳动解放出来,另一方面,每一次大的进步,都需要解放思想, ...

  3. 浅谈数学在计算机科学中的应用,浅谈计算机科学技术在数学思想中的应用(原稿)...

    <浅谈计算机科学技术在数学思想中的应用(原稿).doc>由会员分享,可免费在线阅读全文,更多与<浅谈计算机科学技术在数学思想中的应用(原稿)>相关文档资源请在帮帮文库(www. ...

  4. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

  5. 计算机的数学思想源头(回复“计算机数学”可下载PDF典藏版)

    计算机的数学思想源头(回复"计算机数学"可下载PDF典藏版) 2018-04-16 数据简化DataSimp 数据简化DataSimp导读:前篇<计算机诞生的详细历史> ...

  6. 数学四大思想八大方法_中考数学专题五,四种数学思想方法,第3个比较难掌握...

    数学思想方法是指对数学知识和方法形成的规律性的理性认识,是解决数学问题的根本策略.数学思想方法是把知识转化为能力的桥梁,灵活运用各种数学思想方法是提高解题能力的根本所在. 因此,在复习时要注意总结体会 ...

  7. 中外数学教学名著与数学思想

    中外数学教学名著与数学思想 (2011-08-01 13:30:56) 标签: 校园 分类: 工作篇 中外数学教学名著 一.数学纵横 1.1华罗庚,华罗庚科普著作选集,沪教,84[必读] 1.2张奠宙 ...

  8. 动态规划算法思想解决找零钱问题

    前言 关于找零钱问题,网上已经有很多相关的资料以及优秀的文章博客等.这里写这篇博客的初衷很简单,就是为了方便自己,回过头来捡起这个知识能快一点,接受起来更易理解点:他人的文章写的再好,毕竟是别人的,学 ...

  9. 计算机起源的数学思想

    来源:数字中国本文约8800字,建议阅读18分钟人类的历史可以看做一部关于解放的历史. 人类的历史可以看做一部关于解放的历史.也有这样的说法,懒惰是人类进步的动力.为了偷懒,人类不断的做着各种努力,发 ...

最新文章

  1. 英媒:人工智能终于接近人类智能了吗?
  2. 5-29 vscode占位
  3. 沉淀2017,勇闯2018
  4. 我的HTML总结之常用基础便签
  5. MaxCompute SQL原理解析及性能调优
  6. mysql sdi_MySQL 8.0新特性: 数据字典
  7. (三)比特币时间序列数据的AI异常检测
  8. 【C++】对象作为函数参数【原创技术】
  9. 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索...
  10. 老Java程序员花一天时间写了个飞机大战,很舒服!
  11. logistic回归分析优点_糖尿病前期患者焦虑现状调查及影响因素分析
  12. KVM环境下vCPU绑定到物理CPU
  13. Studio3T安装
  14. 二级域名原理以及程序代码
  15. Vue动态渲染echarts图表
  16. 宏基因组(鸟枪法测序)—微生物同源基因引物设计
  17. 【零基础】极星9.3下单详解
  18. 解决适配375像素宽度667像素高度移动端方法:推荐一款非常好用的px转rem单位的VSCode插件px to rem rpx (cssrem)
  19. 字模c语言,[C/C++]字模的解析(视频)
  20. with open()的使用

热门文章

  1. C++ 类模板(template)详解
  2. 【算法工程师】机器学习面试问题总结
  3. 小米面试总结(附答案)
  4. linux启动过程(参考内核0.11)
  5. 云鼠实现扫地机器人三大技术突破,成最受青睐的扫地机器人方案
  6. 蓝牙mesh基本概念讲解
  7. 全国青少年软件编程等级考试标准 (预备级)
  8. 20、注册消防工程师每个注册有效期内应当参与的消防技术服务项目个数
  9. 习题4-11 兔子繁衍问题 (详解)(15 分)
  10. 2022-03-09 Unity 3D两个场景的切换