「 HDU P2089 」 不要62】的更多相关文章

和 HDOJ 3555 一样啊,只不过需要多判断个 ‘4’ 我有写 3555 直接去看那篇吧 这里只放代码 #include <iostream> #include <cstring> #include <cstdio> using namespace std; ], dp[][]; inline int dfs(int l, bool flag, bool limit) { ) ; if(!limit && dp[l][flag]) return dp…
\(\mathcal{Description}\)   Link.(HDU 裂开了先放个私链 awa.)   在一个 \(n\times n\) 的方格图中,格子 \((i,j)\) 有权值 \(w_{i,j}\),现可将一些不相邻的格子染黑,并保证白格子在四联通意义下存在哈密顿回路,方案的价值为染色格子权值之和.求方案的最大价值.   \(n\le10\),数据组数 \(T\le30\). \(\mathcal{Solution}\)   Emmm...插头 DP 写得太少了,这题还算比较常规…
\(\mathcal{Description}\)   link.   给定一个 \(n\) 个结点 \(m\) 条边的无向图,\(q\) 次操作每次随机选出一条边.问 \(q\) 条边去重后构成生成树的方案总数,对 \(p\) 取模. \(\mathcal{Solution}\)   首先求出 \(n-1\) 条边构成生成树的方案数,显然矩阵树定理.   接着,令 \(f(i,j)\) 表示操作 \(i\) 次,去重后有 \(j\) 条边的方案数.那么有: \[f(i,j)=jf(i-1,j)…
题目链接 Mirror and Light 题意 一条直线代表镜子,一个入射光线上的点,一个反射光线上的点,求反射点.(都在一个二维平面内) 题解 找出入射光线关于镜子直线的对称点,然后和反射光线连边,与镜子的交点即是所求点. 用这题来测测板子.然后wa了一下,因为没注意要保留3位小数.这种输出错误要多注意啦,类似最近忘记加Case #x的错误- -||. 代码 #include <cstdio> #include <cmath> #include <algorithm>…
# 题目大意 对于一个数 $x$,它的每一位数字分别是 $A_{n}A_{n-1}A_{n-2}\cdots A_{2}A_{1}$,定义其权重 $f(x)=\sum_{i=1}^{n}\left(A_i\times 2^{i-1}\right)$. 现在给定两个数 $A,B$ 求出 $[0,B]$ 中满足 $f(i)\le f(A)$ 的数的个数. # 解题思路 数位 $\text{DP}$. 我一开始设的状态是 $dp[i][j]$ 表示到第 $i$ 位,并且现在已经枚举到的数位的权重是 $…
# 解题思路 记忆化搜索 一个点可以跳到的点,取决于它现在的能量.而且有一个显而易见的性质就是一条可行路径的终点和起点的横坐标之差加上纵坐标之差肯定小于等于起点的能量. 因为跳到一个点之后,能量和之前的点就已经没有关系了,只与现在的点有关,所以不需要传递能量到下一层. 嗯,思路就是酱紫的 # 附上代码 #include <iostream> #include <cstring> #include <cstdio> using namespace std; const i…
# 题目大意 给出 $\text{T}$ 个数,求 $[1,n]$ 中含 ‘49’ 的数的个数. # 解题思路 求出不含 '49' 的数的个数,用总数减去就是答案. 数位 $DP$,用记忆化来做. 设 $dp[i][0]$ 表示 (这里按照从左往右数) 长度为 $i$ 并且最后一位不是 '4' 的数的个数. 设 $dp[i][1]$ 表示长度为 $i$ 并且最后一位是 '4' 的数的个数. 上面这两行看不懂可以先跳过去,是不是很神奇. 这样单说不好说.借助代码来说.具体的看代码里的注释. # 放…
题目大意 给出一个长度为 $n$ 的字符串 $s$ 要求你求出 $s$ 的每一个前缀在 $s$ 中出现的次数之和.$n\le 200000$. 解题思路 暴力的对每一个前缀进行一次匹配,求出出现次数后求和. 那肯定是不行的,复杂的是 $O(n\times (m+n))$ 的,不用想也知道要 TLE 那我们考虑 $KMP$ 中 $next$ 数组的性质:为每一个前缀的前缀和后缀最长的共同子串的长度. 那这不就是说如果 $next[i] = j$ 的话,那么在 $s$ 中 $1\rightarrow…
首先关于分层图思想详见2004的这个论文 https://wenku.baidu.com/view/dc57f205cc175527072208ad.html 这道题可以用状态压缩,我们对于每一把钥匙的状态只有两种,获得了或者没有获得,然后就可以用二进制方法表示,例如一共有5把钥匙,我们如果用二进制数01001表示当前状态,就意味着我们已经拥有了第一类钥匙,第四类钥匙(从右往左看),然后我们就可以把此时的状态压缩为一个int了,节省了很多的空间,具体的操作就用位运算实现. 然后就是简单粗暴的df…
\(\mathcal{Description}\)   Link.   给定一棵含有 \(n\) 个结点的树,点 \(u\) 有点权 \(w_u\),求树上非空连通块的数量,使得连通块内点权积 \(\le m\).   \(n\le2\times10^3\),\(m\le10^6\),\(w_u\in[1,m]\),数据组数 \(T\le10\). \(\mathcal{Solution}\)   很明显是点分,每次考虑跨当前分治重心 \(r\) 的所有连通块对答案的贡献.问题变为:求树上以 \…