CF-56C普及+/提高
通信
⏱ 2.0s💾 256MB
📋 题目描述
以下语法表示了公司的上下属情况:
- : . , : . , , ... , ,...
- :
例如: Alice:Bob.,Calif.,Daddy. 表明 有三个下属分别叫 , , ;
整个体系中可能出现多个人有相同的名字 。有上下级关系的同名人会相互通信。定义 “ 不舒服度 ” 为有上下级关系的同名两人组的组数。
📥 输入格式
一个字符串,只可能包好大小写字母,英文模式的句号、逗号和冒号,长度不超过 ,保证单个人名长度不超过 。每一个姓名结束处都要有一个句号,每一层结束也要有一个句号。例如 中,第一个句号是第二个姓名 结束的标记,第二个句号是 代表的层级结束的标记。
📤 输出格式
仅有一行,包含一个整数表示不舒服度。
📝 样例 1
输入
MIKE:MAX.,ARTEM:MIKE..,DMITRY:DMITRY.,DMITRY...
输出
3
📝 样例 2
输入
A:A..
输出
1
📝 样例 3
输入
A:C:C:C:C.....
输出
6
📚 来源
Problem:CF-56C
💡 题目讲解
1
理解题意
题目描述了一个公司的上下级关系,用特殊格式表示。
语法规则(用 "A:A.." 来讲):
逐字符解读:第一个 A 是上司名字,: 表示他有下属,第二个 A 是下属名字(也叫 A),第一个 . 结束下属 A,第二个 . 结束这一层。
→ 上司 A 有一个下属,名字也叫 A。不舒服度 = 1。
规则总结:
- 名字后跟
:→ 此人有下属,压栈进入其下属列表 - 名字后跟
.→ 叶子(无下属),名字结束 ,分隔同级下属- 收尾的
.→ 弹栈退出当前层级
1 / 5