Atcoder ABC162 D - RGB Triplets
2024-08-29 20:23:24
题意:给你一个只含‘R’,‘G’,‘B’的字符串,求有多少个长度为3且每个字符都不相等,并且第一第二和第二第三的区间长度不同的子序列.
题解:统计每个字符各有多少,算出所有两两不同的子序列个数然后减去区间长度相等的个数即可
代码:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <algorithm>
6 #include <stack>
7 #include <queue>
8 #include <vector>
9 #include <map>
10 #include <set>
11 #include <unordered_set>
12 #include <unordered_map>
13 #define ll long long
14 #define fi first
15 #define se second
16 #define pb push_back
17 #define me memset
18 const int N = 1e6 + 10;
19 const int mod = 1e9 + 7;
20 using namespace std;
21 typedef pair<int,int> PII;
22 typedef pair<long,long> PLL;
23
24 int n;
25 ll cnt=0;
26 ll r,g,b;
27 string s;
28
29 int main() {
30 ios::sync_with_stdio(false);
31 cin>>n>>s;
32 for(int i=0;i<n;++i){
33 for(int j=i+1;j<n;++j){
34 int k=j+(j-i);
35 if(k>n-1) continue;
36 if(s[i]!=s[j] && s[j]!=s[k] && s[i]!=s[k]) cnt++;
37 }
38 }
39
40 for(int i=0;i<n;++i){
41 if(s[i]=='R') r++;
42 else if(s[i]=='G') g++;
43 else b++;
44 }
45 printf("%lld\n",r*g*b-cnt);
46
47
48 return 0;
49 }
最新文章
- webpack使用优化(基本篇)
- java多线程学习
- 如何编译Less
- SwipeRefreshLayout
- 原 Linux搭建SVN 服务器2
- hdu 4578 Transformation(线段树)
- 常用Json
- C# 自定义控件的一些文章和博客
- linux终端下文件不同颜色的含义
- OpenLayer
- 权限管理系统 mysql 数据脚本
- maven核心概念--生命周期
- Delphi7第三方控件
- paddlepaddle
- GIS 案例教程-蜂窝多边形制作模型
- jquery()后续版本中,live()取消后使用on()实现功能写法
- 【python】理解循环:for,while
- 如何为linux系统设置全局的默认网络代理
- Laravel 5.5 + Vue 开发单页应用
- Zabbix学习之路(三)之使用SMTP发送邮件报警及定制邮件报警内容
热门文章
- 串的模式匹配算法1 BF算法
- 了解一下ajax
- Java基础进阶类名整理
- Nginx安装步骤及本地浏览器不通解决方案,Nginx在Linux发布项目,Tomcat 与本地浏览器不通解决方案
- python列表字符串集合常用方法
- 【ORA】ORA-39002,ORA-39070,ORA-29283, ORA-06512,ORA-29283解决办法
- 【DBA】非常好的一个脚本网站
- SpringBoot Logback无法获取配置中心属性
- LeetCode349. 两个数组的交集
- Kubernetes 升级过程记录:从 1.17.0 升级至最新版 1.20.2