- 博客(4)
- 收藏
- 关注
原创 XVII Open Cup named after E.V. Pankratiev. Eastern Grand Prix. Problem G. Gmoogle 模拟、字符串处理、文本搜索
题意:要求模拟一个搜索系统,给出文本,然后每次查询几个单词要求输出所以出现查询单词的句子。模拟、字符串处理、文本搜索先把文本预处理成一个一个单独的句子,并标号0、1、2......,并且用map<string, vector<int>>建立单词到句子的映射。然后对于每个单独查询的每个单词都会有一个集合,然后对这些集合取一个交集就是答案了。这里用到的求交集的方法是 是用一个map<int, int> check表示这些集合里每个句子出现的次数,最后遍历一遍check,出现次数为查询的单词的个数的句子
2017-12-08 14:25:01 869
原创 XVII Open Cup named after E.V. Pankratiev. Eastern Grand Prix. Problem F. Buddy Numbers 贪心、数论、构造
题意:给出一个n,问能不能把1~n这n个数排出一个序列,使得任意相邻的两个数,一个数是另一个数的因数。贪心、数论、构造1 12 2 13 3 1 24 3 1 2 4然后5的时候,也就是当1~n里素数的个数大于2的时候就不好办了,此外这里n == 6的时候还是可以构造出来了, 3 6 2 4 1 5.所以对于n == 1、2、3、4、6的时候是有答案的,直接输出即可,其它的时候都构造不出来,为-1。
2017-12-08 14:02:36 1058
原创 Codeforces Round #447 (Div. 2) D. Ralph And His Tour in Binary Country 二叉树、预处理、二分、数据结构
题意:给出一颗二叉树,每条边有一个权值,q个询问,每次询问以x为起点,到yi点,求max(H - xyi, 0)求和。二叉树、预处理、二分、数据结构先在每个节点维护 该点 到 以其为根的点 的距离,且排序(笔者用的c++的sort所以比归并排序多出一个logn),并维护n个前缀和。这里时间复杂度 O(nlognlogn) 空间复杂度 O(nlogn)。然后查询的时候,对于x点进行二分可以找出答案,然后向上回溯,且维护一个变量sumlx为其祖先节点到x的距离。查找该节点所在的链的隔壁的子树,进行二分
2017-12-08 13:34:43 578
原创 Codeforces Round #449 (Div. 2) Codeforces Round #449 (Div. 2) 二叉树、回溯、分类讨论
题意:用一个前缀s1,中间部分s2,后缀s3,fi = s1 + fi-1 + s2 + fi-1 + s3来构造字符串 fi,q个询问(n, k),每次询问第n个字符串的第k个字符。二叉树、回溯、分类讨论这样构造出的字符串相当于一颗二叉树,从叶子开始回溯,回溯的时候根据k的情况,判断是从左子树向根回溯,还是从右子树向根回溯。有点想主席树的一些操作,先预处理出fi的长度,然后每次对于k和当前fi的情况,回溯到i-1,回溯的时候 如果是左边 k -= 34(前缀),如果是右边 k -= 34(前缀)
2017-12-03 15:34:45 473
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人