P2562kitty猫基因
2024-09-05 17:16:14
这道题是安徽NOI省选题,但是难度并没有那么难。
这道题是一个字符串的递归题,有很多大佬用线段树来写的(我也想学线段树,lowbit当头一棒)。题意为全部相同则输出B或A,不同则分成长度相同的两个子串,并输出C。看到这个便很容易想到递归加二分,但是如何去写上面的函数呢?我顿时想退缩,然后得出策略:枚举子串,假如有不同的则递归二分输出C,直到相同输出A、B。
1.避免出现低级错误,eg.string s[],(mid+1,left),,会耽误很多调试时间
2.熟练运用递归的二分
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#define N 100001
using namespace std;
string s;//!
bool flag;
void work(int left,int right){
flag=true;
int mid=(left+right)/;
for(int i=left+;i<=right;i++){
if(s[i]!=s[i-]){
flag=false;
break;
}
}
if(flag==false){
cout<<"C";
work(left,mid);
work(mid+,right);//!
return;
}
if(flag==true){
if(s[left]=='') cout<<"A";
else if(s[left]=='') cout<<"B";
}
return;
}
int main(){
cin>>s;
int len=s.length();
work(,len-);//!
return ;
}
最新文章
- WEB开发中的字符集和编码
- id to load is required for loading
- Android万能使用WebServices(不用引入外部包)
- POJ 2828 线段树(想法)
- Checklist For Choosing The Right Database Engine
- Magento中如何调用SQL语句
- DuiVision开发教程(17)-对话框
- C++ CGI Helloword
- nojs iis asp.net mvc
- ES2015 (ES6)
- 顺序表JAVA代码
- 不惧面试:HTTP协议(1) - 基础扫盲
- 管理Fragments(转)
- hbase建表
- deeplearning.ai 神经网络和深度学习 week3 浅层神经网络 听课笔记
- C#多线程+委托+匿名方法+Lambda表达式
- Java Web相关问题
- Hexo的next主题安装
- Entity Framework Core导航属性加载问题
- php实现队列