- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 矩阵乘法在递推问题中的简单应用
这里我们以Fib问题为例。Fib数列是一个著名的递推数列,其规律可表示为f[i]=f[i-1]+f[i-2];我们要做的事,就是求出fib数列的第n项。由于这个数字可能很大,因此只需要输出它对10007取模的结果。 这里我们约定:对于80%的数据,n<10^8。对于100%的数据,n<10^10。几乎不需要经过多少思考,我们就能写出一个80分版本:#include <cstdio> using n
2016-10-29 19:29:30 462
原创 Dijkstra最短路径算法的优化
在传统的Dijkstra算法中,我们不难发现,大量的时间被用于遍历d[]数组。 因此,我们可以通过一个小顶堆来替代这个遍历过程。优化后的算法复杂度为O(v*lgn)。#include <cstdio> #include <cstring> #include <queue> using namespace std; #define MAXN 10005 #define MAXM 500005 #de
2016-10-06 13:31:56 1221
原创 动态规划基础题:低价购买(最长下降子序列)
题目描述“低价购买”这条建议是在奶牛股票市场取得成功的一半规则。要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买;再低价购买”。每次你购买一支股票,你必须用低于你上次购买它的价格购买它。买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数。你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票。每次购买都必须遵循“低价
2016-10-03 09:48:10 550
原创 动态规划基础题:机器分配
题目描述总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。输入输出格式输入格式: 第一行有两个数,第一个数是分公司数N,第二个数是设备台数M。接下来是一个N*M的矩阵,表明了第 I个公司分配 J台
2016-10-03 08:48:43 1740
原创 数据结构:从堆到“漏斗”
问题引入:黑匣子Black Box是一种原始的数据库。它可以储存一个整数数组,还有一个特别的变量i。最开始的时候Black Box是空的.而i等于0。这个Black Box要处理一串命令。 命令只有两种: ADD(x):把x元素放进BlackBox; GET:i加1,然后输出Blackhox中第i小的数。 记住:第i小的数,就是Black Box里的数的按从小到大的顺序排序后的第i个元素。
2016-10-02 22:14:24 460
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人