A10953 | Rap God
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Rick is in love with Unity. But Mr. Meeseeks also love Unity, so Rick and Mr. Meeseeks are "love rivals".
Unity loves rap, so it decided that they have to compete in a rap game (battle) in order to choose the best. Rick is too nerds, so instead he's gonna make his verse with running his original algorithm on lyrics "Rap God" song.
His algorithm is a little bit complicated. He's made a tree with $n$ vertices numbered from $1$ to $n$ and there's a lowercase english letter written on each edge. He denotes $str(a,b)$ to be the string made by writing characters on edges on the shortest path from $a$ to $b$ one by one (a string of length equal to distance of $a$ to $b$ ). Note that $str(a,b)$ is reverse of $str(b,a)$ and $str(a,a)$ is empty.
In order to make the best verse he can, he needs to answer some queries, but he's not a computer scientist and is not able to answer those queries, so he asked you to help him. Each query is characterized by two vertices $x$ and $y$ ( $x≠y$ ). Answer to this query is the number of vertices like $z$ such that $z≠x,z≠y$ and $str(x,y)$ is lexicographically larger than $str(x,z)$ .
String $x=x_{1}x_{2}...x_{|x|}$ is lexicographically larger than string $y=y_{1}y_{2}...y_{|y|}$ , if either $|x|>|y|$ and $x_{1}=y_{1},x_{2}=y_{2},...,x_{|y|}=y_{|y|}$ , or exists such number $r\ (r<|x|,r<|y|)$ , that $x_{1}=y_{1},x_{2}=y_{2},...,x_{r}=y_{r}$ and $x_{r+1}>y_{r+1}$ . Characters are compared like their ASCII codes (or alphabetic order).
Help Rick get the girl (or whatever gender Unity has).
Unity loves rap, so it decided that they have to compete in a rap game (battle) in order to choose the best. Rick is too nerds, so instead he's gonna make his verse with running his original algorithm on lyrics "Rap God" song.
His algorithm is a little bit complicated. He's made a tree with $n$ vertices numbered from $1$ to $n$ and there's a lowercase english letter written on each edge. He denotes $str(a,b)$ to be the string made by writing characters on edges on the shortest path from $a$ to $b$ one by one (a string of length equal to distance of $a$ to $b$ ). Note that $str(a,b)$ is reverse of $str(b,a)$ and $str(a,a)$ is empty.
In order to make the best verse he can, he needs to answer some queries, but he's not a computer scientist and is not able to answer those queries, so he asked you to help him. Each query is characterized by two vertices $x$ and $y$ ( $x≠y$ ). Answer to this query is the number of vertices like $z$ such that $z≠x,z≠y$ and $str(x,y)$ is lexicographically larger than $str(x,z)$ .
String $x=x_{1}x_{2}...x_{|x|}$ is lexicographically larger than string $y=y_{1}y_{2}...y_{|y|}$ , if either $|x|>|y|$ and $x_{1}=y_{1},x_{2}=y_{2},...,x_{|y|}=y_{|y|}$ , or exists such number $r\ (r<|x|,r<|y|)$ , that $x_{1}=y_{1},x_{2}=y_{2},...,x_{r}=y_{r}$ and $x_{r+1}>y_{r+1}$ . Characters are compared like their ASCII codes (or alphabetic order).
Help Rick get the girl (or whatever gender Unity has).
输入格式
The first line of input contain two integers $n$ and $q$ ( $2<=n<=20000$ , $1<=q<=20000$ ) — number of vertices in tree and number of queries respectively.
The next $n-1$ lines contain the edges. Each line contains two integers $v$ and $u$ (endpoints of the edge) followed by an English lowercase letter $c$ ( $1<=v,u<=n,v≠u$ ).
The next $q$ line contain the queries. Each line contains two integers $x$ and $y$ ( $1<=x,y<=n,x≠y$ ).
The next $n-1$ lines contain the edges. Each line contains two integers $v$ and $u$ (endpoints of the edge) followed by an English lowercase letter $c$ ( $1<=v,u<=n,v≠u$ ).
The next $q$ line contain the queries. Each line contains two integers $x$ and $y$ ( $1<=x,y<=n,x≠y$ ).
输出格式
Print the answer for each query in one line.
输入输出样例
输入 #1
4 3 4 1 t 3 2 p 1 2 s 3 2 1 3 2 1
输出 #1
0 1 1
输入 #2
8 4 4 6 p 3 7 o 7 8 p 4 5 d 1 3 o 4 3 p 3 2 e 8 6 3 7 8 1 4 3
输出 #2
6 1 3 1
Here's the tree of first sample testcase:
Here's the tree of second sample testcase:
In this test:
- $str(8,1)$ = poo
- $str(8,2)$ = poe
- $str(8,3)$ = po
- $str(8,4)$ = pop
- $str(8,5)$ = popd
- $str(8,6)$ = popp
- $str(8,7)$ = p
So, for the first query,  and for the third query  is the answer.
Here's the tree of second sample testcase:
In this test:
- $str(8,1)$ = poo
- $str(8,2)$ = poe
- $str(8,3)$ = po
- $str(8,4)$ = pop
- $str(8,5)$ = popd
- $str(8,6)$ = popp
- $str(8,7)$ = p
So, for the first query,  and for the third query  is the answer.
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted