T89353 【BIO】RGB三角形

题解

对于这个题目有一个规律:

 如果一个数列的长度为 3k+1(0<=k) 那么,这个数列最终缩放成的一个字母只和这个数列的首项,尾项有关

所以我们可以先判断输入的这个数列长度是否为 3k+1(0<=k) ,如果是,那就直接处理好了

否则就找到一个最大的 3k+1,然后把这个数列划分成更多的这么长的小区间,一点点处理

每次处理后序列长度都会缩短,那么相应的 3k+1也要更新

最后处理到只剩下一个字母啦,就是答案了

代码

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<queue> using namespace std; inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} int n,len,m;
int l[]={,,,,,,,,,,,,,,};
string s; int main()
{
// freopen("t5.in","r",stdin);
// freopen("yy.txt","w",stdout); n=read();m=n;
cin>>s;
if(n==)
{
cout<<s[];
return ;
}
while(m)
{
for(int i=;i<;i++)
{
if(l[i]<=m) len=l[i];
else break;
}
if(len==m)
{
char a1=s[],a2=s[m-],a3;
if(a1==a2) a3=a1;
if((a1=='R'&&a2=='G')||(a1=='G'&&a2=='R')) a3='B';
if((a1=='R'&&a2=='B')||(a1=='B'&&a2=='R')) a3='G';
if((a1=='B'&&a2=='G')||(a1=='G'&&a2=='B')) a3='R';
cout<<a3<<endl;
return ;
}
for(int i=;i<m-len+;i++ )
{
char a1=s[i],a2=s[i+len-];
if(a1==a2) s[i]=a1;
if((a1=='R'&&a2=='G')||(a1=='G'&&a2=='R')) s[i]='B';
if((a1=='R'&&a2=='B')||(a1=='B'&&a2=='R')) s[i]='G';
if((a1=='B'&&a2=='G')||(a1=='G'&&a2=='B')) s[i]='R';
}
m-=(len-);
} cout<<s[]; return ;
}

最新文章

  1. laravel5.1学习(2)-- artisan tinker命令
  2. python中遍历文件的3个方法
  3. linux概念之内存分析
  4. html初学(一)
  5. 关于J-LINK升级最新固件后无法连上的一点分析
  6. spring aop实现原理
  7. 【Leetcode】查找二叉树中任意结点的最近公共祖先(LCA问题)
  8. nyoj 228 士兵杀敌(五)
  9. HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
  10. GString及IntelliJIdea中调试Groovy的操作步骤
  11. Tair总述
  12. bzoj 4556 字符串
  13. 关于阿里ICON矢量图(SVG)上传问题.
  14. php实现栈操作(不用push pop 库函数)
  15. 第一个Azure应用
  16. C# 将当前应用程序写入到注册表开机启动项中
  17. Codeforces 215D. Hot Days(贪心)
  18. 面向对象的编程思想和Java中类的概念与设计
  19. DotNetCore学习-3.管道中间件
  20. xml和对象 转换

热门文章

  1. vue 日常开发小细节
  2. 提升Scrapy框架爬取数据效率的五种方式
  3. 重装系统失败后怎么用好系统U盘启动解决?
  4. Java语言基础(7)
  5. python 获取安装包apk, ipa 信息
  6. Ubuntu18.04安装破解版MATLAB2018b
  7. Error response from daemon: manifest for elasticsearch:latest not found
  8. 去除IntelliJ IDEA中重复代码报灰黄色的下划波浪线
  9. 10-SQLServer中统计信息的使用
  10. mysql索引分类及实现原理