摘要:
link 出题人是卡常狗。靠。 首先题目中的方向是八方向,即包括右上右下左上左下(不然发现样例一过不去),由于需要判断字符串是否相等,想到使用哈希来加速这一过程。但是呢要求的字符串长度又很长,长宽不等导致无法利用循环的性质来砍掉无用部分(事实上我连这部分都没写出来,呜呜呜)。正解是倍增哈希,我还是第 阅读全文
摘要:
link 最大密度子图的板子,虽然感觉这种一辈子只见得到一回的题目应该不存在啥模板的说法(没有应用的板子是没有灵魂哒)。 首先那个分数的柿子让人想到了01分数规划,然后套那玩意的板子。在check的过程中遇到经典问题:边有正权,点有负权,选择权值最大的子图。还是那样,把边抽象成点直接跑最大权闭合子图 阅读全文
摘要:
link 先说我并没有完全搞懂这道题,我只能写一下我从这道题中学到了什么。 题面有错,严重的错误。原题目说的是一个数只能被放在之前所有数的最前面或者所有数的最后面,毕竟考虑到在两个数之间再写下新的数始终是困难的。后面统计答案的部分不管,我并没有完全理解,但前面计算LIS的部分提供了一个重要思想。对于 阅读全文
摘要:
link 实在惭愧,我已经不会写Tarjan了,很久之前学过但到现在已经忘得一干二净了。 其实割点割边和强连通分量的思想都是基于比较dfn和low值(废话Tarjan算法不就是在求这个吗)。而low的定义就十分关键了,在我看来,low的定义是一个点通过不多于一条非树边且不到达自己父亲的前提下能到达的 阅读全文
摘要:
link 首先从简单的问题开始思考。假如我们只有两个点,应该如何构造方案呢?显然,当两个点有连边时,我们不需要做任何事情(当然两个点各操作一次也是可以的但没有必要);而两个点没有连边时,只需要选择其中任意一个进行一次操作即可。从这里得出了一个重要的结论,由于操作同一个点两次之后会导致某些对点的连接状 阅读全文
摘要:
link 树的直径的好题。 首先可以想到把相邻的颜色相同的点合并起来,于是就得到了一棵任意一条边两端颜色都不相同的新树,这样一来操作的过程就是先找一个点,然后把它变成相反的颜色,于是所有和这个点相邻的点全部被这个点收购了;然后这个大点再向四周扩展,于是就这么一层一层地,于是发现从一个点开始操作的步数 阅读全文