很喜欢两句话,一句是kuangbin菊苣的,一句是不认识的菊苣的blog里的,以此激励自己
人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃!
没有人能阻止我前进的步伐,除了我自己!
很愉快的第一场被打脸爆0了,虽然有点生病,虽然题目坑,各种原因,但是主要原因还是自己弱
我也不是完全不会,每个题都基本有点思路,不是细节问题就是实现上有点问题,一旦卡了就没心思写其他的了
所以心态一定要好,题目一定要读清楚,A题就是读错题,B题就是细节实现不好,C题就是先入为主的犯二了,为啥不写几组数据测测呢我
D题就是hash实现能力不行,E题就是欧拉回路理解不够深刻,虽然后来搜过
还是写题解把
hdu 3695
给你n个短字符串,然后给你个长的压缩的字符串,AB[2D]E[7K]G比如这样的,其实是ABDDEKKKKKKKG
然后问你短字符串出现过几个(正着倒着出现都算)
AC自动机裸题,但是由于数据比较大,大的串有500W,小的串250个每个长度1000,这个复杂度非常的高啊,一直TLE
其实呢,因为只要求有多少字符串出现了,所以每次找到这个字符串之后,把val[u]=0,标记去掉,还有就是转移的时候,不要因为last[u]就转移,要改成last[u]&&val[last[u]]才转移,这样就不会T了(我还是太年轻)
AC代码:http://paste.ubuntu.net/15372974/
hdu 4284
给你100个城市,然后有h个城市是必须去,并且在那里工作的,然后每次工作需要先交Di的钱,然后可以赚Ci,然后可以去了之后先不工作,等别的地方赚了钱再回来买证工作(这里可能会坑,虽然我开头没理解错,但是写错了之后就开始怀疑是不是我理解错了)。了解了这些的话就是个状压dp啊,先folyd预处理距离,状压dp搞,但是说的容易,我细节处理太渣了就WA,然后看了强哥的代码,原来他先把每个需要工作的地方先搞到dp里,然后直接开始dp,我是从1开始dp,然后还要特判1是否要工作,然后GG,总的来说这题思路不难,还需要多练呢状压dp
AC代码:http://paste.ubuntu.net/15372977/
hdu 3183
嗯最傻逼的一个题,我居然跟着智商下降了,给你一个数字,然后删去n位,求最小的答案
需要保留m-n个数字啊,所以就在前面n+1个里面取第一个最小的,为什么呢,因为剩下m-n-1如果全取,就是最小答案,然后每次都在区间里取最小的,暴力n^2就行了
我居然如此之蠢
AC代码:http://paste.ubuntu.net/15382146/
hdu 4821
给你一个长度大于等于M*L的串,让你找到连续M个长度L的串,然后这M个串不同,有多少种方法
hash咯,首先就全部hash好,然后因为每个串长度L,所以你要间隔着L的取,然后放入map里,并且要删除M段之前的hash值,如果map.size()==M,就ans++
就是枚举0-L-1,然后这是起始点,然后枚举M段,复杂度O(ML)
AC代码:http://paste.ubuntu.net/15382397/
hdu 2894
给你个轮子,然后转,问你连续的k个0,1表示的数字,最多得到多少个不同的数字,并且输出字典许最小的
首先要想到k位,肯定能得到(1<<k)个数,(虽然不太确定,不过真的能得到这么多),然后就是想到每个值滚一下能得到另外个值,然后你要得到(1<<k)个值,肯定需要搜索,就是每次搜索这个值左移1位去掉首位然后后面一位是0或者1的状态,如果能搜到所有答案,再每个都取最后一位,然后轮转换位求最小字典序
这是爆搜的方法
代码:http://paste.ubuntu.net/15382421/
然而还有种欧拉回路的做法,因为这(1<<k)个数字最后可以围成一圈,所以就是有回路,可以欧拉回路建图,因为字典序最小,前向星建图的话可以先建末尾为1的,再建为0的,这样先搜的就是0的,并且知道是欧拉回路之后这么搜肯定能搜到正确答案并且就是最小的字典序,因为是从0开始搜的,字典序最小的话,前面k个肯定都是0,然后就是输出搜的时候记录的末尾了,主要是欧拉回路的性质和搜索的方法要掌握
AC代码:http://paste.ubuntu.net/15382424/