- 博客(10)
- 收藏
- 关注
原创 Uva1629:Cake slicing
题目来源:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51190解析:明显的是,各个不重叠的子矩阵切法之间没有相互关联。即:一个子矩阵的切总长最小,当且仅当它在“切一刀”后的所有状态中取最小值。不难想到这样的状态:设d[x1][y1]x2][y2]为子矩阵[x1~x2][y1~y2]切成每个蛋糕上一个桃的最小切割总长。则可以
2016-01-16 12:19:01
562
原创 前缀和问题
一维前缀和这个优化主要是用来在O(1)时间内求出一个序列a中,a[i]+a[i+1]+……+a[j]的和。具体原理十分简单:用sum[i]表示(a[1]+a[2]+……+a[i]),其中sum[0]=0,则(a[i]+a[i+1]+……+a[j])即等于sum[j]-sum[i-1]。二维前缀和同理,有一维就有二维。对于一个矩阵a,我们也能在O(1)时间内求出子矩阵[x1~x2][y1~y2]的和。
2016-01-16 11:18:53
14513
原创 动态规划:01背包问题的浅谈
经典01背包问题:(1)定义:你有n种物品,每种只有一个,每个物品有一个价值c和重量w。有一个背包,最多能装总重量为w的物品,求能装进背包物品的最价值最大值。(2)解析:首先不妨想另外一个问题:如果把物品换成“沙子”一类的东西,即可以取任意实数范围内的个数呢?不难想到一定要取“单位价值”最大的东西,即c/w最大,因为最后总能填满背包。然而对于整数个范围的个数,这样的贪心方法是否适用呢?很遗憾,答案是
2015-12-19 12:08:13
825
原创 分治:区间和问题
问题:现有一个含n个整数(可含负数)的序列,求x,y使a[x]+a[x+1]+……+a[y]最大.算法:第一级:枚举首先想到的就是暴力枚举:从大到小枚举x,y,计算从a[x]加到a[y]的和,与当前答案比较。代码如下:#include <cstdio>const int maxn=1000;int main(){ int n,ans,a[maxn]; scanf("%d",&n); fo
2015-12-16 00:02:04
637
原创 UVa12118:Inspector's Dilemma
题目大意:有一个有V(V<=1000)个节点的图,每两个点之间都有边连接,所有边长为T。先给出E条指定的边,找出一条最短路(起点终点随意),使这条路径经过所有给定的边。分析:首先想一想,要是所有的边都没有公共节点该多好。那么答案就是(E-1)*T了。可惜并不是这样,那么,我们就可以把几个有公共端点的边看成一个子图。对于一个子图,它要有一条边连接进来,再有一条边连出去(入口出口除外)。所以就想到
2015-12-12 00:11:06
767
2
原创 二分图:CodeVs 2776 最大匹配
Codevs 2776 : 寻找代表元题目描述 Description广州二中苏元实验学校一共有n个社团,分别用1到n编号。 广州二中苏元实验学校一共有m个人,分别用1到m编号。每个人可以参加一个或多个社团,也可以不参加任何社团。 每个社团都需要选一个代表。谦哥希望更多的人能够成为代表。输入描述 Input Description 第一行输入两个数n和m。 以下n行每行若干个数,这些数都是不
2015-10-25 18:13:04
420
原创 堆的应用:地鼠游戏
地鼠游戏题目描述 Description王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于经常总结、完善自己的学习方法,所以他总能在每次考试中得到优异的分数,这一切很大程度上是由于他是一个追求效率的人。但王钢也是一个喜欢玩的人,平时在学校学习他努力克制自己玩,可在星期天他却会抽一定的时间让自己玩一下,他的爸爸妈妈也比较信任他的学习能力和学习习惯,
2015-09-27 16:23:46
1038
原创 NOIP2004普及组:合并果子
1063 合并果子 2004年NOIP全国联赛普及组题目描述 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要
2015-09-24 23:44:13
519
原创 NOIP2006提高组:作业调度方案
1156 作业调度方案 2006年NOIP全国联赛提高组题目描述 Description我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成。每个工件的每道工序都有指定的加工时间。每个工件的每个工序称为一个操作,我们用记号j-k表示一个操作,其中j为1到n中的某个数字,为工件号;k为1到m中的某个数字,为工序号,例如2-4表示第2个工件第4道工序的这个操作。
2015-09-22 00:24:11
1748
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人