最近太忙

博主表示最近非常忙碌,因忙碌导致博客很久未更新。
最近太忙了,简直是太忙了,所以博客很久没有更新了.
我们来分析这个问题,并给出完整的解决方案。 --- ### ✅ 问题理解 松雅每天要么在 **深圳(S)**,要么在 **天津(T)**。她在晚上飞行,所以不可能同一天出现在两地。 我们需要判断:在过去 `n` 天中,她从 **深圳飞往天津** 的次数是否 **多于** 从 **天津飞往深圳** 的次数。 注意: - 字符串表示的是每天所在的城市。 - 相邻两天城市不同 → 表示有一次飞行。 - 如果从 `'S'` 变成 `'T'` → 是 **深圳→天津** 的航班(我们记为 `ST_to_T`) - 如果从 `'T'` 变成 `'S'` → 是 **天津→深圳** 的航班(我们记为 `T_to_S`) 我们要判断:**深圳→天津的次数 > 天津→深圳的次数?** 如果成立,输出 `"YES"`,否则输出 `"NO"`。 --- ### 🔍 关键观察 - 飞行只发生在相邻天城市不同的时候。 - 我们只需要遍历字符串,统计两种类型的转变次数。 - 比较两者即可。 --- ### ✅ 示例分析 以样例输入为例: #### 测试用例1: `4 TSST` 字符串是 `TSST`,索引0到3: - T → S:T 到 S(天津→深圳) → count_TS += 1 - S → S:无飞行 - S → T:深圳→天津 → count_ST += 1 结果: - 深圳→天津:1 次 - 天津→深圳:1 次 → 不是更多 → 输出 `NO` #### 测试用例2: `2 ST` - S → T:深圳→天津 → 1 次 - 其他方向:0 次 → 1 > 0 → 输出 `YES` #### 测试用例3: `10 TTTTTTTTTT` - 一直没动 → 0 次飞行 → 两边都是 0 → 0 > 0? 否 → `NO` #### 测试用例4: `10 SSTTSTTSTT` 我们来走一遍: ``` S S T T S T T S T T ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↓ SS: no ST: S→T → +1 (深圳→天津) TT: no TS: T→S → +1 (天津→深圳) ST: S→T → +1 (深→天) TT: no TS: T→S → +1 ST: S→T → +1 TT: no ``` 详细变化点: - idx0: S → S → 无 - idx1: S → T → ST 航班 +1 → now: st=1, ts=0 - idx2: T → T → 无 - idx3: T → S → ts +1 → st=1, ts=1 - idx4: S → T → st+1 → st=2, ts=1 - idx5: T → T → 无 - idx6: T → S → ts+1 → st=2, ts=2 - idx7: S → T → st+1 → st=3, ts=2 - idx8: T → T → 无 最终:st=3, ts=2 → 3 > 2 → YES --- ### ✅ Python 实现代码 ```python def solve(): t = int(input()) for _ in range(t): line = input().split() n = int(line[0]) s = line[1].strip() # 统计两种飞行次数 shenzhen_to_tianjin = 0 # S -> T tianjin_to_shenzhen = 0 # T -> S for i in range(n - 1): if s[i] == 'S' and s[i+1] == 'T': shenzhen_to_tianjin += 1 elif s[i] == 'T' and s[i+1] == 'S': tianjin_to_shenzhen += 1 if shenzhen_to_tianjin > tianjin_to_shenzhen: print("YES") else: print("NO") # 调用函数 solve() ``` --- ### 🧠 代码解释 - `input().split()` 将每行拆分为整数 `n` 和字符串 `s` - 遍历字符串相邻字符对 `(i, i+1)` - 判断是否有状态转移: - `'S' → 'T'`:深圳飞天津 - `'T' → 'S'`:天津飞深圳 - 最后比较两个计数器 - 输出对应结果 时间复杂度:O(n) 每个测试用例 空间复杂度:O(1) ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值