
Dp
Le_ballon_rouge
我是最讨厌、最粗鲁、最无知的人、彻头彻尾的讨厌鬼,任何人遇到我都是一种不幸。我轻视美德、无视美、不了解幸福。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BZOJ1068
传送门:BZOJ1068比较微妙的区间Dp。令f(i,j)表示压缩[i,j]段时最少的字符数,我们发现无法转移,于是将[i,j]中有无M纳入状态:f(i,j,k),k属于[0,1],表示区间中有无M。我们总是假定[i,j]前有一个M或是0。然后方程就比较显然了。k=1 f(i,j,k)=min{f(i,i’,1)+f(i’+1,j,1)+1} //表示分两段压缩k=1或0 f(i,j,k)=m原创 2015-07-26 15:58:25 · 852 阅读 · 0 评论 -
BZOJ1047
传送门:BZOJ1047我们用f(i,j)表示第j列上区间[max(i-n+1,1),i]的最小值。 这一步的转移可以用单调队列来完成。 然后,我们用g(i,j)来表示以点(i,j)为右下角的边长为n的正方形中元素的最小值。 转移是:g(i,j)=min:f(i,j’),j’∈[max(j-n+1,1),j],于是它也可以用一个单调队列来优化。 注意细节。代码上的小细节见下。#include原创 2015-08-19 21:07:04 · 1277 阅读 · 0 评论 -
BZOJ1046
传送门:BZOJ1046反着构造f(i),表示以i结尾的最长的下降子序列。这就等效于以i开头的最长的上升子序列。然后枚举即可。#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>using namespace std;cons原创 2015-08-19 19:26:05 · 974 阅读 · 0 评论 -
BZOJ1044
传送门:BZOJ1044第一问:傻逼二分,设答案为ans,二分贪心即可。第二问:f(i,j)f(i,j)表示第i刀切在第j处的合法方案数 转移是f(i,j)=∑len[k,j]≤ansj−1f(i−1,k)f(i,j)=\sum_{len[k,j] \le ans}^{j-1} f(i-1,k) 显然这个Dp空间是O(nm)O(nm)的,时间是O(nm2)O(nm^{2})的,无法承受。 首先原创 2015-08-19 09:45:54 · 1159 阅读 · 1 评论 -
BZOJ1037
传送门:BZOJ1037令f(i,j,k,l)表示区间[1,i]中有j个男生,包含在[1,i]中的区间中最多的男女生差距为k,最小的为l的方案数,转移则有f(i,j,k,l)表示区间[1,i]中有j个男生,包含在[1,i]中的区间中最多的男女生差距为k,最小的为l的方案数,转移则有 f(i+1,j,max(k−1,0),l+1)+=f(i,j,k,l)f(i+1,j,max(k-1,0),l+1)+原创 2015-08-18 16:52:04 · 1131 阅读 · 0 评论 -
BZOJ1009
传送门:BZOJ1009KMP构造转移矩阵,矩阵加速DP。 以后题解都会简单一些。/************************************************************** Problem: 1009 User: Jerusalem Language: C++ Result: Accepted Time:56 ms原创 2015-08-17 20:40:31 · 1496 阅读 · 0 评论 -
BZOJ1003
/* CODEVS天梯也做得差不多了,现在做一些有意义的题目。*/Description物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是一件十原创 2015-07-24 20:14:19 · 838 阅读 · 0 评论 -
BZOJ1060
传送门:BZOJ1060有些意思的树形DP。我只想到了用f(i,j)f(i,j)表示以i为根的子树的权值之和为j的最小花费,但我没有想到这个j居然是可以贪心从而藏进去的……注意到有以下事实成立:在靠近根的节点使用技能更优秀。于是贪心即可,我们维护每个结点与其子树中叶子结点的最大距离,然后枚举它的子结点,加上它的最大距离与它子结点的最大距离与该边权值之差即可。比较坑的是,这题标程统计最大距离时忘开lo原创 2015-08-27 20:53:16 · 823 阅读 · 0 评论 -
BZOJ1017
传送门:BZOJ1017比较复杂的树形Dp。 复杂的是这道题Dp方程的定义:fi,j,kf_{i,j,k}表示以节点i为根的子树,向i的父节点提供j个物品,在子树上总花费k元能得到的最大力量值。转移时我们先不考虑以i为根的子树合成了n个i却未完全上交的情况。i为树叶时,Dp是显然的,如果i不为树叶,则转换是显然的。但在这转移中,假设我们给子节点j′j'分配了k′k'元,则我们要考虑其它所有的情况。原创 2015-08-13 18:18:04 · 1407 阅读 · 0 评论 -
BZOJ1057
传送门:BZOJ1057大水题(虽然我WA了status的一页)不知道那些搞奇偶性的什么心态……直接悬线法即可。不要忘记判断当前点与上方点有无关系代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>usin原创 2015-08-27 15:48:35 · 1026 阅读 · 0 评论 -
BZOJ1055
传送门:BZOJ1055傻逼题,然而我居然连状态定义都没有想出来。记f(i,j,k)表示[i,j]的字符能否由k字符扩展来,转移就是怎么暴力怎么来f(i,j,k)表示[i,j]的字符能否由k字符扩展来,转移就是怎么暴力怎么来 我觉得我要摆脱题解依赖了……必须摆脱!代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#inc原创 2015-08-26 19:27:43 · 945 阅读 · 0 评论 -
BZOJ1260
传送门:BZOJ1260傻逼题。记f(i,j)表示把区间[i,j]染色最小操作次数,f(i,j)表示把区间[i,j]染色最小操作次数,则转移是f(i,j)={s[i]=s[j],minf(i+1,j),f(i,j−1),f(i+1,j−1)+1otherwise ,minf(i,k)+f(k+1,j),k∈[i,j−1]f(i,j)= \{^{s[i]=s[j],min{f(i+1,j),f(i,j原创 2015-08-26 10:23:31 · 1451 阅读 · 0 评论 -
BZOJ1048
传送门:BZOJ1048 记f(i,j,k,l,n)为以点(i,j)为左上角,点(k,l)为右下角,需要分成n块的矩形能得到的最少的∑q=1n(Si−μ)2\sum_{q=1}^{n} (S_i-\mu)^2然后就是傻逼记搜。AC之后的吐槽:把标准差求错了卧槽。代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#incl原创 2015-08-20 20:14:35 · 973 阅读 · 0 评论