随笔分类 - DP(状压)/hash
摘要:我觉得可能很多人的做法都很傻逼 这毒瘤路牌好好的把我都搞懵逼了 首先先考虑质因数分解G、L,选出的数中质因子的最小次幂和最大次幂要分别等于G、L对应质因子的次幂 可以发现L的质因子个数不会超过8个,n之内满足条件的数的个数不会超过800,考虑状压DP 当没有必选x的限制时,f[i][j][k]表示前
阅读全文
摘要:树hash啊 我的做法很垃圾,就是yy一种只有一个孩子时hash值和孩子一样的hash法 然后用重心去作为根遍历 这样有点问题,就是重心假如也是要删掉的那就gg了 那我们求tot的时候删掉的点就不管直接设为0,求重心的时候也不管这些删掉的点就可以了 其实 先把新的树建出来不好吗
阅读全文
摘要:第二次在bzoj跑进前十竟然是因为在UOJ卡常致死 首先这个题其实就是一个无限背包 一般做法是同余最短路,就是bzoj2118: 墨墨的等式可以拿到30分的好成绩 背包是个卷积就分治FFT优化那么下面20也没问题了 官方做法是大力bitset优化背包并且嘲讽了一波这个做法 再往后需要一个性质参见鏼爷
阅读全文
摘要:写代码天天出这些sb错误我真是服了,模版都写挂 AC机+高斯不难想到,但是复杂度太高了 发现有很多非结束点到达的概率也算了,好像很没有必要可以减少 然而怎么减少就不是我会的问题了 先假设一个人赢了以后还继续抛硬币 设pi表示i串被第一个抛出的概率,这就是答案 pn+1表示一直抛都抛不出的概率 假设现
阅读全文
摘要:不难想到前缀和后按位hash,其实就是当成一个二进制数嘛 有hash的奇技淫巧,不%不知道... 第一次在bzoj跑到前十真是感天动地 神仙请屏蔽自带巨大常数的蒟蒻
阅读全文
摘要:hash表的技能点没有点。。。 作为一名在竞赛室苟延残喘的陪练有点说不过去吧。。。 需要注意的是如果要hash里面断链要考虑头和尾
阅读全文
摘要:ORZ 下次做再写吧 注意hash的base不用太大不然容易挂
阅读全文
摘要:又是被锤烂的一天,特别是xgc,天天踩爆我还在我身边吹比,你们去看看他的blog就知道了(埋头苦干) 这道题应该这样来考虑,每次加入一个点,然后去前面k个点进行连边 需要考虑的是这个点连出多条边时,顺序不同但是本质相同的问题 我们需要强制对于每个本质不同的方案只被某一种顺序产生贡献一次 改变枚举顺序
阅读全文
摘要:觉得难度大可以先去做做poj1737 然后就成套路了 设f,g,h分别为点集联通的方案,不联通的方案,总方案 补集转化,算出g就好了。可以枚举子集,令这个子集联通,其他随便 为了不重复更新,固定最小的那个点转移就好了 觉得难度小可以做做bzoj3925
阅读全文
摘要:仍然是自闭的% 首先hint给了一个提示,对于n个[0,1]之间的随机变量x1,x2,...,xn,第k小的那个的期望值是k/(n+1) 题目问的是最小生成树中最大边的e的期望,可以转化成最大边在所有边的期望排名*(m+1) 设p(i)为刚好i条边就能够把所有点连起来的概率 e(期望) = 1/m+
阅读全文
摘要:垃圾选手练dp 考虑对于一个数,能够把它表示出来也一定可以把它某些1的位变成0变成的数表示出来 那么用大的数更新小的,容易想到每次都把这个大的数的1个1的位变成0 但是这样还是会有重复的情况 比如10010被10110和11010更新,但是这两个数都会被11110更新到 那么DP再加一维,f[i][
阅读全文
摘要:好像又是神仙dp。。。。gan了一早上 首先这是个计数类问题,上DP, 对于一个最小生成树,按照kruskal是一个个联通块,枚举边小到大合成的 假如当前边是树边,那么转移应该还是枚举两个块然后合并 假如不是树边那么就在所有联通块所有非树边中任选一条 两个相邻树边之间的非树边方案应该是P(所有联通块
阅读全文
摘要:看懂题意就是成功的一半 明显状压DP dij预处理K之间的最短路 先枚举状态的话就有单调性可以省掉一维了
阅读全文
摘要:DP太恐怖恐怖怖了。。。。。 2^28肯定不兹瓷 考虑对于'X'的点不会超过8个,用二进制表示 f[i][j]表示当前填了第i个数字,状态为j的方案数 由小到大填 f[i+1][j]=f[i][j]*num[j] num表示当前这个状态,有多少位置可以填。为了保证合法,没被填的'X'周围的格子肯定不
阅读全文
摘要:临时抱佛脚之点分治(虽然听起来很强但是就是感觉哪就里是有暴点力不啊对) 对于模式字符串,我们先把它延伸到n的长度,正反hash 然后大力点分治,强行求它所管理的的子树的f值 f[i]表示和hash匹配到第i位的串数,至于为什么是二维就不说了:) sf[i]表示当前重心管理的子节点的f之和,用于合并子
阅读全文
摘要:==通配符匹配 数组开小R了2次。。
阅读全文
摘要:9.2s时间感人,没判好边界WA*2 这题看到n这么小,当然考虑一下状压 令f[i][zt]表示到达第i个点,zt就是取了和没取的状态咯 弄个li[i][j]表示假如i要->j,那么需要哪些点已经取了,这个根据题意就是斜率一样并且在两点之间 枚举状态,枚举出发和到达点,判断是否可行即可。 O(n^2
阅读全文
摘要:STL即玄学。。 一看过去就觉得要hash一下吧,顺便瞄了一眼hint那我就想mp记录hash值咯 然而修改不好搞啊。。。暴力重算肯定挂啊。。 %了一下发现原来可以用异或来离散化(感觉这个很看脸的样子) 把没有重复插入set,这样就不用穷举区间啦~ 边查找边删除不好弄啊。。这个RE了很久,s.end
阅读全文
摘要:这题状压DP。 f[i][j][k]表示前i-1吃了,后面几个吃的人的方案为j,最后吃的是第i+k个人。 然后如果j&1>0可以直接转移到f[i+1][(j>>1)][k] 其他还可以转移到f[i][j+(1<<l)][l] upd:自己没魔重写一次。。。方程和上面的微有差别,但是注意最后吃的和当前
阅读全文
摘要:把大视野的老爷机卡了10分钟。。。只是发现数组开小了,然后一手贱又开的很大。。。 这题思路很妙啊。 就是写出很多矩阵,对于一个位置的值x,右边的是3x,下边是2x,然后相邻的不能同取。%这dalao题解吧 然后状压DP(我能说一开始算错复杂度一脸蒙蔽)
阅读全文