共 18 页: 首页 上一页 8 9 10 11 12 13 14 15 16 下一页 末页

[模板]大步小步算法——BSGS算法

摘要:大步小步算法用于解决:已知A, B, C,求X使得 A^x = B (mod C) 成立。 我们令x = i m j | m = ceil(sqrt(C)), i = [1, m], j = [0, m] 那么原式就变成了: A^(i m) = A^j B 我们先枚举j,把A^j B加入哈希表 然后 阅读全文
posted @ 2017-01-25 09:33 蒟蒻konjac 阅读 (3101) 评论 (0) 编辑

[bzoj2726][SDOI2012]任务安排 ——斜率优化,动态规划,二分,代价提前计算

摘要:题解 本题的状态很容易设计: f[i] 为到第i个物件的最小代价。 但是方程不容易设计,因为有“后效性” 有两种方法解决: 1)倒过来设计动态规划,典型的,可以设计这样的方程: dp(i) = min( dp(j) + F(i) (T(i) T(j) + S) ) (i f[i] S F[j] Ti 阅读全文
posted @ 2017-01-24 22:06 蒟蒻konjac 阅读 (276) 评论 (0) 编辑

[bzoj4517][SDOI2016]排列计数

摘要:题目大意 计算C(n,m) D(n m) 其中D(x)为错位排列 题目解答 没有什么好说的,注意细节。 代码 include const int P = 1e9+7; const int maxn = 1e7+1; define ll long long int D[maxn+10], fact[m 阅读全文
posted @ 2017-01-24 17:56 蒟蒻konjac 阅读 (41) 评论 (0) 编辑

[bzoj1951][SDOI2010]古代猪文

摘要:题目描述: 计算$G^{\sum_{i|n} C(n,i)} \% P$ 题目解答: 为叙述方便起见,我们令sigma()为W 显然W是一个非常大的数,如果暴力直接计算不是明智的选择。 我们这里使用费马小定理: 对于一个素数p: $$a^{p 1} = 1 | (a, p) = 1$$ 对于G^W, 阅读全文
posted @ 2017-01-24 16:53 蒟蒻konjac 阅读 (166) 评论 (0) 编辑

[bzoj1057][ZJOI2007]棋盘制作

摘要:本题有多种解法,我选择了单调栈进行解答。 首先进行一个巧妙的问题转换: 将所有i+j为奇数的格子反转, 这样,问题就转换成了求一个最大的0/1子矩阵。 先考虑一维的情况,h[i]表示以i为终点的最长连续0的长度,有h[i]=a[i]==0? h[i 1]+1:0,这样可以O(n)轻松求出。 拓展到高 阅读全文
posted @ 2017-01-22 20:50 蒟蒻konjac 阅读 (147) 评论 (0) 编辑

[bzoj1010][HNOI2008]玩具装箱TOY

摘要:一道经典题,题目描述略。 第一写斜率优化,好紧张啊~~~~ 首先就写了一个大暴力: 定义f[i]为已经分配了i个玩具时的最小费用。 方程容易写出: f[i] = f[j] + w[j][i]; 其中$w[j][i] = (sum_i sum_j + i (j+1) l ) ^ 2$ 明显地,这是一个 阅读全文
posted @ 2017-01-22 17:25 蒟蒻konjac 阅读 (69) 评论 (0) 编辑

[bzoj2326][HNOI2011]数学作业

摘要:本题是一个典型的使用矩阵优化的题。 本题的特殊之处在于:矩阵是会变化的,而不是固定的。 所以我们要分阶段搞,而不是一下子搞。 容易得出: f[i] = f[i 1] 10 ^ k + i; 其中k由i决定。 变形一下原式: f[i] = f[i 1] 10 ^ k + (i 1) + 1; 容易构建 阅读全文
posted @ 2017-01-21 21:13 蒟蒻konjac 阅读 (30) 评论 (0) 编辑

如何使用矩阵乘法加速动态规划——以[SDOI2009]HH去散步为例

摘要:题目描述 摘自 "BZOJ 1875" Description HH有个一成不变的习惯,喜欢饭后百步走。所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离。 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回。 又因为HH是个喜欢变化的人,所以他每天走过的路径都不完全一样,他 阅读全文
posted @ 2017-01-21 16:55 蒟蒻konjac 阅读 (472) 评论 (1) 编辑

[bzoj1060][zjoi2007]时态同步

摘要:一个很有意思的树上dp题。 贪心地注意到,对于更靠近根的边使用「技能」是更优的。 所以对于每一课子树而言,我们先使用技能统一「差值」,使得对于每一个节点,他的每一个子节点时间相同。 这样就出现了重叠子问题,引导我们使用递归(dp)。 具体地,我们定义f[i]为对于i,其子树中的节点到它的最长距离。 阅读全文
posted @ 2017-01-20 19:07 蒟蒻konjac 阅读 (86) 评论 (0) 编辑

[bzoj1046][HAOI2007]上升序列

摘要:一个有意思的题。 很显然,这是LIS问题的加强版。 对于每一个询问,我们从前到后检查每一个元素,如果f[i] =x那么输出,然后x 。如果x最终为零,那么说明有解。 证明: 首先,由于我们是从前考虑的每一个元素,所以保证了字典序最小。 其次,因为如果对于一个元素i|f[i] x,那么从i后面一定至少 阅读全文
posted @ 2017-01-20 16:54 蒟蒻konjac 阅读 (45) 评论 (0) 编辑
共 18 页: 首页 上一页 8 9 10 11 12 13 14 15 16 下一页 末页

统计