题意很好懂,就是一个长度为n的序列,s[i] 只可能是r,g,b,要你要满足就 j - i != k - j,并且s[i],s[j],s[k]两两不相同,并且i < j < k,的个数有多少个。
思路:
暴力O(n^3)模拟一遍铁超时,j - i != k - j 一开始一直在观察这个式子看能不能优化一下,事实上可以不管这个式子就一个区间[i,k]={B,R},那么我们在[i + 1,k - 1]这个区间找有多少个G就行了,需要考虑一下中点是否需要减掉,然后把所有的情况枚举出来就行了。这里用前缀和维护sum [ i ] [ 1 - 3 ]:表示从1到i有多少个R,B,G。
感觉写的有点点复杂了。。。。
代码:

#include<bits/stdc++.h>
using namespace std;const int maxn = 1e5 + 10;
typedef long long int ll;
ll sum[maxn][4];
void solved(){ll n;cin>>n;char s[5000];scanf("%s",s + 1);ll r = 0, b = 0,g = 0;for(int i = 1; i <= n; i++){if(s[i] == 'R'){r++;sum[i][1] = sum[i - 1][1] + 1;sum[i][2] = sum[i - 1][2];sum[i][3] = sum[i - 1][3];}else if(s[i] == 'G'){g++;sum[i][1] = sum[i - 1][1];sum[i][2] = sum[i - 1][2] + 1;sum[i][3] = sum[i - 1][3];}else if(s[i] == 'B'){b++;sum[i][1] = sum[i - 1][1];sum[i][2] = sum[i - 1][2];sum[i][3] = sum[i - 1][3] + 1;}}//cout<<"r :"<<r<<"  G:"<<g<<"  B:"<<b<<endl;//cout<<"R:  "<<sum[n][1]<<"  G:"<<sum[n][2]<<"   B:"<<sum[n][3]<<endl;ll ans = 0;for(int i = 1; i <= n; i++)for(int k = i + 1; k <= n; k++){if(s[i] == 'R' && s[k] == 'B' ){if((k - i + 1) & 1 && s[(i + k) /2] == 'G')ans --;ans += sum[k - 1][2] - sum[i][2];}if(s[i] == 'B' && s[k] == 'R'){if((k - i + 1) & 1 && s[(i + k) /2] == 'G')ans --;ans += sum[k - 1][2] - sum[i][2];}if(s[i] == 'G' && s[k] == 'B'){if((k - i + 1) & 1 && s[(i + k) /2] == 'R')ans --;ans += sum[k - 1][1] - sum[i][1];}if(s[i] == 'B' && s[k] == 'G'){if((k - i + 1) & 1 && s[(i + k) /2] == 'R')ans --;ans += sum[k - 1][1] - sum[i][1];}if(s[i] == 'R' && s[k] == 'G'){if((k - i + 1) & 1 && s[(i + k) /2] == 'B')ans --;ans += sum[k - 1][3] - sum[i][3];}if(s[i] == 'G' && s[k] == 'R'){if((k - i + 1) & 1 && s[(i + k) /2] == 'B')ans --;ans += sum[k - 1][3] - sum[i][3];}}cout<<ans<<endl;
}
int main(){solved();return 0;
}

