[置顶] Blog Explanation

摘要: 有疑问或blog中说明错误的欢迎评论或联系QQ:30056882,邮箱BLADEVIL@outlook.com。本人水平不高,欢迎讨论问题。 blog中所有随笔均为原创,转载请注明来源。 (已退役。) 阅读全文
posted @ 2014-01-08 13:04 BLADEVIL 阅读(417) 评论(3) 推荐(1) 编辑

bzoj 3172 后缀数组|AC自动机

摘要: 后缀数组或者AC自动机都可以,模板题。/************************************************************** Problem: 3172 User: BLADEVIL Language: C++ Result: Ac... 阅读全文
posted @ 2014-05-12 20:20 BLADEVIL 阅读(833) 评论(0) 推荐(0) 编辑

【CF刷题】14-05-12

摘要: Round 236 div.1 A:只需要每个点连接所有比他大的点,知道边用完为止。 //By BLADEVIL#include #include #define maxn 25;using namespace std;int main() { int task; scanf("%... 阅读全文
posted @ 2014-05-12 20:11 BLADEVIL 阅读(701) 评论(0) 推荐(0) 编辑

bzoj 2815 灾难

摘要: 首先假设我们定义x灭绝后y会灭绝,那么离y最近的x就为y的父亲节点,那么如果我们可以求出每个节点的父亲节点,我们就得到了一棵树,然后每个节点的灾难值就是子树的大小-1。 我们将出度数为0的节点的父亲节点定义为0,那么我们可以发现,某个点的父亲节点就是他所有儿子的父亲节点的lca。 备注:lc... 阅读全文
posted @ 2014-05-12 19:45 BLADEVIL 阅读(658) 评论(0) 推荐(0) 编辑

bzoj 1493 暴力

摘要: 我们可以枚举每个点,然后求出这个点到其余点最小消耗的代价,求出比t小的且距离最大的更新答案。/************************************************************** Problem: 1295 User: BLADEVIL ... 阅读全文
posted @ 2014-05-09 12:25 BLADEVIL 阅读(498) 评论(0) 推荐(0) 编辑

bzoj 1458 网络流

摘要: 我们可以知道每行最多可以有多少个格子不用建点,设为x[i],每列同理设为y[i],那么我们连接(source,i,x[i]),(i,sink,y[i])表示我们将一个格子不建点,那么(i,j,flag[i][j]),当i,j这个格子可以建点的时候连边表示我们不在这个格子建点,那么n*m-k-最大... 阅读全文
posted @ 2014-05-09 07:38 BLADEVIL 阅读(522) 评论(0) 推荐(0) 编辑

bzoj 1193 贪心

摘要: 如果两点的曼哈顿距离在一定范围内时我们直接暴力搜索就可以得到答案,那么开始贪心的跳,判断两点横纵坐标的差值,差值大的方向条2,小的条1,不断做,直到曼哈顿距离较小时可以暴力求解。 备注:开始想的是确定一点周围跳到这个点的答案,然后再枚举周围的点,判断这个点和另一个点的曼哈顿距离,如果能被3整除... 阅读全文
posted @ 2014-05-08 18:16 BLADEVIL 阅读(613) 评论(0) 推荐(0) 编辑

bzoj 1222 DP

摘要: 用w[i]表示在A中用了i的时间时在B中最少用多长时间,然后转移就可以了。 备注:这个边界不好定义,所以可以每次用一个cur来存储最优值,然后对w[i]赋值就可以了。/************************************************************** ... 阅读全文
posted @ 2014-05-08 10:59 BLADEVIL 阅读(455) 评论(0) 推荐(0) 编辑

bzoj 3437 斜率优化DP

摘要: 写题解之前首先要感谢妹子。 比较容易的斜率DP,设sum[i]=Σb[j],sum_[i]=Σb[j]*j,w[i]为第i个建立,前i个的代价。 那么就可以转移了。/************************************************************** ... 阅读全文
posted @ 2014-05-08 09:56 BLADEVIL 阅读(499) 评论(0) 推荐(1) 编辑

bzoj 1491 floyd

摘要: 我们用w[i][j]表示i到j的最短路的数量,dis[i][j]表示i到j的最短路,那么我们在floyd的时候,如果dis[i][k]+dis[k][j]==dis[i][j],根据乘法原理我们就w[i][j]+=w[i][k]*w[k][j],小于的时候我们就重新对w[i][j]赋值。 因为... 阅读全文
posted @ 2014-05-07 19:06 BLADEVIL 阅读(461) 评论(0) 推荐(0) 编辑

bzoj 1791 DP

摘要: 首先对于一棵树我们可以tree_dp来解决这个问题,那么对于环上每个点为根的树我们可以求出这个树的一端为根的最长链,并且在tree_dp的过程中更新答案。那么我们对于环,从某个点断开,破环为链,然后再用DP来解决这个问题。 备注:很久之前的一道题,刚转的c++,然后T了,也懒得改了。/****... 阅读全文
posted @ 2014-05-07 16:44 BLADEVIL 阅读(437) 评论(0) 推荐(0) 编辑