2018湖南多校赛
文章平均质量分 86
alpc_qleonardo
这个作者很懒,什么都没留下…
展开
-
CSU 2037 Mars(后缀自动机+DFS)
大致题意,给你一个01字符串,然后再给你这个字符串的一个子串,问你在子串中至少修改多少个字符,才能够使得修改之后的串在原串中不出现。 现场拿到题就知道一定是SAM后缀自动机。因为要求是某一个串在原串中不出现,也就是某个串不是原串的子串,所以我们显然要知道做到判定串是否是子串。纵观比较高效的数据结构,也就只有后缀自动机了。我们首先对原串建立自动机,然后利用是01串的性质,对照给出串的每一位,分别dfs每一位是与原来相同,还是不同,相同不需要代价,不相同则需要代价。枚举了下一位的数字就可以顺着自动原创 2018-04-08 20:38:18 · 477 阅读 · 0 评论 -
CSU 2033 New Country Division(线性基+思维)
大致题意:给你一个城市网络,每条路有权值,现在让你把这些城市分成两个部分,使得分开之后,这两个部分直接的所有连边的异或和最大,但要保证1和n分别在两个不同的部分里面。 看到题目,感觉很像一个网络流最小割类似的模型,相当于是找一个 异或和最大割。这东西听起来高大上,其实好像也并没有这样一个东西,想了几种增广路始终无法保证正确性。然而这题是可以转化为线性基问题的。 观察到一个点要么在1所在的集合,要么在n所在的集合。我们不妨一开始让除了n以外的所有点都在1所在的集合。计算出异或和原创 2018-04-10 10:04:50 · 356 阅读 · 0 评论 -
CSU 2023 Bless You Autocorrect! (字典树+BFS)
大致题意,给出单词表,然后让你拼写一个单词。可以支持手动输入字符,手动删除字符和摁下空格键键入单词表中与当前输入串前缀相同的第一个单词。三种操作的代价都是1,现在给出一些单词,对于每个单词输出打出单词的最小代价。 首先,字典树是肯定可以想到的,当时想法是对于每一个节点弄一个first节点,指向与当前点表示串前缀相同的第一个单词的下一个字母的节点,但是这样子处理代价的时候不好统计。其实正解已经很近了。对于每一个节点,考虑连接一条边指向经过当前表示串前缀相同的第一个单词的末端节点,并且建立一个f原创 2018-04-03 15:03:23 · 509 阅读 · 2 评论 -
CSU 2022/2015 Artwork(并查集+逆向思维)
大致题意,每次可以把两个同行或者同列的点之间涂黑,然后每进行一次操作统计一次图的连通分量。 一道套路题,之前貌似做过两次。直接考虑逆向思维,从最后的分隔状态开始,每次往前减少一个操作,判断连通分量的减少情况。用权值表示每个地点被覆盖的次数,一旦出现覆盖次数变为0,即要进行更新,更新时首先增加一个连通分量,表示其本身,其次在合并四个方向,每进行一次合并减少一个连通分量。具体见代码(现场代码略丑):原创 2018-04-03 22:45:06 · 744 阅读 · 0 评论 -
CSU 2020 Card Hand Sorting(暴力枚举+LIS DP)
大致题意:有n张扑克牌,大小规则有所不同,2是最小的,没有小丑,其他不变。现在按照顺序给出这n张牌,要求你进行排序,使得同花色的排连续的排在一起,然后每个花色内部要求递增或者递减。每次你可以把某一张牌移动到某两张牌中间或者最前和最后面。问最少的移动次数。 首先,还是回顾LIS相关的应用。显然就是求最小交换次数使得一个序列不上升或者不下降。所有同样也可以考虑用LIS来解决这道题。但考虑到有花色的限制,必须先去解决花色的问题。这里由于数据范围比较的小,可以考虑暴力的枚举最后的排列方式。由于花色只原创 2018-04-05 23:54:09 · 280 阅读 · 0 评论 -
CSU 2017 Highest Tower(思维+构图)
大致题意:给你很多个矩形,然后宽小的矩形可以垒在大的矩形上,但是这个一定是严格的,矩形可以旋转。问最多可以把矩形垒多高。 其他的思路就不说了,大部分都是不对的,正解非常的巧妙。对于每一个长度,我把它抽象成为一个点,对于一个矩形,就有两个点,用边把这两个点连接起来。要求能够垒在一起,那么说明每一个长度都最多只能当作宽一次。然后,我们再人为的定义,如果存在边a->b,那么代表a边被当作了宽,即出度就是当作宽的个数。对于任意一条边,肯定存在一个入度和出度,总共有n矩形,所以在不存在正方形的情况下就原创 2018-04-06 13:45:11 · 448 阅读 · 0 评论 -
HDU 6393 2018HDU多校赛 第七场 Traffic Network in Numazu(树链剖分 + 树状数组)
大致题意:给你一个含有一个环的树,即n个点n条边的图,然后动态修改每一条边的边权,同时动态询问任意两点之间的最短距离。非常裸的一道图论+数据结构题。首先,我们考虑如果没有环的情况下,那就是一个显然的树链剖分+线段树/树状数组的题目,但是现在有一个环就变得不一样了。但是这种题目显然是要把树变成环的,于是我选择环上的一条边剪断,选择环上任意一个点为根,这样就可以构成一棵树了。具体来说,我把树分为两个部分,一个是环上的点,一个是非环上的点。对于环上的点,我们维护一个树状数组0,表示环内各个点不绕圈的情况下相互到达原创 2018-08-15 08:25:43 · 402 阅读 · 0 评论