D - RGB Triplets(前缀和+思维)相关推荐

  1. 洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)

    题目链接:点击查看 题目大意:给出一个由n个数组成的序列,求长度不超过m的连续子段和中的最大值 题目分析:因为给出了一个限制条件,所以这就不能当普通的动态规划来做了,我们可以跑一遍前缀和,然后枚举每一 ...

  2. 中石油训练赛 - Block(二维前缀和+思维)

    题目描述 Alice得到了一张由n×m个黑白像素点组成的图片,她想要压缩这张图片.压缩图片的过程如下: 1.首先,选择一个正整数k(k>1),将图片划分成若干个k×k的小块.如果n,m不能被k整 ...

  3. C - Sweets Eating 前缀和 + 思维找规律

    传送门 思路:1.找出最优策略 2.优化代码 最主要的是如何优化代码,我们发现m是一个周期,在m周期类的元素不会受到影响,一旦到达一个周期,那么此时的数值就要整体移一位,这个可以用前缀和来实现. 设d ...

  4. 我在atcoder打比赛

    我在atcoder打比赛 AtCoder Beginner Contest 177   比赛人数9636 AtCoder Beginner Contest 177 A Don't be late 化浮 ...

  5. 第二章:二分和前缀和 【完结】

    基本熟练掌握了. 目录 789. 数的范围 [整数二分 板子题] 790. 数的三次方根 [实数二分] 795. 前缀和 [一维前缀和 板子题] 796. 子矩阵的和 [二维前缀和 板子题] 730. ...

  6. RGB转YCbCr算法 之Matlab FPGA实现介绍

    1.引言 虽然现在RGB是计算机视觉最基本的三原色组成结构,但是YCbCr也有非常重要的角色,甚至却之不可,理由如下: 1)很多机器视觉,图像处理/检测识别算法,不关注色彩,只需要在灰度域处理即可: ...

  7. 所需即所获:IDE = _plugins_ + vim

    新版迁移:https://github.com/yangyangwithgnu/use_vim_as_ide http://yangyangwithgnu.github.io/ 0 vim 必知会   ...

  8. UPC-2021个人训练赛第20场-部分题解

    目录 RGB Triplets 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 Select Half 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 心灵的抚 ...

  9. 将VIM打造成强大的IDE

    转载自:所需即所获:像 IDE 一样使用 vim 如侵犯您的版权,请联系:2378264731@qq.com --------------------------------------------- ...

  10. Acwing第 19 场周赛【完结】

    目录 3991. 满足条件的01串[难度: 一般] 3992. 树上有猴[难度: 一般 / 知识点: 前缀和 思维] 3993. 石子游戏[难度: 中 / 知识点: 前缀和 思维] 3991. 满足条 ...

最新文章

  1. [BJWC2018]Border 的四种求法(后缀自动机+链分治+线段树合并)
  2. 前端框架除了layui还有哪些
  3. jquery-confirm
  4. leetcode 《简单》 数学部分 Python实现
  5. [大学回忆录-思想]一种能力的培养
  6. NET-TreeView控件说明
  7. 【图像特征提取1】方向梯度直方图HOG---从理论到实践------附带积分图像的解析
  8. 诺德尔-2011-2003-V1新版 ghost安装版
  9. 《正版 图解语音识别 语音识别入门实践教程 语音识别技术书 人工智能机器学习深度学习计算机网络编程书籍R3Z978》[日]荒木雅弘著【摘要 书评 在线阅读】-苏宁易购图书...
  10. 微信终端跨平台组件 mars 开源
  11. (二). 细说Kalman滤波:The Kalman Filter
  12. Spring依赖注入@Autowired原理解析(一)之寻找需要注入的属性
  13. 【3分钟带你学】Ajax
  14. 嵌入式软件开发能力提高的几个途径
  15. 微软2016校园招聘4月在线笔试1-Font Size
  16. MT4外汇结余净值可用预付款
  17. jquery滚动条滚动事件_滚动条和jQuery –使用航点的事件处理
  18. 程序 数列求和 c语言,[编程入门]有规律的数列求和-题解(C语言代码)
  19. MLY -- 13.Error analysis:look at dev set examples to evaluate ideas
  20. 给老板的一封工作感悟信

热门文章

  1. 7、万国觉醒建筑白天黑夜效果(Shader Graph)
  2. 计算机管理员禁用teredo怎么解决,计算机管理员已在本地禁用teredo什么意思
  3. alertmanager配置详解
  4. 微信公众号接入自己的客服系统,自定义客服系统
  5. Android内部存储和外部存储以及缓存清理和内存清理!
  6. mysql new用法_MySQL触发器之 new 和 old 的理解
  7. PHP在线客服系统IM即时通讯聊天源码
  8. android数据格式化,手机格式化了?教你找回安卓手机误删数据
  9. 一种人机友好的视频压缩方案(HMFVC)
  10. 1.thrift概述