集训。。。

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/

模板 子串查找

https://loj.ac/problem/103

kmp https://ideone.com/EhXKqq

哈希 https://ideone.com/boHJXe

z-box https://ideone.com/0o7b8e

usaco - censoring

https://www.cnblogs.com/arg-53/p/9064740.html

cf494b

找一下匹配点,然后 dp。。。

https://ideone.com/klW7Mm

noi2014 - 动物园

刚学 kmp 就知道这题,至今不知道怎么用 kmp 做。。。

用 z-box 求了一下每个点开始的和前缀的最长匹配长度,然后水了过去。。。https://ideone.com/kerxUw

Day2

讲数论,听得好凌乱。。。一直没怎么看数论,这一段时间看书好好补一下。。。

Day3

把一些简单的数论题水了一下。。。

复习了下 trie 树,ac 自动机,manacher 什么的。。。cf 上好多字符串题有时间去做一做好了。。。

luogu3805 - manacher 模板

https://ideone.com/JxFXX9

约数和

给两个自然数 $ A $ 和 $ B $,求 $ A^{B} $ 的正约数和,$ A, B \le 5 \times 10^7 $ 。

没看懂题解在说啥,用等比数列的求和公式很感动地水了过去。

https://ideone.com/ODM5Jr

poj2115 - c looooops

http://poj.org/problem?id=2115

$ C \times x + 2^{k} \times y = B - A $

https://ideone.com/m7EKwX

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 跑一遍。

https://ideone.com/N963wK

bzoj4289 - tax

https://www.lydsy.com/JudgeOnline/problem.php?id=4289

还没写。。。对每个边科学地建点然后最短路应该就好了。

Day7

复习了下左偏树,然后看了 watashi 的书上的一些字符串 dp,做了下二分平均值的套路题。

luogu3377 - 模板

https://www.luogu.org/problemnew/show/P3377

删除一个点就是把它的儿子合并。

https://ideone.com/HrjWwv

apio2012 - dispathing

https://www.lydsy.com/JudgeOnline/problem.php?id=2809

每个节点开个大根堆,从叶子往上合并,超过预算了就一直弹出堆顶的。

https://ideone.com/0YiMTb

Day8 - acm 欢乐赛

比赛开始 1 分钟后想完 T1 准备敲,然后发现 vimrc 还没写。。。

T1

意识流博弈论。。。

https://ideone.com/JvEagR

T2

。。。

https://ideone.com/ki9gIF

T3

。。。

https://ideone.com/ZSpl0p

T4

看到标题有个 pyramid,就把那个异或的过程画了出来,发现 $ dp(l, r) = dp(l + 1, r) \oplus dp(l, r - 1) $ 。。。

https://ideone.com/wbQbHY

T5

写不动,写不动。

T6

组合数乱搞,考虑下 ban 掉这个点对之后的有什么影响就行了。。。

比赛时 wa 了一发,第一次交以为排个序就可以使之后的点都在右下角了。我是傻逼。

https://ideone.com/OS66gA

T7

对于询问的两个点,如果他们间的距离是奇数,答案就是 $ 0 $ 。偶数的话,走到这两个点的正中间,那么从这个点往询问的两点形成的路径外的任何方向走,走到的点距离询问的两个点都相等。。

然而比赛时一直没调出来,赛后也没想到比赛代码错在哪里,重写了一遍就 1A 了。。。

https://ideone.com/DXcisW

T8

好神奇的题。。。

从 $ 1 $ 开始,通过 $ \times 10 $ 和 $ + 1 $ 两个操作可以构造出任何数并算出位数和,当然 要保证 $ \times 10 $ 的操作在 $ + 1 $ 前进行。把这些状态在模 $ K $ 意义下抽象成点建图,连边时边权为 $ \times 10 $ 或 $ + 1 $ 对位数和的增加量 $ 0 $ 或 $ 1 $ 。题解是跑一遍最短路,但是本题边权只为 $ 0 $ 或 $ 1 $ ,通过双向队列维护一下可以使队列内的状态步数单调不降,可以代替堆,削掉一个 $ \log {K} $ 。

代码非常短。。。

https://ideone.com/6lBu1R

感觉比赛能不出原题就好了。。。或者别把题目名称照搬过来啊。。。

猜你喜欢

转载自www.cnblogs.com/arg-53/p/9113218.html