B.TMT Document (思维分析)
题目大意:
/
t组数据,每组给你一个长为n的字符串,
字符串由T和M组成,问你是否存在TMT(不是严格的紧挨)
存在,如果由则输出YES 否者输出NO
/
先分析我的代码(改4.0之后的代码):
int t;cin>>t;while(t -- ){int n ;cin>>n;int sum =0;getchar();int pos = 0;int sum2 = 0;int sum1 = 0;
这里我先处理了一下最后一个M的位置,同时还记录了M的个数
这样子就可以判断M前面的T是否和M的数量一样了
for(int i=0; i<n; i++)
{scanf("%c",&s[i]);if(s[i]=='M'){pos = i;sum2++;}
}
这里又判断了最后一个M之后的所有T
(这里就开始出错了,因为如TTMTMT)
for(int i=pos; i<n; i++)
{if(s[i]=='T'){sum1++;///我这里判断了 最后一个M前面的T}
}
if(sum1!=sum2) 如果sum1!=sum2 这里其实就错了 最后一个M之后的T 和 之前的T相比cout<<"NO"<<endl;else{int ft = 0;int fb = 0;int st = 0;bool flag = true;for(int i=0; i<n; i++){if(s[i]=='T')ft++; 如果有T那么ft++if(s[i]=='M'){st++;如果有M st++ 其实这里都乱套了ft--;sum-=2;if(ft<0){cout<<"NO"<<endl;flag =false;break;}}if(i==n-1&&s[i]=='M'&&ft){cout<<"NO"<<endl;flag =false;break;}}if(flag){if(st!=ft)cout<<"NO"<<endl;elsecout<<"YES"<<endl;}}
}
我们来看正解
先考虑,其实每一个M前面的T的数量 只需要>sum(M) 就行
然后M后面如果有T 那么直接减就完了,这样子就保证了最近最优
#include <bits/stdc++.h>
using namespace std;
int main()
{int t;cin>>t;while(t--){int n ;string s;cin>>n;cin>>s;int t= 0,m=0,cnt = 0;bool flag = true;int len =s.size();for(int i=0;i<len;i++){if(s[i] =='T'){t++;if(cnt)cnt--;这样子就保证了 M基本都是和他最近的一个T 消除的同时也就保证了 T 是不会乱来 的}else{m++;cnt++;if(m>t)如果m大于了 m前面的T的个数flag =false;}}如果m还有剩余 或者 t还有剩余if(t!=m*2||cnt) flag =false;if(flag) cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;
}
B.TMT Document (思维分析)相关推荐
- Codeforces Round #715 (Div. 2) B. TMT Document——思路分析,清晰易懂
题目链接 文章目录 题目大意: 思路 AC代码 题目大意: 能否把只含T和M的字符串分成,若干个TMT的子序列,原字符串长度是3的倍数 思路 我们看TMT这个串,M前面要有一个T,M后面也要有一个T, ...
- B. TMT Document(思维)
https://codeforces.com/contest/1509/problem/B 思路: 对于一个M,要保证左边的L大于等于M的数量.剩下右边的再从右边往左边扫,保证右边的L大于等于M的数量 ...
- B. TMT Document—— Codeforces Round #715 (Div. 2)
题意:一组中,给一个字符串只有T,M,看是否可以只分为子串TMT 5 3 TMT 3 MTT 6 TMTMTT 6 TMTTTT 6 TTMMTT 一直找不到规律,后来看一下灰名朋友的代码,很亲入门新 ...
- ML:从工程化思维分析—机器学习团队十大角色的简介(背景/职责/产出物):产品经理、项目经理、业务咨询顾问、数据科学家、ML研究员、数据工程师、ML工程师、DevOps/软件开发/交付工程师
ML:从工程化思维分析-机器学习团队十大角色的简介(背景/职责/产出物):产品经理.项目经理.业务咨询顾问.数据科学家.ML研究员.数据工程师.ML工程师.DevOps/软件开发/交付工程师 背景:在 ...
- B. TMT Document
B. TMT Document Example input 5 3 TMT 3 MTT 6 TMTMTT 6 TMTTTT 6 TTMMTT output YES NO YES NO YES 题目大意 ...
- 小刀娱乐网:引流的四个思维分析,如何更好发展网站!
1.定位思维,清晰定位个人品牌.粉丝群体.问题定位 定位思维首先是不触碰法律的前提,小编看很多娱乐网.资源网都触碰了法律的边缘,比如发布一些黄色,赌博,类型引流,发一些外挂肯定啊,这些大众都知道好引流 ...
- 用系统架构中的系统思维分析一个咖啡厅系统
此文是对<系统架构>中第2章系统思维的笔记,前前后后看了很多遍,为了达到活学活用,尝试用系统思维分析一个生动的现实生活中的案例,这样有助于更深刻的理解及现实的建模能力.现分享给大家一起讨论 ...
- Codeforces1509 B. TMT Document(思维)
题意: 解法: 因为我们只需要考虑是否合法,不需要考虑具体如何分配, 那么就不要想太复杂,只需要判断什么情况下不合法即可.不合法的情况: 对于任意的[1,i],一定满足cnt[T]<cnt[M] ...
- Liferay 控制面板在指定文件夹添加Basic Document流程分析
结论: 当在Liferay中用管理员登录,导航到控制面板->Documents and Media ,在指定文件夹下添加BasicDocument时,服务器做了如下的事情: (1) 在DLFIL ...
最新文章
- java培训机构如何选择适合自己的
- 学python用什么书-python有什么好的书籍
- 用c语言 简单实现JAVA里面的ArryList 功能,实现内存自动扩展
- python抓取网页信息_python抓取网页中的动态数据
- 矩阵论复习-过渡矩阵、生成子空间、表示矩阵、度量矩阵、酉空间、内积
- iMeta教程 | 使用PMS分析微生物组(图文+视频)
- Magento模型集合addFieldToFilter常用过滤条件
- spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
- 解决使用pip无法安装rasa与无限依赖告警:INFO: This is taking longer than usual. You might need to provide the....
- TypeScript学习笔记(二):基本数据类型及数据转换
- PHP程序员40点陋习
- 医院耗材管理系统开发_14
- word2016 上次启动时失败以安全模式能够解决该问题【office专业版】
- linux mysql 命令行查询 乱码_mysql命令提示行连接乱码的解决
- 卸载 kubernetes
- 一周小结:webgis—北京核酸检测—demo
- linux bash:command,学习使用Linux Command line(Git Bash)
- YOLOv7半自动标注
- 【源码】iOS指纹解锁Touch ID的开发
- (8)打鸡儿教你Vue.js