- 博客(23)
- 收藏
- 关注
原创 隔板法(不定方程|不等式)
对于 :$x_{1} + x_{2} + ... + x_{n} = m$ ,若对于任意x1,x2,..,都大于等于0,求每个x可以各取什么满足等式的方案数,可以用隔板法(但要先映射成解大于0,因为隔板板里板子中间至少要有1个小球)所以原等式变成:y1 + y2 + .. + yn = m + n,然后任意y大于0,两个方程的解是等价的,就把前面的转换成后面的,然后对于后面的可以用隔板法。x1 + x2 + ... + xn
2023-09-08 13:31:48
588
1
原创 trie树,根节点应该从0还是1开始?
根节点从0开始的话,有些trie树中可能不存在的边,然后你遍历下去了,因为不存在,所以没有赋过值,所以那个son[p][u]=0,然后p=son[p][u],结果p又变成0了,就相当于又继续从根节点开始遍历;所以也许从1开始是比较好的。写这题的时候发现的;
2023-07-20 15:24:19
83
1
原创 边权不一样的最短路(且用bfs的情况)
因为当前蓝.和红*都为1,放在优先队列中不一定谁前谁后,此时若先蓝.,用蓝.去更新红.的话,红.距离为2,然后此时vis[红.] = 1, 之后再用蓝*去更新时,由于vis=1,就不去更新了,然后实际上,用蓝*去更新,红.为1,即距离更小。但这题在于,最后一步不一定一样,若遇到弹射器,可以为0,若是道路,则为1,即使当前为最优解,但因为最后一步不一样,所以不能保证第一次遇到即为最优解,所以不能用vis。总结:最后一步都一样,则可以优先队列+vis;若不一样,则不用vis,遇到更小的时,就更新成小的。
2023-07-13 10:57:07
150
1
原创 Acwing 148.合并果子 和 282.石子合并的区别
148.合并果子:可以选不相邻的两堆,可以贪心(哈夫曼树)282.石子合并:必须选择相邻的两堆,要区间dp
2023-07-06 09:20:02
84
1
原创 八数码和跳蚂蚱
而蚂蚱从别的盘子跳到空盘上的四种方式可以换个思考角度,相当于空盘和蚂蚱跳过来的空盘进行交换的四种方式,前者主角是蚂蚱,而后者主角是空盘,而空盘只有一个,可以直接盯死空盘,简化问题,你若要从蚂蚱分析会很麻烦,而且string的find函数可以直接找到空盘,特别方便。八数码里的x相当于跳蚂蚱里的空盘。
2023-04-20 19:52:41
69
原创 开放寻址法哈希&字符串哈希
把字符串看作是一个P进制的数,每一位上的字母表示P进制上的每一位数字把字符串的哈希值算出来后(因为该值很大,所以还要模上一个Q)p[0]=1;i<=n;i++)//p[i]=P的i次方;//这里的str[i] 是对应的ASCII码值;
2023-04-20 17:21:44
160
原创 区间Dp(msf)
一般来说:第一重循环:循环区间长度第二重循环:循环左端点(有了左端点和区间长度,右端点就定下来了,所以整个区间也确定了)第三重循环:根据题意确定,一般是循环决策,就是状态计算的转移量
2023-04-07 19:39:27
60
原创 关于DP(抽象为背包问题的DP)
背包问题优化空间之后,循环顺序是一定不能变的第一重循环:一定是循环物品第二重循环:一定是循环体积第三重循环:一定是循环决策(子集)当然了这里提到的物品、体积都是背包问题模板中的说法,做题目时,要抽象出来"物品"、"体积”最后欢迎大家补充或者指正!!!
2023-04-04 19:06:20
100
原创 trie(字典树)
我一开始想当然的把p以为是树的层数,然后拿去遍历,就很离谱,所以trie应该不能按层遍历把。也就是p就是idx ,代表的是第几个点而不是层数(区别于bfs和dfs里的那个树)一开始tr[p][u]=++idx ,后来又把tr[p][u]赋值给p。不是树的第几层数,而是第几个节点(idx)也就是tr[p][2]表示第p个节点的数据。
2023-03-26 17:28:43
58
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人