CF861D】的更多相关文章

好久没碰字典树之类的题了,搞起来有点生疏 /* 把所有母串的后缀加入字典树中 然后再扫一次所有母串的后缀,把后缀放到字典树中查询,找到第一个访问次数为1的结点返回即可 num在计数时,同一个母串的子串只能增加一次,所以用一个时间戳time数组来标记一下 */ #include<bits/stdc++.h> using namespace std; #define maxn 100000 ]; int n,t; struct Trie{ ][],num[maxn*],time[maxn*]; i…
题目链接:http://codeforces.com/contest/861/problem/D 解题思路: 优雅的暴力. 对于输入的每一个号码,从短到长找出它的所有子串,用 vector 保存每个号码对应的所有子串,用 map 为所有子串做标记,输出答案的时候只需要按输入顺序遍历每个号码,遍历它保存在 vector 里面的所有子串,找出可行解即可. AC代码: #include <bits/stdc++.h> using namespace std; typedef long long ll…