Day1
考了个模拟赛。。。都是 hackerrank 的题。。。
https://www.hackerrank.com/contests/hourrank-26/challenges/combo-meal
https://www.hackerrank.com/contests/w35/challenges/3d-surface-area
https://www.hackerrank.com/contests/world-codesprint-12/challenges/red-knights-shortest-path/problem
https://www.hackerrank.com/contests/101hack52/challenges/construct-the-array
https://www.hackerrank.com/contests/hourrank-26/challenges/cloudy-day/problem
https://www.hackerrank.com/contests/hourrank-25/challenges/maximum-palindromes
后两题看了下,T5 是个大线段树,T6 好像是个组合数乱搞,考场上做了 T6,然后前面 T2 和 T4 两个 sb 题一个 $ N $ 和 $ M $ 写反,一个减法取膜写挂。。。
重新搞了个基本数论操作的模板( https://ideone.com/Uk17jd )。。。
晚上搞了下 kmp 的一些题。。。其实我一直觉得 kmp 这个算法没什么用,不仅难理解而且可扩展性好低呢。。。z-box 不知道比它高到哪里去了。。。( https://ivanyu.me/blog/2013/10/15/z-algorithm/ )
模板 子串查找
z-box https://ideone.com/0o7b8e
usaco - censoring
https://www.cnblogs.com/arg-53/p/9064740.html
cf494b
找一下匹配点,然后 dp。。。
noi2014 - 动物园
刚学 kmp 就知道这题,至今不知道怎么用 kmp 做。。。
用 z-box 求了一下每个点开始的和前缀的最长匹配长度,然后水了过去。。。https://ideone.com/kerxUw
Day2
讲数论,听得好凌乱。。。一直没怎么看数论,这一段时间看书好好补一下。。。
Day3
把一些简单的数论题水了一下。。。
复习了下 trie 树,ac 自动机,manacher 什么的。。。cf 上好多字符串题有时间去做一做好了。。。
luogu3805 - manacher 模板
约数和
给两个自然数 $ A $ 和 $ B $,求 $ A^{B} $ 的正约数和,$ A, B \le 5 \times 10^7 $ 。
没看懂题解在说啥,用等比数列的求和公式很感动地水了过去。
poj2115 - c looooops
http://poj.org/problem?id=2115
$ C \times x + 2^{k} \times y = B - A $
Day4
旅游。。。
Day5
早上听了下状压,水了几个题。。。
下午肝了几个线段树,GSS 什么的。
GSS 现在才做了四题,打算六月份弄完。
顺便丢一下 GSS1,GSS3 的 rank1 解。。。
https://www.cnblogs.com/arg-53/p/9043136.html
https://www.cnblogs.com/arg-53/p/9043187.html
这个非递归线段树可以在 http://codeforces.com/blog/entry/18051 了解一下。。用来处理一个单点一个区间的问题跑得飞快写起来短,但是区间修改求和什么的很难写,不如直接写递归。。。
顺便,机房的配个好慢的 hdd 还装 win10,用 vim 写点东西都卡。。。装个 ubuntu 多好啊。。
Day6
学了一些奇怪的最短路建模。。。
bzoj4152 - the captain
https://www.lydsy.com/JudgeOnline/problem.php?id=4152
把横纵坐标相邻的建一下边,丢进 dijkstra 跑一遍。
bzoj4289 - tax
https://www.lydsy.com/JudgeOnline/problem.php?id=4289
还没写。。。对每个边科学地建点然后最短路应该就好了。
Day7
复习了下左偏树,然后看了 watashi 的书上的一些字符串 dp,做了下二分平均值的套路题。
luogu3377 - 模板
https://www.luogu.org/problemnew/show/P3377
删除一个点就是把它的儿子合并。
apio2012 - dispathing
https://www.lydsy.com/JudgeOnline/problem.php?id=2809
每个节点开个大根堆,从叶子往上合并,超过预算了就一直弹出堆顶的。
Day8 - acm 欢乐赛
比赛开始 1 分钟后想完 T1 准备敲,然后发现 vimrc 还没写。。。
T1
意识流博弈论。。。
T2
。。。
T3
。。。
T4
看到标题有个 pyramid,就把那个异或的过程画了出来,发现 $ dp(l, r) = dp(l + 1, r) \oplus dp(l, r - 1) $ 。。。
T5
写不动,写不动。
T6
组合数乱搞,考虑下 ban 掉这个点对之后的有什么影响就行了。。。
比赛时 wa 了一发,第一次交以为排个序就可以使之后的点都在右下角了。我是傻逼。
T7
对于询问的两个点,如果他们间的距离是奇数,答案就是 $ 0 $ 。偶数的话,走到这两个点的正中间,那么从这个点往询问的两点形成的路径外的任何方向走,走到的点距离询问的两个点都相等。。
然而比赛时一直没调出来,赛后也没想到比赛代码错在哪里,重写了一遍就 1A 了。。。
T8
好神奇的题。。。
从 $ 1 $ 开始,通过 $ \times 10 $ 和 $ + 1 $ 两个操作可以构造出任何数并算出位数和,当然 要保证 $ \times 10 $ 的操作在 $ + 1 $ 前进行。把这些状态在模 $ K $ 意义下抽象成点建图,连边时边权为 $ \times 10 $ 或 $ + 1 $ 对位数和的增加量 $ 0 $ 或 $ 1 $ 。题解是跑一遍最短路,但是本题边权只为 $ 0 $ 或 $ 1 $ ,通过双向队列维护一下可以使队列内的状态步数单调不降,可以代替堆,削掉一个 $ \log {K} $ 。
代码非常短。。。
感觉比赛能不出原题就好了。。。或者别把题目名称照搬过来啊。。。