02 2016 档案

摘要:题目链接:http://codeforces.com/problemset/problem/633/G 大意是一棵树两种操作,第一种是某一节点子树所有值+v,第二种问子树中节点模m出现了多少种m以内的质数。 第一种操作非常熟悉了,把每个节点dfs过程中的pre和post做出来,对序列做线段树。维护取 阅读全文
posted @ 2016-02-29 23:36 活在夢裡 阅读(378) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/633/C 大意就是给个字典和一个字符串,求一个用字典中的单词恰好构成字符串的匹配。 比赛的时候是用AC自动机写的,就是对于trie中每一个节点,判断是否为终结点,以及当前字符所在位置p减去trie中这个节点 阅读全文
posted @ 2016-02-29 23:28 活在夢裡 阅读(277) 评论(0) 推荐(0)
摘要:大意是有一排石子,每一堆有a[i]个,目标状态每一堆有b[i]个,每一步可以从一堆中取出一个石子转移到相邻的一个,其中1和n也算相邻也即环形。问最少步数。 比赛的时候写了个按照步数贪心的做法,FST了,当时想的贪心是从1到n/2枚举步数,for每一个需要石子的堆i,从(i+d)%n与(i-d)%n中 阅读全文
posted @ 2016-02-29 23:15 活在夢裡 阅读(254) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/609/E 大致就是有一棵树,对于每一条边,询问包含这条边,最小的一个生成树的权值。 做法就是先求一次最小生成树,标记最小生成树上的边,对于这些边,直接就是原始最小生成树。否则必然可以在去掉u到v路径上最长边 阅读全文
posted @ 2016-02-02 20:34 活在夢裡 阅读(383) 评论(0) 推荐(0)
摘要:大意是有n段路,每一段路有个值a,通过每一端路需要1s,如果通过这一段路时刻t为a的倍数,则需要等待1s再走,也就是需要2s通过。 比较头疼的就是相邻两个数之间会因为数字不同制约,一开始想a的范围是2-6,处理这几个数字互相之间的关系,还是想岔了。 正解应当是开60个线段树,因为2-6的LCM是60 阅读全文
posted @ 2016-02-02 19:55 活在夢裡 阅读(412) 评论(0) 推荐(0)
摘要:无意看到的LeetCode新题,不算太简单,大意是给一个数组,询问多少区间和在某个[L,R]之内。首先做出前缀和,将问题转为数组中多少A[j]-A[i] (j>i)在范围内。 有一种基于归并排序的做法,在每次归并完左右两个子区间后,当前区间两部分分别都已经排序完毕,基于有序这一点,扫描后半段区间,对 阅读全文
posted @ 2016-02-02 00:45 活在夢裡 阅读(1840) 评论(0) 推荐(1)