自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 HDU--2829--Lawrence--斜率优化做法

嗯,我是看别人的题解做,复述一下思路有助于强化记忆(* ̄m ̄)首先搞一个前缀和数组 sum[i] 你应该知道这是干嘛的,然后就是一个关键的 w 数组,w[i] 表示前i个数两两相乘的和,这是根据题意来的。然后咧,状态转移方程就是这样滴: dp[k][i] = min{dp[k-1][j]+val(j+1,i)|0<=j<i}val(j+1,i)表示[j+1,i]区间内的数字两两相乘

2013-08-23 22:13:07 581

原创 HDU -4571--Travel in Time

各种细节坑死人#include#include#include#include#include#include#includeusing namespace std;const int MAXN = 110;const int INF = 1<<28;struct node{ int c,sa; int node_id;}p[MAXN];int di

2013-08-22 11:56:47 566

原创 POJ--线段树成段更新--树状数组做法

在discuss里面看到有用树状数组做的,于是找了个做法http://kenby.iteye.com/blog/962159貌似和我线段树的时间差不多,都是1600ms 左右,但是人家就可以进1秒,大概是我代码写挫了吧#include#include#include#define lowbit(x) ((x)&(-x))using namespace std;typedef lo

2013-08-21 23:25:44 542

原创 Python 随机生成DAG(有向无环图)

给校队选拔赛出了道DAG上的背包问题,需要生成DAG数据。最开始使用的方法是先随机生成再判环,如果有环就重新生成。这种发放得到DAG的概率随着点数和边数的增加而急速降低,为了一个DAG要生成很多次,等很长时间。然后觉得这样的方法很stupid。。。听了好甜给的先生成拓扑序的构造方法,这样可以保证生成的图里面没有环。首先随机生成一个 1 到N 的permutation。这个permuta

2013-08-21 21:55:02 6796 8

原创 POJ -- 3468 --线段树成段更新

很久以前的题目再做一遍复习一下。要点:1)约定在任何时候 add_num 到达节点的时候就立即更新节点的 sum 值。2)每次更新节点回溯的时候记得维护节点的 sum 值。3)执行询问操作的时候,遇到 lazy 标记为1 的时候往下 Push_down,,同时记得第一点4)遇到符合要求的询问区间时,由于第一条的规定,直接返回 sum 值,而不必加上 区间长度*add_num

2013-08-21 21:24:19 631

原创 POJ--2441--Arrange the Bulls--状压DP-滚动数组优化

dp[i][j] 表示前 i 头牛放成 j 状态的数量然后就可以状压DP 了,提前看了一discuss,说要用滚动数组,想想也是,加上数组优化后空间用了9M,不用滚动数组的话使用空间就是 9*10 = 90M ,题目只给了64M的空间。刚提交了一下不优化空间的,还真MLE了。。。。。。。。。我是不是很无聊。。。亲自验证一下而已-_-##include#include#includeu

2013-08-12 10:43:35 564

原创 SGU-131--Hardwood floor--状态压缩DP

貌似状压题目放方块类型的已经木问题了。。。#include#include#include#include#include#include#include#includeusing namespace std;typedef long long LL;const int MAXN =20;int n,m;LL dp[MAXN][1<<10];int sc[MAXN]

2013-08-11 21:32:58 751

原创 POJ--3017--Cut the Sequence--DP优化

题目大意:求一个数字序列的划分,每一个划分块的和不大于M,求出所有划分块最大值的最小值。DP方程:dp[i] = min{dp[j]+max(a[j+1],a[i])}用一个单调队列存储所有可行的决策,这个单调队列里面存储条件是队列范围的所有元素和不大于M,所以队列元素的个数就是每个点的决策个数。更详细的题解可以看一下别人的blog#include#include#includ

2013-08-11 14:49:10 793

原创 POJ--1185--炮兵阵地--状态压缩DP

话说过了很久,又把这个题目写了一遍,这次代码精简多了,话说粗心写错了两个地方,调试了很久。。。感觉很冤枉,论写代码时思维的严密性与细心#include#include#includeusing namespace std;const int MAX_N = 110;const int MAX_M = 15;const int MAX_ST = 100;int sc

2013-08-10 11:13:12 495

原创 HDU --4283--You Are the One--区间DP

想好出栈入栈的情况,别多想,别少想,然后就可以DP了假设一段区间[s,e],中间点是m,那么m把区间分成了两部分,[s,m]和[m+1,e],设dp[i][j]为区间[i,j]最小吊丝和,sum[i][j]为区间[i,j]的每个男生的吊丝值的和.那么,[s,m],和[m+1,e]两段区间就可以有两个决策:一:区间一的所有人先上舞台。二:区间二的所有人先上舞台。如果区间二的人先上

2013-08-09 10:28:30 541

原创 UVA--10859--Placing Lampposts--DP

求两个变量v1和v2在先满足v1最小的情况下,再求v2的最优值,可设  x = M*v1+v2,,其中M是一个很大的值,这样求出的x的最优值就是题目所求,因为在这个式子里面v1起到决定性的作用参考了一下书上的代码,树上的DP,可以一边dfs一个DP#include#include#include#include#include#include#include#include

2013-08-08 11:54:26 557

原创 HDU--4521--带间隔的LIS

求最长的LIS,但是LIS的任意两个两个元素要在原序列里面间隔至少K个位置。计算了每个元素的d值(也就是长度为I 的最小元素值),延缓K个时间再加入到队列里面去。#include#include#include#include#include#include#include#includeusing namespace std;const int INF = 9999

2013-08-07 18:10:46 651

原创 HDU--3415--Max Sum of Max-K-sub-sequence--单调队列

题目大意:有一个数字序列,可循环,求出长度不超过K的最大连续数字和单调队列必杀之。。。另外看到discuess里面有用线段树做的,我想用线段树的话一定很蛋疼贴上代码回味一下美味的单调队列#include#include#include#include#include#include#include#includeusing namespace std;const in

2013-08-07 16:16:53 482

原创 两个单调队列代码

好久没写题解了,可耻啊可耻POJ 2823 点击打开链接FZOJ 1894 点击打开链接POJ 2823#include#include#include#include#include#include#include#includeusing namespace std;const int MAXN = 1000020;struct node{

2013-08-07 12:32:06 521

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除