Codeforces Round #130 (Div. 2)
A. Dubstep
- 字符串模拟。
- string.find()用法
string str;
size_t pos = str.find("WUB"); // 返回匹配的第一个位置
size_t nxt = str.find("WUB", pos); // 返回大于等于pos的第一个匹配位置
// 如果没有找到,则返回std::string::npos
B. Solitaire
- \(dp(i,j,k)\)表示是否能到达倒三张牌分别为\(i,j,k\)的状态。
C. Police Station
- 对于每个点处理出到1和n的最短距离以及对应的方案数。
- 若把警察局放置在点\(u\),根据最短距离可以计算出经过点\(u\)的路径条数,并且每条路径上被覆盖的边为2。
- 点1、点n需要特殊判断。
D. Prizes, Prizes, more Prizes
- 模拟题意做即可。
E. Blood Cousins
- 对于每个询问\(v_i, p_i\),先求出祖先\(u\),那么询问相当于求在子树\(u\)中,深度为\(dep[v_i]\)的点数,按照dfs序继续将问题转化成区间\([l,r]\)值为\(dep[v_i]\)的个数,这个离线分块做即可。