这题一年前就做过,当时刚开始刷leetcode,提交了几十次过不去,就放那没管了。今天剑指offer又遇到这题,终于做出来了,用的dp。 1 class Solution { 2 public: 3 bool isMatch(string s, string p) { 4 int s_len=s.s ...
分类:
其他好文 时间:
2020-02-11 09:36:16
阅读次数:
54
高维前缀和 众所周知, FWT可以轻松的算出高维前缀和 本题题解: 考虑状压$dp$(~~题目都说了$2^M$那就状压了~~)因为$\%c[i]$和$\&a[i 1]$这两个操作都和具体的数值有关 $F[i][j]$表示枚举到$i$, 第$i$个数填$j$有多少种方案 $$ F[i][j] = \b ...
分类:
其他好文 时间:
2020-02-11 00:17:26
阅读次数:
70
题解看这个https://blog.csdn.net/u013534123/article/details/78926568 状压的debug真的很烦 #include<bits/stdc++.h> using namespace std; int mask[5][5],n,a[5],dp[1010 ...
分类:
其他好文 时间:
2020-02-10 22:37:39
阅读次数:
71
Floyd算法为什么把k放在最外层? - 知乎 https://www.zhihu.com/question/30955032高票答案: 简单地总结一下:K没放在最外面一定是错的,但是在某些数据比较水的情况下可能会ACfloyd的本质是DP,K表示的是的DP的阶段,经过这个点松弛或者不经过这个点,如 ...
分类:
其他好文 时间:
2020-02-10 22:36:18
阅读次数:
133
题目背景 缩点+DP 题目描述 给定一个 n 个点 m 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。 输入格式 第一行两个正整数 n,m 第二行 n 个整数,依次代表点权 第三至 m ...
分类:
其他好文 时间:
2020-02-10 13:23:36
阅读次数:
59
0边把图分成两个部分,这两个部分的路径之间,mex起码为1,都对答案产生1的贡献。 然后1边接在0边旁边,把图分成了更小的两个部分(0,1的两端),和一些不会再产生新的贡献的区域,这两个更小的部分路径之间,mex起码为2,都对答案又产生了1的贡献。(他们在刚刚算mex起码为1的时候,已经贡献过1了, ...
分类:
其他好文 时间:
2020-02-10 11:43:40
阅读次数:
48
"题面" 题解 这个数据范围, 直接 DP 一下就完了 看是这个人新开一个圈还是加到别的圈里去 注意, 新开一个圈最少需要三个人 设 $f[i][j]$ 为前 $i$ 个人组成 $j$ 个圈的方案数 $$ f[i][j] = \begin{cases} f[i 1][j] (i 1)\\ f[i 3 ...
分类:
Web程序 时间:
2020-02-09 23:51:45
阅读次数:
135
从集合的角度思考DP问题 如上图展示了DP问题思考的一个简单步骤来自y总直播,“就像计算乘法一样,学会分析DP问题就像学会列竖式一样,让处理DP问题更简单”这就话让我瞬间意识到分析问题的重要性,处理DP问题不应该是想出转移过程,应该是一步步分析出来的。这篇博客记录以后做题过程中我对DP分析方法的理解 ...
分类:
其他好文 时间:
2020-02-09 22:17:54
阅读次数:
76
题目描述 题解 考虑啥限制都没有的话,也就是在一个序列上且没有 $l$ 的限制,那就是 $dp$ 然后斜率优化 $f_i$ 表示 $i$ 的答案, $f_i=min(f_j+(d_i-d_j)p_i+q_i)$ ,其中 $d_i$ 表示 $s$ 的前缀和,可以化成斜率优化的式子 由于斜率不递增所以在 ...
分类:
其他好文 时间:
2020-02-09 22:04:23
阅读次数:
73
Link #include <bits/stdc++.h> # define LL long using namespace std; const int mod=100000000; int M, N; int grid[12]; LL dp[12][1<<12]; LL dfs(int r, i ...
分类:
其他好文 时间:
2020-02-09 22:01:19
阅读次数:
56