AtCoder Beginner Contest 162 D.RGB Triplets

题目链接

Problem Statement

We have a string S of length N consisting of R, G, and B.
Find the number of triples (i,j,k)(1≤i<j<k≤N)(i, j, k) \ (1≤i<j<k≤N)(i,j,k) (1≤i<j<k≤N) that satisfy both of the following conditions:

  • Si≠Sj,Si≠Sk,andSj≠Sk.S_i≠S_j, S_i≠S_k, and S_j≠S_k.Si​​=Sj​,Si​​=Sk​,andSj​​=Sk​.
  • j−i≠k−j.j−i≠k−j.j−i​=k−j.

Constraints

  • 1≤N≤40001≤N≤40001≤N≤4000
  • S is a string of length N consisting of R, G, and B.

Input

Input is given from Standard Input in the following format:
N
S

Output

Print the number of triplets in question.

Sample Input 1

4
RRGB

Sample Output 1

1

Sample Input 2

39
RBRBGRBGGBBRRGBBRRRBGGBRBGBRBGBRBBBGBBB

Sample Output 2

1800

这题首先找所有三元组的个数,然后用循环遍历去掉不符合条件的三元组即可,复杂度 O((n2)2)O((\frac{n}{2})^2)O((2n​)2),AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;int main(){int len;string s;cin>>len>>s;ll s1=0,s2=0,s3=0,sum=0;for(int i=0;i<len;i++){if(s[i]=='R') sum+=s2*s3,s1++;if(s[i]=='G') sum+=s1*s3,s2++;if(s[i]=='B') sum+=s1*s2,s3++;}for(int i=0;i<len;i++){for(int j=i;j<len;j+=2){if(s[i]!=s[j] && s[i]!=s[(i+j)/2] && s[j]!=s[(i+j)/2]) sum--;}}cout<<sum;return 0;
}

AtCoder Beginner Contest 162 D.RGB Triplets相关推荐

  1. AtCoder Beginner Contest 167 D Teleporter 找周期

    AtCoder Beginner Contest 167   比赛人数11940  比赛开始后15分钟看到A题,之后每隔一分钟,看到一道题,在比赛开始后第21分钟看到所有题 AtCoder Begin ...

  2. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  3. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  4. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  5. AtCoder Beginner Contest 215 G - Colorful Candies 2

    AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...

  6. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

  7. AtCoder Beginner Contest 215 E - Chain Contestant

    AtCoder Beginner Contest 215 E - Chain Contestant 给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子 ...

  8. AtCoder Beginner Contest 204 F Hanjo 2

    AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...

  9. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解

    Caddi Programming Contest 2021(AtCoder Beginner Contest 193) A - Discount 打折浮点数除即可 B - Play Snuke 枚举 ...

  10. Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)题解

    文章目录 A - Tiny Arithmetic Sequence B - Do you know the second highest mountain? C - Secret Number D - ...

最新文章

  1. spring mvc后端代码实现弹出对话框_Spring(3)——事务管理和MVC
  2. C++命名空间(namespace)
  3. finishBeanFactoryInitialization 处理预实例化Bean
  4. 前端有用JavaScript技巧
  5. java集合转字符串,Java集合将字符串转换为字符列表
  6. 你见过错误 CS0234...吗?
  7. ctb伺服驱动器说明书_安川伺服驱动器SGDV报警原因及处理措施
  8. LBRY:美SEC对我们的指控将威胁到整个加密货币行业
  9. 简谈PCB设计软件对比
  10. centos7.6安装Kubernetes1.14.1集群
  11. li序号 ul_ul ol li的序号编号样式
  12. 为什么使用服务器端渲染 (SSR)?
  13. 【2019春招准备:A1】
  14. mysql连接两个字段_sql如何将二个字段连接在一起
  15. 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】
  16. 不小心删了自己的注册表怎么办
  17. 如何在Windows终端中使用电力线,书呆子字体,Cascadia代码,WSL和oh-my-posh进行漂亮提示
  18. [数据分析]-ubuntu下解决anaconda环境下matplotlib绘制图表时中文显示乱码问题
  19. Go语言?对微信约战棋牌网站搭建新技术怎么看?
  20. ]视音频编解码技术零基础学习方法

热门文章

  1. odoo使用word中的MERGEFIELD合并域和python包mailmerge来生成word文档
  2. 估计很多人不知道:在PowerPoint中插入图片的三种方式用法和解析
  3. PowerPoint.Application win32 操作ppt 复制 新建 插入图片
  4. AR和VR,有哪些知名的开源平台
  5. python中floor_Python torch.floor方法代码示例
  6. 阿里开发规约之编程规约(4)
  7. 云计算防止入坑之通过跑分看云服务器的性能,给各位云计算入门者的一些建议
  8. 微信小程序连接onenet控制RGB三色灯
  9. 阅读心得:JDE:Towards Real-Time Multi-Object Tracking
  10. HTML炫彩按钮,PS打造炫彩的开始图标按钮